启用手动负载平衡模式

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

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

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

预留虚拟 IP 地址

无论您使用集成、捆绑式还是手动负载平衡模式,都必须预留一些虚拟 IP 地址 (VIP) 以用于负载平衡。这些 VIP 允许外部客户端访问您的 Kubernetes API 服务器、入站服务和插件服务。如需详细了解如何预留 VIP,请参阅预留虚拟 IP 地址

预留节点 IP 地址

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

预留 nodePort

在 GKE On-Prem 集群中,Kubernetes API 服务器、入站服务和插件服务是作为 NodePort 类型的 Kubernetes 服务实现的。使用手动负载平衡模式时,您必须为这些服务选择自己的 nodePort 值。请选择 30000 - 32767 范围内的值。选择 nodePort 值后,请将其预留以供稍后在修改集群配置文件时使用。

选择并保留以下 nodePort 值。

  • 对于您为 Kubernetes API 服务器预留的每个 VIP,请预留一个 nodePort 值。

  • 对于您为集群入站服务预留的每个 VIP,请预留两个 nodePort 值:一个用于 HTTP 流量,一个用于 HTTPS 流量。这仅适用于用户集群。

  • 对于您为集群插件服务预留的每个 VIP,请预留一个 nodePort 值。这仅适用于管理员集群。

例如,假设您打算使用两个用户集群,并且打算使用插件。您需要选择并预留以下 nodePort 值:

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

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

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

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

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

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

修改 GKE On-Prem 配置文件

为以下每个集群准备一个配置文件:管理员集群用户集群

  • loadBalancer.kind 设置为 ManualLB

  • network.ipMode 设置为 static

  • network.ipBlockFilePath 设置为您的集群的静态 IP YAML 文件的路径。相关说明请参阅配置静态 IP。DHCP 不是手动负载平衡模式的选项。

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

以下示例显示了更新后的配置文件的一部分:

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

配置负载平衡器

现在您已更新了配置文件,下面请登录负载平衡器的管理控制台并配置 VIP:

  • 管理员集群和用户集群的集群控制平面,TCP 端口 443
  • 管理员集群的插件管理器(如果使用),TCP 端口 8443
  • 用户集群 Ingress 控制器,TCP 端口 80
  • 用户集群 Ingress 控制器,TCP 端口 443

负载平衡示例

Service 有一个 ports 字段,它是 ServicePort 对象的数组。在 NodePort 类型的 Service 中,每个 ServicePort 对象都有一个 protocolportnodePorttargetPort。例如,下面是对应 ports 数组中有两个 ServicePort 对象的 Service 的清单的一部分:

...
kind: Service
...
spec:
  ...
  type: NodePort
  ports:
  - protocol: TCP
    port: 80
    nodePort: 32676
    targetPort: 8080
  - protocol: TCP
    port: 443
    nodePort: 32677
    targetPort: 443
...

假设上述 Service 代表您的某个用户集群的入站服务。另外,还假设您已做出以下选择:

  • 203.0.113.5 是您的用户集群的入站服务的 VIP。

  • 您的用户集群的节点地址为 192.168.0.10192.168.0.11192.168.0.12

配置好负载平衡器后,流量路由如下:

  • 客户端在 TCP 端口 80 上向 203.0.113.5 发送请求。负载平衡器选择用户集群节点。对于此示例,假设节点地址为 192.168.0.11。负载平衡器将请求转发到 TCP 端口 32676 上的 192.168.0.11。节点上的 iptables 规则将请求转发到 TCP 端口 8080 上的相应 pod。

  • 客户端在 TCP 端口 443 上向 203.0.113.5 发送请求。负载平衡器选择用户集群节点。对于此示例,假设节点地址为 192.168.0.10。负载平衡器将请求转发到 TCP 端口 32677 上的 192.168.0.10。节点上的 iptables 规则将请求转发到 TCP 端口 443 上的相应 Pod。

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

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

后续步骤

问题排查

如需了解详情,请参阅问题排查