启用手动负载均衡模式

GKE on VMware 集群可以通过三种负载均衡模式之一运行:集成、捆绑或手动。

  • 在集成模式下,GKE on VMware 使用 F5 BIG-IP 负载均衡器。

  • 使用捆绑模式时,GKE on VMware 会提供和管理负载均衡器。您无需获得负载均衡器的许可,且只需执行极少量的设置工作。

  • 在手动模式下,GKE on VMware 会使用您选择的负载均衡器。手动负载均衡模式要求您进行比集成模式更多的配置。 Citrix 负载均衡器就是一个示例负载均衡器,可与手动负载均衡模式搭配使用。

以下集群类型支持手动负载均衡:

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

  • 使用 kubeception 的用户集群。kubeception 一词是指用户集群的控制平面在管理员集群中的一个或多个节点上运行的情况。如果启用 Controlplane V2,则用户集群将使用 kubeception。

  • 高可用性 (HA) 管理员集群和非高可用性管理员集群。

本页面介绍了选择使用手动负载均衡模式时需要执行的步骤。

在本主题中,您将为集群节点预留 IP 地址供以后使用。您还可以为虚拟 IP (VIP) 预留 IP 地址并确定 nodePort 值。您可以选择要使用的 IP 地址和 nodePort 值,然后将其记录在电子表格或其他工具中。准备好创建集群时,您需要使用 IP 地址和 nodePort 值来填充管理员集群用户集群的配置文件,以及集群的 IP 块文件

手动配置负载均衡器时,您还需要 IP 地址和 nodePort 值。

预留节点 IP 地址

使用手动负载均衡模式时,您无法使用 DHCP。您必须为集群节点指定静态 IP 地址。您需要为管理员集群中的节点预留足够的地址,并为您要创建的所有用户集群中的节点预留足够的地址。如需详细了解要预留的节点 IP 地址数量,请参阅规划 IP 地址 (Controlplane V2)规划 IP 地址 (kubeception)

配置 IP 地址

应在何处配置预留的静态 IP 地址取决于集群类型以及用户集群是否启用了 Controlplane V2。

高可用性管理员集群

下表介绍了 IP 地址的用途以及您在何处为高可用性管理员集群配置这些 IP 地址。

静态 IP 配置
控制平面节点 network.controlPlaneIPBlock.ips 部分中的管理员集群配置文件
插件节点 管理员集群 IP 块文件,然后在管理员集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加路径

非高可用性管理员集群

下表介绍了 IP 地址的用途,以及您在何处为非高可用性管理员集群配置这些 IP 地址。

静态 IP 配置
控制平面节点 管理员集群 IP 块文件,然后在管理员集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加路径
插件节点 管理员集群 IP 块文件

CP V2 用户集群

下表介绍了 IP 地址的用途,以及在什么位置为启用了 Controlplane V2 的用户集群配置这些 IP 地址。

静态 IP 配置
控制平面节点 network.controlPlaneIPBlock.ips 部分中的用户集群配置文件
工作器节点 用户集群 IP 块文件,然后将路径添加到用户集群配置文件的 network.ipMode.ipBlockFilePath 字段中

Kubeception 用户集群

下表介绍了 IP 地址的用途,以及您在何处为使用 kubeception 的用户集群配置 IP 地址。

静态 IP 配置
控制平面节点 管理员集群 IP 块文件,然后在管理员集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加路径
工作器节点 用户集群 IP 块文件,然后将路径添加到用户集群配置文件的 network.ipMode.ipBlockFilePath 字段中

为 VIP 预留 IP 地址

无论您使用集成、捆绑还是手动负载均衡模式,都必须为虚拟 IP (VIP) 预留一些 IP 地址以实现负载均衡。这些 VIP 允许外部客户端访问用户集群上的 Kubernetes API 服务器和入站流量服务。

配置 VIP

配置 VIP 的位置取决于集群类型。

高可用性管理员集群

下表介绍了 VIP 的用途以及您可以在什么位置为高可用性管理员集群配置该 VIP 地址。

VIP 配置
管理员集群的 Kubernetes API 服务器的 VIP 地址 loadBalancer.vips.controlPlaneVIP 字段中的管理员集群配置文件
插件节点的 VIP 地址 loadBalancer.vips.addonsVIP 字段中的管理员集群配置文件

非高可用性管理员集群

下表介绍了 VIP 的用途以及您可以在何处为非高可用性管理员集群配置该 VIP 地址。

VIP 配置
管理员集群的 Kubernetes API 服务器的 VIP 地址 loadBalancer.vips.controlPlaneVIP 字段中的管理员集群配置文件
插件节点的 VIP 地址 loadBalancer.vips.addonsVIP 字段中的管理员集群配置文件

CP V2 用户集群

下表介绍了 VIP 地址的用途,以及您在何处为启用了 Controlplane V2 的用户集群配置 VIP 地址。

VIP 配置
用户集群的 Kubernetes API 服务器的 VIP 地址 loadBalancer.vips.controlPlaneVIP 字段中的用户集群配置文件
用户集群中入站流量服务的 VIP loadBalancer.vips.ingressVIP 字段中的用户集群配置文件

Kubeception 用户集群

下表介绍了 VIP 地址的用途,以及您在何处为使用 kubeception 的用户集群配置 VIP 地址。

VIP 配置
用户集群的 Kubernetes API 服务器的 VIP 地址 loadBalancer.vips.controlPlaneVIP 字段中的用户集群配置文件
用户集群中入站流量服务的 VIP loadBalancer.vips.ingressVIP 字段中的用户集群配置文件

预留 nodePort

在 GKE on VMware 中,Kubernetes 服务会公开 Kubernetes API 服务器和入站流量服务。使用手动负载均衡模式时,您必须为这些服务选择自己的 nodePort 值。请选择 30000 - 32767 范围内的值。

配置 nodePort

配置 nodePort 值的位置取决于用户集群是否已启用 ControlPlane V2。

高可用性管理员集群

下表介绍了 nodePort 的用途以及您可以在什么位置为高可用性管理员集群配置它。

nodePort 配置
nodePort(适用于插件节点) loadBalancer.manualLB.addonsNodePort 字段中的管理员集群配置文件

非高可用性管理员集群

下表介绍了 nodePort 值的用途,以及您在何处为非高可用性管理员集群配置这些值。

nodePort 配置
nodePort(适用于管理员集群的 Kubernetes API 服务器) loadBalancer.vips.controlPlaneNodePort 字段中的管理员集群配置文件
nodePort(适用于插件节点) loadBalancer.manualLB.addonsNodePort 字段中的管理员集群配置文件

CP V2 用户集群

下表介绍了 nodePorts 的用途,以及在什么位置为启用了 Controlplane V2 的用户集群配置它们。

nodePorts 配置
用户集群中入站服务的 HTTP nodePort loadBalancer.manualLB.ingressHTTPNodePort 中的用户集群配置文件
用户集群中入站服务的 HTTPS nodePort loadBalancer.manualLB.ingressHTTPSNodePort 中的用户集群配置文件

您无需为控制平面 VIP 配置 nodePort,因为 GKE on VMware 会处理启用了控制平面 V2 的用户集群的控制平面节点的负载均衡。

Kubeception 用户集群

下表介绍了 nodePort 值的用途,以及您在何处为使用 kubeception 的用户集群配置这些值。

nodePort 配置
nodePort(适用于用户集群的 Kubernetes API 服务器) loadBalancer.manualLB.controlPlaneNodePort 字段中的用户集群配置文件
针对用户集群的 Konnectivity 服务器的 nodePort(Konnectivity 服务器使用控制平面 VIP) loadBalancer.manualLB.konnectivityServerNodePort 字段中的用户集群配置文件
用户集群中入站服务的 HTTP nodePort loadBalancer.manualLB.ingressHTTPNodePort 中的用户集群配置文件
用户集群中入站服务的 HTTPS nodePort loadBalancer.manualLB.ingressHTTPSNodePort 中的用户集群配置文件

集群配置文件示例

以下示例展示了管理员和用户集群配置文件的一部分:

高可用性管理员集群

network:
  controlPlaneIPBlock:
    netmask: "255.255.248.0"
    gateway: "21.0.143.254"
    ips:
    - ip: "21.0.140.226"
      hostname: "admin-cp-vm-1"
    - ip: "21.0.141.48"
      hostname: "admin-cp-vm-2"
    - ip: "21.0.141.65"
      hostname: "admin-cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
  kind: ManualLB
  manualLB:
    addonsNodePort: 31405

非高可用性管理员集群

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock-admin.yaml"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    addonsVIP: "172.16.21.41"
  kind: ManualLB
  manualLB:
    controlPlaneNodePort: 30562
    addonsNodePort: 30563

CP V2 用户集群

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
  controlPlaneIPBlock:
    netmask: "255.255.255.0"
    gateway: "172.16.21.1"
    ips:
    - ip: "172.16.21.6"
      hostname: "cp-vm-1"
    - ip: "172.16.21.7"
      hostname: "cp-vm-2"
    - ip: "172.16.21.8"
      hostname: "cp-vm-3"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879

Kubeception 用户集群

network:
  ipMode:
    type: static
    ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
  vips:
    controlPlaneVIP: "172.16.21.40"
    ingressVIP: "172.16.21.30"
  kind: ManualLB
  manualLB:
    ingressHTTPNodePort: 30243
    ingressHTTPSNodePort: 30879
    konnectivityServerNodePort: 30563
    controlPlaneNodePort: 30562

配置负载均衡器

使用负载均衡器的管理控制台或工具在负载均衡器中配置以下映射。具体操作方式取决于您的负载均衡器。

高可用性管理员集群

控制平面流量

GKE on VMware 会自动处理 HA 管理员集群控制平面流量的负载均衡。虽然您无需在负载均衡器中配置映射,但必须在 loadBalancer.vips.controlPlaneVIP 字段中指定 IP 地址。

插件节点中服务的流量

下面显示了流量到插件节点中服务的 IP 地址和 nodePort 值的映射:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

为管理员集群中的所有节点(包括控制平面节点和插件节点)添加此映射。

非高可用性管理员集群

控制平面流量

下面显示了控制平面节点的 IP 地址和 nodePort 值的映射:

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)

为管理员集群中的所有节点(包括控制平面节点和插件节点)添加此映射。

插件节点中服务的流量

下面显示了在插件节点中运行的服务的 IP 地址和 nodePort 值的映射:

  • (addonsVIP:8443) -> (NODE_IP_ADDRESSES:addonsNodePort)

为管理员集群中的所有节点(包括控制平面节点和插件节点)添加此映射。

CP V2 用户集群

控制平面流量

GKE on VMware 会自动处理启用了 Controlplane V2 的用户集群的控制平面流量的负载均衡。虽然您无需在负载均衡器中配置映射,但必须在 loadBalancer.vips.controlPlaneVIP 字段中指定 IP 地址。

数据平面流量

下面显示了数据平面流量的 IP 地址和 nodePort 值的映射:

  • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

为用户集群中的所有节点(包括控制平面节点和工作器节点)添加这些映射。由于您在集群上配置了 NodePort,因此 Kubernetes 会在所有集群节点上打开 NodePort。这样,集群中的任何节点都可以处理数据平面流量。

配置映射后,负载均衡器会监听您在标准 HTTP 和 HTTPS 端口上为用户集群的入站流量 VIP 配置的 IP 地址上的流量。该负载均衡器会将请求路由到集群中的任何节点。在请求路由到其中一个集群节点后,内部 Kubernetes 网络将接管并将请求路由到目标 Pod。

Kubeception 用户集群

控制平面流量

下面显示了控制平面流量的 IP 地址和 nodePort 值的映射:

  • (controlPlaneVIP:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort)
  • (controlPlaneVIP:8132) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort)

admin 集群中的所有节点(包括管理员集群和用户集群控制平面节点和插件节点)添加此映射。

数据平面流量

下面显示了数据平面流量的 IP 地址和 nodePort 值的映射:

  • (ingressVIP:80) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort)

为用户集群中的所有节点添加这些映射。在用户集群中使用 kubeception 时,集群中的所有节点都是工作器节点。

除了上述要求外,我们还建议您配置负载均衡器,以便在检测到后端节点故障时重置客户端连接。如果不进行这一配置,Kubernetes API 服务器的客户端在服务器实例关闭时可能会停止响应几分钟,这可能会导致 Kubernetes 控制平面不稳定。

  • 如果使用 F5 BIG-IP,此设置在后端池配置页面中称为 Action On Service Down。
  • 如果使用 HAProxy,此设置在后端服务器配置中称为 on-marked-down shutdown-sessions。
  • 如果您使用其他负载均衡器,请参阅文档以查找等效设置。

获取对手动负载均衡的支持

Google 不提供对使用手动负载均衡模式配置的负载均衡器的支持。如果您遇到与负载均衡器相关的问题,请与负载均衡器的供应商联系。

后续步骤