本页介绍了 Google Distributed Cloud Connected 的网络功能,包括子网和负载均衡。
启用 Distributed Cloud Edge Network API
在连接的 Distributed Cloud 部署中配置网络之前,您必须启用 Distributed Cloud Edge Network API。为此,请完成本部分中的步骤。默认情况下,Distributed Cloud connected 服务器在出厂时已启用 Distributed Cloud Edge Network API。
控制台
在 Google Cloud 控制台中,前往 Distributed Cloud Edge Network API 页面。
点击启用。
gcloud
使用以下命令:
gcloud services enable edgenetwork.googleapis.com
在 Distributed Cloud connected 上配置网络
本部分介绍如何在已连接的 Distributed Cloud 部署中配置网络组件。
以下限制适用于 Distributed Cloud 连接的服务器:
- 您只能配置子网,并且
- 子网仅支持 VLAN ID;不支持基于 CIDR 的子网。
Distributed Cloud Connected 的典型网络配置包括以下步骤:
可选:根据需要,初始化目标可用区的网络配置。
创建网络。
在网络中创建一个或多个子网。
测试配置。
将盒子连接到网络。
初始化 Distributed Cloud 可用区的网络配置
在本地安装 Distributed Cloud connected 硬件后,您必须立即初始化 Distributed Cloud connected 可用区的网络配置。初始化可用区的网络配置是一次性操作。
初始化可用区的网络配置会创建一个名为 default 的默认网络。此配置可为您的 Distributed Cloud connected 部署提供与本地网络的基本上行链路连接。
如需查看相关说明,请参阅初始化可用区的网络配置。
创建网络
如需创建新网络,请按照创建网络中的说明操作。 您还必须在网络中创建至少一个子网,以允许 Distributed Cloud 连接的节点连接到该网络。
创建一个或多个子网
如需创建子网,请按照创建子网中的说明操作。 您必须在网络中创建至少一个子网,以允许节点访问该网络。您创建的每个子网对应的 VLAN 会自动提供给相应可用区中的所有节点。
测试配置
如需测试您创建的网络组件的配置,请执行以下操作:
将盒子连接到网络
如需将 Pod 连接到网络并配置高级网络功能,请按照网络功能运算符中的说明操作。 此功能不适用于虚拟机工作负载。
(可选)配置集群网络隔离
Distributed Cloud Connected 支持集群网络隔离。分配给网络隔离集群的节点无法与同一 Distributed Cloud 连接区域中的任何其他节点通信。如需启用集群网络隔离,请在创建或修改集群时使用 --enable-cluster-isolation 标志。如需了解详情,请参阅创建和管理集群。
(可选)配置孤岛模式
Distributed Cloud Connected 支持其虚拟网络子系统的孤岛模式。在孤岛模式下,您可以在 Pod 的辅助网络接口上指定隔离的 IP 地址范围。此隔离地址范围独立于主网络接口 VLAN 的地址范围。配置为孤岛模式的 Pod 仅分配来自此隔离的“孤岛”地址范围的地址。如需了解详情,请参阅平面模式与孤岛模式网络模型。
您为孤岛模式指定的隔离 IP 地址范围不得与以下 IP 地址范围冲突:
- 集群中配置的任何网络的主要 VLAN CIDR
Network资源中networking.gke.io/gdce-lb-service-vip-cidrs注解中指定的负载平衡器虚拟 IP 地址范围- 集群中任何其他网络的孤岛模式所用的 IP 地址范围
配置孤岛模式
如需在 Pod 级别配置孤岛模式,请将 networking.gke.io/gdce-pod-cidr 注解添加到相应的 Network 自定义资源。将注解值设置为目标隔离 IP 地址范围,并将修改后的 Network 资源应用到集群。例如:
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
您还必须设置以下参数:
type必须设置为L3。IPAMMode必须设置为Internal。
例如:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
name: my-network
annotations:
# Enable island mode and specify the isolated address range.
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
# Specify the VLAN ID for this secondary network.
networking.gke.io/gdce-vlan-id: "561"
# Specify the CIDR block for load balancer services on this network.
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
spec:
# Network type must be L3 for island mode.
type: L3
# IPAMMode must be Internal for island mode.
IPAMMode: Internal
nodeInterfaceMatcher:
interfaceName: gdcenet0.561 # The name for the target network interface.
gateway4: 172.20.5.177 # Gateway IP address; must be unique in this CR.
externalDHCP4: false
dnsConfig:
nameservers:
- 8.8.8.8
如需验证是否已启用孤岛模式,请执行以下操作:
创建测试 Pod 并将其应用到集群。例如:
apiVersion: v1 kind: Pod metadata: name: island-pod-tester annotations: networking.gke.io/interfaces: '[{"interfaceName":"eth1","network":"test-network-vlan561"}]' networking.gke.io/default-interface: "eth1" spec: containers: - name: sample-container image: busybox command: ["/bin/sh", "-c", "sleep 3600"]获取 Pod 的 IP 地址:
kubectl get pod island-pod-tester -o wide该命令会返回 Pod 的 IP 地址,该地址位于您指定的隔离地址范围内。
使用 ClusterIP 服务配置隔离模式
如需使用 ClusterIP 服务配置孤岛模式,请完成上一部分中的步骤,然后向 Network 资源添加 networking.gke.io/gke-gateway-clusterip-cidr 注解,并根据您的业务需求设置其值。Network 资源中指定的地址范围不得重叠。例如:
apiVersion: networking.gke.io/v1
kind: Network
metadata:
annotations:
networking.gke.io/gdce-lb-service-vip-cidrs: 172.20.5.180/30
networking.gke.io/gdce-pod-cidr: 172.15.10.32/27
networking.gke.io/gdce-vlan-id: "561"
networking.gke.io/gke-gateway-clusterip-cidr: 10.20.1.0/28
name: test-network-vlan561
spec:
IPAMMode: Internal
dnsConfig:
nameservers:
- 8.8.8.8
externalDHCP4: false
gateway4: 172.20.5.177
nodeInterfaceMatcher:
interfaceName: gdcenet0.561
type: L3
负载均衡
Distributed Cloud 随附基于 MetalLB(第 2 层模式)的捆绑式网络负载均衡解决方案。您可以使用此解决方案,通过虚拟 IP 地址 (VIP) 将 Distributed Cloud 区域中运行的服务公开给外部世界,具体操作如下:
- 您的网络管理员在订购 Distributed Cloud 时规划网络拓扑并指定所需的虚拟 IPv4 地址子网。Google 会在交付之前相应地配置 Distributed Cloud 硬件。请注意以下几点:
- 此 VIP 子网在您的 Distributed Cloud 可用区内运行的所有 Kubernetes 集群之间共享。
- 子网中的第一个(网络 ID)、第二个(默认网关)和最后一个(广播地址)地址是为核心系统功能预留的。请勿将这些地址分配给 MetalLB 配置的地址池。
- 每个集群都必须使用配置的 VIP 子网内的单独 VIP 范围。
- 在 Distributed Cloud 区域中创建集群时,集群管理员会使用 CIDR 表示法指定 Pod 和 ClusterIP 服务地址池。您的网络管理员会向集群管理员提供相应的
LoadBalancerVIP 子网。 创建集群后,集群管理员会配置相应的 VIP 池。您必须在创建集群时使用
--external-lb-address-pools标志指定 VIP 池。该标志接受采用以下格式的 YAML 或 JSON 载荷文件:addressPools: - name: foo addresses: - 10.2.0.212-10.2.0.221 - fd12::4:101-fd12::4:110 avoid_buggy_ips: true manual_assign: false - name: bar addresses: - 10.2.0.202-10.2.0.203 - fd12::4:101-fd12::4:102 avoid_buggy_ips: true manual_assign: false如需指定 VIP 地址池,请在载荷中提供以下信息:
name:用于唯一标识相应 VIP 地址池的描述性名称。addresses:要纳入此地址池中的 IPv4 地址、地址范围和子网的列表。avoid_buggy_ips:排除以.0或.255结尾的 IP 地址。manual_assign:让您可以在目标LoadBalancer服务的配置中手动分配此池中的地址,而不是让 MetalLB 控制器自动分配。
如需详细了解如何配置 VIP 地址池,请参阅 MetalLB 文档中的指定地址池。
集群管理员创建相应的 Kubernetes
LoadBalancer服务。
单个节点池中的 Distributed Cloud 节点共享一个公共的第 2 层网域,因此也是 MetalLB 负载均衡器节点。
ClusterDNS 项资源
Distributed Cloud Connected 支持使用 spec.domains 部分配置特定网域的上游域名服务器的 Google Distributed Cloud ClusterDNS 资源。如需详细了解如何配置此资源,请参阅 spec.domains。