本文档介绍如何为 Google Distributed Cloud 安装规划 IP 地址。
准备工作
阅读 Google Distributed Cloud 概览和安装概览。
IP 地址分配示例
本部分介绍如何在包含以下元素的安装中分配静态 IP 地址:
一个管理员工作站
一个高可用性 (HA) 管理员集群
一个具有五个工作器节点的 HA 用户集群
一个具有四个工作器节点的非 HA 用户集群
在此示例中,用户集群已启用 Controlplane V2。使用 Controlplane V2 时,用户集群的控制平面节点位于用户集群本身中。
如果您不想为用户集群启用 Controlplane V2,请参阅规划 IP 地址 (kubeception)。kubeception 指的是用户集群的控制平面在管理员集群中的一个或多个节点上运行的情况。我们不建议使用 kubeception。我们建议您启用 Controlplane V2。
管理员集群节点
一个管理员集群有三个节点,每个节点都运行控制平面组件。
负载平衡
在本示例中,假设集群使用 MetalLB 负载均衡器。此负载均衡器在集群节点上运行,因此无需额外的虚拟机即可实现负载均衡。
子网
对于此示例,假设每个集群位于自己的 VLAN 上,并且集群位于以下子网中:
虚拟机 | 子网 | 默认网关 |
---|---|---|
管理员工作站和管理员集群 | 172.16.20.0/24 | 172.16.20.1 |
用户集群 1 | 172.16.21.0/24 | 172.16.21.1 |
用户集群 2 | 172.16.22.0/24 | 172.16.22.1 |
下图演示了三个 VLAN 和子网。请注意,VIP 未显示与集群中的任何特定节点相关联。这是因为 MetalLB 负载均衡器可以选择哪个节点公布单个 Service 的 VIP。例如,在用户集群 1 中,一个工作器节点可以公布 172.16.21.31,另一个工作器节点可以公布 172.16.21.32。
IP 地址示例:管理员工作站
在本示例中,管理员工作站与管理员集群位于同一子网中:172.16.20.0/24。节点地址附近的地址适合管理员工作站。例如:172.16.20.20。
示例 IP 地址:管理员集群节点
此示例中的管理员集群有 3 个节点,因此您需要设置 3 个 IP 地址。例如,您可以为管理员集群中的节点预留以下 IP 地址:
管理员集群 | IP 地址 |
---|---|
HA 管理员集群 | 172.16.20.2 - 172.16.20.4 |
示例 IP 地址:管理员集群的 VIP 地址
您需要为管理员集群的 Kubernetes API 服务器预留一个 VIP。请注意,在集群配置文件中,此 VIP 的字段称为 controlPlaneVIP
。例如,您可以为管理员集群的 Kubernetes API 服务器预留以下 VIP:
VIP | IP 地址 |
---|---|
管理员集群的 Kubernetes API 服务器的 VIP 地址 | 172.16.20.30 |
请注意,对于高可用性管理员集群,controlPlaneVIP
需要与 network.controlPlaneIPBlock 中指定的控制平面节点 IP 地址位于同一 VLAN。
示例 IP 地址:用户集群 1 节点
对于具有八个节点的用户集群,您需要预留九个 IP 地址。额外的地址是必需的,因为在集群升级、更新和自动修复期间需要用到它。例如,您可以为用户集群 1 中的节点预留以下 IP 地址:
用户集群 1 中的节点的 IP 地址 |
---|
172.16.21.2 - 172.16.21.10 |
示例 IP 地址:用户集群 1 的 VIP 地址
下表举例说明了如何为用户集群 1 指定要在负载均衡器上配置的 VIP 地址:
VIP | 说明 | IP 地址 |
---|---|---|
用户集群 1 的 Kubernetes API 服务器的 VIP 地址 | 在负载均衡器上为用户集群 1 配置 | 172.16.21.30 |
用户集群 1 的 Ingress VIP 地址 | 在负载均衡器上为用户集群 1 配置 | 172.16.21.31 |
用户集群 1 的 Service VIP 地址 | LoadBalancer 类型的 Service 的 10 个地址。根据需要在负载均衡器上为用户集群 1 配置。 请注意,此范围包含 Ingress VIP 地址。 这是 MetalLB 负载均衡器的要求。 |
172.16.21.31 - 172.16.21.40 |
请注意,Kubernetes API 服务器的 VIP 在集群配置文件的 loadBalancer.vips.controlPlaneVIP 中指定。启用 ControlPlane V2 时,controlPlaneVIP
需要与 network.controlPlaneIPBlock 中指定的控制平面节点 IP 位于同一 VLAN。
示例 IP 地址:用户集群 2 节点
对于具有五个节点的用户集群,您需要预留六个 IP 地址。额外的地址是必需的,因为在集群升级、更新和自动修复期间需要用到它。例如,您可以为用户集群 2 中的节点预留以下 IP 地址:
用户集群 2 中的节点的 IP 地址 |
---|
172.16.22.2 - 172.16.22.7 |
示例 IP 地址:用户集群 2 的 VIP 地址
下表举例说明了如何为用户集群 2 指定要在负载均衡器上配置的 VIP 地址:
VIP | 说明 | IP 地址 |
---|---|---|
用户集群 2 的 Kubernetes API 服务器的 VIP 地址 | 在负载均衡器上为用户集群 2 配置 | 172.16.22.30 |
用户集群 2 的 Ingress VIP 地址 | 在负载均衡器上为用户集群 2 配置 | 172.16.22.31 |
用户集群 2 的 Service VIP 地址 | LoadBalancer 类型的 Service 的 10 个地址。根据需要在负载均衡器上为用户集群 2 配置。 请注意,此范围包含 Ingress VIP 地址。 这是 MetalLB 负载均衡器的要求。 |
172.16.22.31 - 172.16.22.40 |
请注意,Kubernetes API 服务器的 VIP 在集群配置文件的 loadBalancer.vips.controlPlaneVIP 中指定。启用 ControlPlane V2 时,controlPlaneVIP
需要与 network.controlPlaneIPBlock 中指定的控制平面节点 IP 位于同一 VLAN。
示例 IP 地址:Pod 和服务
在创建集群之前,您必须指定用于 Pod IP 地址的 CIDR 范围以及用于 Kubernetes Service 的 ClusterIP
地址的另一个 CIDR 范围。
确定要用于 Pod 和 Service 的 CIDR 范围。例如:
用途 | CIDR 范围 |
---|---|
管理员集群中的 Pod | 192.168.0.0/16 |
用户集群 1 中的 Pod | 192.168.0.0/16 |
用户集群 2 中的 Pod | 192.168.0.0/16 |
管理员集群中的 Service | 10.96.232.0/24 |
用户集群 1 中的 Service | 10.96.0.0/20 |
用户集群 2 中的 Service | 10.96.128.0/20 |
上述示例阐述了以下要点:
多个集群的 Pod CIDR 范围可以相同。
通常,您需要的 Pod 多于 Service,因此对于一个给定集群,Pod CIDR 范围应该要大于 Service CIDR 范围。用户集群的示例 Pod 范围为 192.168.0.0/16,地址数为 2^(32-16) = 2^16 个。但用户集群的示例 Service 范围为 10.96.0.0/20,地址数仅为 2^(32-20) = 2^12 个。
避免重叠
您可能希望使用非默认 CIDR 范围以避免与网络中可访问的 IP 地址重叠。Service 和 pod 范围不得与您要从集群内部访问的任何集群外部地址重叠。
例如,假设您的 Service 范围为 10.96.232.0/24,您的 Pod 范围为 192.168.0.0/16 (192.168.0.1 - 192.168.255.254)。从 Pod 发送到上述任一范围中的地址的任何流量都将被视为集群内的流量,并且不会到达集群外部的任何目的地。
具体来说,Service 和 pod 范围不得与以下各项重叠:
任何集群中节点的 IP 地址
负载均衡器使用的 IP 地址
控制平面节点和负载均衡器使用的 VIP 地址
vCenter 服务器、DNS 服务器和 NTP 服务器的 IP 地址
我们建议您的 Service 和 Pod 范围位于 RFC 1918 专用地址空间中。
以下是建议使用 RFC 1918 地址的一个原因。假设您的 Pod 或 Service 范围包含外部 IP 地址。从 Pod 发送到其中一个外部地址的任何流量都将被视为集群内流量,并且不会到达外部目标。
DNS 服务器和默认网关
在填写配置文件之前,您必须知道管理员工作站和集群节点可以使用的 DNS 服务器的 IP 地址。
您还必须知道每个子网的默认网关的 IP 地址。在前面的示例中,每个子网的默认网关是范围内的第一个地址。例如,在管理员集群的子网中,默认网关显示为 172.16.20.1。