启用手动负载平衡模式

10

Anthos clusters on VMware (GKE On-Prem) 集群可以在以下三种负载平衡模式之一下运行:集成式、捆绑式或手动模式。在集成模式下,VMware 上的 Anthos 集群使用 F5 BIG-IP 负载平衡器。在捆绑式模式下,Anthos clusters on VMware 提供和管理负载平衡器。您无需获得负载平衡器许可,并且只需执行最基本的设置步骤。 在手动模式下,Anthos clusters on VMware 使用您选择的其他负载平衡器。手动负载平衡模式要求您进行比集成模式更多的配置。 本页面介绍在您选择使用手动负载平衡模式时需要执行的步骤。

Citrix 负载均衡器是一种示例负载均衡器,您可以将其用于手动负载均衡模式。

在本主题中,您要预留 IP 地址和 nodePort 值,供以后使用。您可以选择要用于负载平衡和集群节点的 IP 地址和 nodePort 值。但是,此时您不会对地址和 nodePort 值执行任何操作。稍后,当您准备好创建集群时,需要使用地址和 nodePort 值来填写管理员集群配置文件您的用户集群配置文件。在手动配置负载均衡器时,您还需要使用地址和 nodePort 值。

预留节点 IP 地址

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

预留虚拟 IP 地址

无论您使用集成、套装还是手动负载均衡模式,都必须预留一些虚拟 IP (VIP) 地址以用于负载均衡。这些 VIP 允许外部客户端访问您的 Kubernetes API 服务器、入站服务和用于日志集成的插件服务。

预留以下 VIP 地址:

  • 管理员集群的 Kubernetes API 服务器的 VIP。在管理员集群配置文件中,这称为 controlPlaneVIP

  • 用于日志聚合的插件服务的 VIP,该服务在管理员集群中运行。在管理员集群配置文件中,这称为 addonsVIP

  • 对于您要创建的每个用户集群,用户集群的 Kubernetes API 服务器的 VIP 地址。在用户集群配置文件中,这称为 controlPlaneVIP

  • 对于您要创建的每个用户集群,用户集群中的 Ingress 服务的 VIP 地址。在用户集群配置文件中,这称为 ingressVIP

预留 nodePort

在 Anthos clusters on VMware 中,Kubernetes Service 会公开 Kubernetes API 服务器、入站服务和用于日志聚合的插件服务。使用手动负载均衡模式时,您必须为这些服务选择自己的 nodePort 值。请选择 30000 - 32767 范围内的值。选择 nodePort 值后,请将其预留以供稍后在填写集群配置文件时使用。

选择并保留以下 nodePort 值。

  • 对于您为管理员集群的 Kubernetes API 服务器预留的 VIP 地址,请预留一个 nodePort 值。

  • 对于您为插件服务预留的 VIP 地址,请预留一个 nodePort 值。

  • 对于您为用户集群的 Kubernetes API 服务器预留的每个 VIP 地址,请预留一个 nodePort 值。

  • 对于您为用户集群的 Ingress 服务预留的每个 VIP 地址,请预留两个 nodePort 值:一个用于 HTTP 流量,一个用于 HTTPS 流量。

例如,假设您打算有一个管理员集群和两个用户集群。您需要选择并预留以下 nodePort 值:

  • 为管理员集群的 Kubernetes API 服务器预留一个 nodePort 值。

  • 为管理员集群中的插件服务预留一个 nodePort 值。

  • 对于两个用户集群中的每一个,为 Kubernetes API 服务器预留一个 nodePort 值。

  • 对于两个用户集群中的每一个,为进入入站服务的 HTTP 流量预留一个 nodePort 值。

  • 对于两个用户集群中的每一个,为进入入站服务的 HTTPS 流量预留 nodePort 值。

因此,在前面的示例中,您需要预留 8 个 nodePort 值。

填写集群配置文件

为管理员集群准备配置文件,并为每个用户集群准备配置文件。

在每个集群配置文件中:

  • loadBalancer.kind 设置为 ManualLB

  • network.ipMode 设置为 static

  • network.ipBlockFilePath 设置为集群的 IP 地址块文件的路径。

  • 使用您为集群选择的 nodePort 值更新 loadBalancer.manualLB 部分。

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

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

配置负载均衡器

管理员集群

在管理员集群配置文件中,您填写了以下内容:

  • loadBalancer.vips.controlPlaneVIP
  • loadBalancer.vips.addonsVIP
  • loadBalancer.manualLB.controlPlaneNodePort
  • loadBalancer.manualLB.addonsNodePort
  • network.ipMode.ipBlockFilePath

在管理员集群的 IP 地址块文件中,已填写用于管理员集群节点的静态 IP 地址列表。

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

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

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

用户集群

在用户集群配置文件中,填写了以下内容:

  • loadBalancer.vips.controlPlaneVIP
  • loadBalancer.vips.ingressVIP
  • loadBalancer.manualLB.controlPlaneNodePort
  • loadBalancer.manualLB.konnectivityServerNodePort
  • loadBalancer.manualLB.ingressHTTPNodePort
  • loadBalancer.manualLB.ingressHTTPSNodePort
  • network.ipMode.ipBlockFilePath

在用户集群的 IP 地址块文件中,已填写用于用户集群节点的静态 IP 地址列表。

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

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

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

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

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

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

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

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

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

后续步骤