规划您的 IP 地址(控制平面 V2)

本文档介绍如何规划 IP 地址,以便安装 GKE on VMware。

准备工作

阅读 GKE on VMware 概览安装概览

IP 地址分配示例

本部分介绍如何在包含以下元素的安装中分配静态 IP 地址:

  • 一个管理员工作站

  • 一个高可用性 (HA) 管理员集群

  • 一个具有五个工作器节点的 HA 用户集群

  • 一个具有四个工作器节点的非 HA 用户集群

在此示例中,用户集群已启用 Controlplane V2。使用 Controlplane V2 时,用户集群的控制平面节点位于用户集群本身中。

管理员集群节点

管理员集群所需的节点数取决于集群是高可用性 (HA) 集群还是非 HA 集群。

  • 一个 HA 管理员集群有五个节点:

    • 三个运行管理员集群控制平面的节点
    • 两个运行管理员集群插件的节点
  • 非 HA 管理员集群有三个节点:

    • 一个运行管理员集群的控制层面的节点
    • 两个运行管理员集群插件的节点

在此示例中,管理员集群是 HA 集群,因此有五个节点。

负载平衡

在本示例中,假设集群使用 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 地址。
一个管理员集群和两个用户集群的 IP 地址(点击可放大)

IP 地址示例:管理员工作站

在本示例中,管理员工作站与管理员集群位于同一子网中:172.16.20.0/24。节点地址附近的地址适合管理员工作站。例如:172.16.20.20。

示例 IP 地址:管理员集群节点

此示例中的管理员集群有五个节点,因此您需要预留六个 IP 地址。额外的地址是必需的,因为在集群升级、更新和自动修复期间需要用到它。例如,您可以为管理员集群中的节点预留以下 IP 地址:

管理员集群 IP 地址
HA 管理员集群 172.16.20.2 - 172.16.20.7

示例 IP 地址:管理员集群的 VIP 地址

您需要为管理员集群的 Kubernetes API 服务器预留一个 VIP。请注意,在集群配置文件中,此 VIP 的字段称为 controlPlaneVIP。例如,您可以为管理员集群的 Kubernetes API 服务器预留以下 VIP:

VIP IP 地址
管理员集群的 Kubernetes API 服务器的 VIP 地址172.16.20.30

示例 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 范围
管理员集群中的 Pod192.168.0.0/16
用户集群 1 中的 Pod192.168.0.0/16
用户集群 2 中的 Pod192.168.0.0/16
管理员集群中的 Service10.96.232.0/24
用户集群 1 中的 Service10.96.0.0/20
用户集群 2 中的 Service10.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。

更多信息

管理节点 IP 地址