本页面介绍了 Google Distributed Cloud connected 的网络功能,包括子网、BGP 对等互连会话和负载均衡。
本页面上的过程仅适用于 Distributed Cloud connected 机架,但负载均衡除外,它适用于 Distributed Cloud connected 机架和 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 connected 部署上配置网络组件。
以下限制适用于 Distributed Cloud connected 服务器:
- 您只能配置子网,并且
- 子网仅支持 VLAN ID;不支持基于 CIDR 的子网。
Distributed Cloud connected 的典型网络配置包含以下步骤:
可选:根据需要初始化目标区域的网络配置。
创建网络。
在网络中创建一个或多个子网。
使用相应的互连连接与 PE 路由器建立北向 BGP 对等互连会话。
使用相应的子网与运行工作负载的 Pod 建立南向 BGP 对等互连会话。
可选:建立环回 BGP 对等互连会话以实现高可用性。
测试配置。
将 Pod 连接到网络。
可选:初始化 Distributed Cloud 区域的网络配置
在以下情况下,您必须初始化 Distributed Cloud connected 区域的网络配置:
- 在您的本地安装 Distributed Cloud connected 硬件后立即执行此操作。
- 您已在现有 Distributed Cloud connected 部署上升级到 Distributed Cloud connected 1.3.0 版或更高版本,但未参与 Distributed Cloud Edge Network API 的专用预览版。
初始化区域的网络配置会创建一个名为 default 的默认路由器和一个名为 default 的默认网络。它还会通过创建相应的互连连接,将 default 路由器配置为与您在订购 Distributed Cloud connected 硬件时请求的所有互连建立对等互连。此配置为您的 Distributed Cloud connected 部署提供与本地网络的基本上行链路连接。
初始化区域的网络配置是一次性过程。如需查看 完整说明,请参阅 初始化区域的网络配置。
创建网络
如需创建新网络,请按照 创建网络中的说明操作。 您还必须在网络中创建至少一个子网,以允许 Distributed Cloud connected 节点连接到网络。
创建一个或多个子网
如需创建子网,请按照 创建子网中的说明操作。 您必须在网络中创建至少一个子网,以允许节点访问网络。您创建的每个子网对应的 VLAN 会自动提供给该区域中的所有节点。
对于 Distributed Cloud connected 服务器,您只能使用 VLAN ID 配置子网。不支持基于 CIDR 的子网。
建立北向 BGP 对等互连会话
创建网络及其对应的子网时,它们是 Distributed Cloud connected 区域的本地网络。如需启用出站连接,您必须在网络与对等互连边缘路由器之间建立至少一个北向 BGP 对等互连会话。
如需建立北向 BGP 对等互连会话,请执行以下操作:
列出您所在区域中可用的互连 然后为此对等互连会话选择目标互连。
在所选互连上 创建一个或多个互连连接。互连连接会将您在下一步中创建的路由器与所选互连相关联。
创建路由器。此路由器使用您在上一步中创建的互连连接在互连与网络之间路由流量。
为此过程前面创建的每个互连连接向路由器添加一个接口。对于每个接口,请使用 Distributed Cloud connected 机架中相应架顶 (ToR) 交换机的 IP 地址。如需了解相关说明,请参阅 建立北向对等互连会话。
为在上一步中在路由器上创建的每个接口添加对等互连。
建立南向 BGP 对等互连会话
如需启用从本地网络到工作负载的入站连接,您必须在对等互连边缘路由器与 Pod 所属的子网之间建立一个或多个南向 BGP 对等互连会话。每个子网的网关 IP 地址是 Distributed Cloud connected 机架中相应 ToR 交换机的 IP 地址。
如需建立南向 BGP 对等互连会话,请执行以下操作:
为要预配入站连接的每个子网向目标网络中的路由器添加一个接口。如需了解相关说明,请参阅 建立南向对等互连会话。
可选:建立环回 BGP 对等互连会话
如需在工作负载与本地网络之间启用高可用性连接,您可以在目标 Pod 与 Distributed Cloud connected 机架中的两个 ToR 交换机之间建立环回 BGP 对等互连会话。环回对等互连会话会为 Pod 建立两个独立的对等互连会话,每个 ToR 交换机一个。
如需建立环回 BGP 对等互连会话,请执行以下操作:
向目标网络中的路由器添加环回接口。如需了解相关说明,请参阅 建立环回对等互连会话。
添加对等互连为 环回接口。
测试配置
如需测试您创建的网络组件的配置,请执行以下操作:
将 Pod 连接到网络
如需将 Pod 连接到网络并配置高级网络功能, 请按照 网络功能运算符中的说明操作。
负载均衡
Distributed Cloud 附带基于 MetalLB 的捆绑式网络负载 均衡解决方案,该解决方案采用第 2 层模式。 您可以使用此解决方案,通过使用虚拟 IP 地址 (VIP) 将在 Distributed Cloud 区域中运行的服务公开给外部世界,如下所示:
- 您的网络管理员在订购 Distributed Cloud 时规划网络拓扑并指定所需的虚拟 IPv4 地址子网。Google 会在交付前相应地配置您的 Distributed Cloud 硬件。
请注意以下事项:
- 此 VIP 子网在 Distributed Cloud 区域中运行的所有 Kubernetes 集群之间共享。
- 系统会通过 Distributed Cloud 区域与本地网络之间的 BGP 会话通告所请求的 VIP 子网的路由。
- 子网中的第一个(网络 ID)、第二个(默认网关)和最后一个(广播地址)地址是为核心系统功能预留的。请勿将这些地址分配给 MetalLB 配置的地址池。
- 每个集群都必须使用单独的 VIP 范围,该范围属于配置的 VIP 子网。
- 在 Distributed Cloud 区域中创建集群时,集群管理员使用 CIDR 表示法指定 Pod 和 ClusterIP 服务地址池。您的网络管理员会向集群管理员提供相应的
LoadBalancerVIP 子网。 创建集群后,集群管理员会配置相应的 VIP 池。对于远程控制平面集群,您必须使用
kubectl edit或kubectl replace命令修改metallb-system命名空间中的metallb-configConfigMap。请勿使用kubectl apply命令,因为如果您这样做,Distributed Cloud 会覆盖您的更改。以下示例说明了此类配置:
# metallb-config.yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: metallb-config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.2-192.168.1.254对于本地控制平面集群,您必须在创建集群时使用
--external-lb-ipv4-address-pools标志指定 VIP 池。如需了解详情,请参阅 生存模式。集群管理员会创建相应的 Kubernetes
LoadBalancer服务。
单个节点池中的 Distributed Cloud 节点共享一个通用第 2 层网域,因此也是 MetalLB 负载均衡器节点。 在 Google Cloud 上运行的 Distributed Cloud 控制平面节点不能充当负载均衡器节点。
Distributed Cloud Ingress
除了负载均衡之外,Distributed Cloud connected 还支持 Kubernetes Ingress 资源。Kubernetes Ingress 资源控制流向在 Distributed Cloud connected 集群上运行的 Kubernetes 服务的 HTTP(S) 流量。以下示例说明了典型的 Ingress 资源:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /foo
pathType: Prefix
配置后,网络流量会流经 istio-ingress 服务,该服务默认分配有 MetalLB 配置中指定的 VIP 池中的随机 IP 地址。您可以使用 istio-ingress 服务定义中的 loadBalancerIP 字段,从 MetalLB 配置中选择特定 IP 地址或虚拟 IP 地址。例如:
apiVersion: v1
kind: Service
metadata:
labels:
istio: ingress-gke-system
release: istio
name: istio-ingress
namespace: gke-system
spec:
loadBalancerIP: <targetLoadBalancerIPaddress>
此功能在 Distributed Cloud connected 服务器上不可用。
停用默认 Distributed Cloud Ingress 资源
默认情况下,当您创建 Distributed Cloud connected 集群时,Distributed Cloud 会自动为该集群配置 istio-ingress 服务。您可以选择创建不含 istio-ingress 服务的 Distributed Cloud connected 集群。为此,请完成以下步骤:
gcloud
创建一个名为
SystemsAddonConfig.yaml的 YAML 配置文件,其中包含以下内容:systemAddonsConfig: ingress: disabled: true
在集群创建命令中使用
--system-addons-config标志传递SystemsAddonConfig.yaml文件。您必须使用gcloud alpha版本才能使用此功能。例如:gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \ --system-addons-config=SystemsAddonConfig.yaml如需详细了解如何创建 Distributed Cloud 集群,请参阅 创建集群。
API
将以下 JSON 内容添加到集群创建请求中的 JSON 载荷:
"systemAddonConfig" { "ingress" { "disabled": true } }按照 创建集群中的说明提交集群创建请求。
SCTP 支持
Distributed Cloud connected 支持在主网络接口上使用流控制传输协议 (SCTP) 进行内部和外部网络连接。SCTP 支持包括 NodePort、LoadBalancer 和 ClusterIP 服务类型。Pod 可以使用 SCTP 与其他 Pod 和外部资源进行通信。以下示例说明了如何使用 SCTP 将 IPERF 配置为 ClusterIP 服务:
apiVersion: v1
kind: Pod
metadata:
name: iperf3-sctp-server-client
labels:
app.kubernetes.io/name: iperf3-sctp-server-client
spec:
containers:
- name: iperf3-sctp-server
args: ['-s', '-p 31390']
ports:
- containerPort: 31390
protocol: SCTP
name: server-sctp
- name: iperf3-sctp-client
...
---
apiVersion: v1
kind: Service
metadata:
name: iperf3-sctp-svc
spec:
selector:
app.kubernetes.io/name: iperf3-sctp-server-client
ports:
- port: 31390
protocol: SCTP
targetPort: server-sctp
此功能在 Distributed Cloud connected 服务器上不可用。
SCTP 内核模块
从 1.5.0 版开始,Distributed Cloud connected 会将 sctp Edge OS 内核模块配置为可加载。这样,您就可以在内核用户空间中加载自己的 SCTP 协议栈。
此外,Distributed Cloud connected 默认会将以下模块加载到内核中:
| 模块名称 | 配置名称 |
|---|---|
fou |
CONFIG_NET_FOU |
nf_conntrack_proto_gre |
CONFIG_NF_CT_PROTO_GRE |
nf_conntrack_proto_sctp |
CONFIG_NF_CT_PROTO_SCTP |
inotify |
CONFIG_INOTIFY_USER |
xt_redirect |
CONFIG_NETFILTER_XT_TARGET_REDIRECT |
xt_u32 |
CONFIG_NETFILTER_XT_MATCH_U32 |
xt_multiport |
CONFIG_NETFILTER_XT_MATCH_MULTIPORT |
xt_statistic |
CONFIG_NETFILTER_XT_MATCH_STATISTIC |
xt_owner |
CONFIG_NETFILTER_XT_MATCH_OWNER |
xt_conntrack |
CONFIG_NETFILTER_XT_MATCH_CONNTRACK |
xt_mark |
CONFIG_NETFILTER_XT_MARK |
ip6table_mangle |
CONFIG_IP6_NF_MANGLE |
ip6_tables |
CONFIG_IP6_NF_IPTABLES |
ip6table_filter |
CONFIG_IP6_NF_FILTER |
ip6t_reject |
CONFIG_IP6_NF_TARGET_REJECT |
iptable_mangle |
CONFIG_IP_NF_MANGLE |
ip_tables |
CONFIG_IP_NF_IPTABLES |
iptable_filter |
CONFIG_IP_NF_FILTER |
ClusterDNS 资源
Distributed Cloud connected 支持 Google Distributed Cloud ClusterDNS 资源,用于通过 spec.domains 部分为特定网域配置上游域名服务器。如需详细了解如何配置此
资源,请参阅
spec.domains。
此功能在 Distributed Cloud connected 服务器上不可用。