本文档介绍如何规划 IP 地址,以便安装 GKE on VMware。
准备工作
阅读 GKE on VMware 概览和安装概览。
IP 地址分配示例
本部分介绍如何在包含以下元素的安装中分配静态 IP 地址:
一个管理员工作站
一个管理员集群
一个具有五个工作器节点的高可用性 (HA) 用户集群
一个具有四个工作器节点的非 HA 用户集群
在此示例中,用户集群已启用 Controlplane V2。使用 Controlplane V2 时,用户集群的控制平面节点位于用户集群本身中。
管理员集群节点
管理员集群有 3 个节点:
- 一个运行管理员集群的控制层面的节点
- 两个运行管理员集群插件的节点
负载平衡
在本示例中,假设集群使用 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 地址:管理员集群节点
对于具有三个节点的管理员集群,您需要预留四个 IP 地址。额外的地址是必需的,因为在集群升级、更新和自动修复期间需要用到它。例如,您可以为管理员集群中的节点预留以下 IP 地址:
管理员集群中的节点的 IP 地址 |
---|
172.16.20.2 - 172.16.20.5 |
示例 IP 地址:管理员集群的 VIP 地址
下表示例演示了如何为管理员集群的负载均衡器指定 VIP 地址。请注意,在集群配置文件中,用于指定 Kubernetes API 服务器的 VIP 的字段称为 controlPlaneVIP
:
VIP | IP 地址 |
---|---|
管理员集群的 Kubernetes API 服务器的 VIP 地址 | 172.16.20.30 |
管理员集群插件 VIP | 172.16.20.31 |
示例 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 |
示例 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 |
示例 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。