启用手动负载平衡模式

GKE On-Prem 集群可以通过两种负载平衡模式之一运行:集成或手动。使用集成模式时,GKE On-Prem 集群通过 F5 BIG-IP 负载平衡器运行。使用手动模式时,您可以手动配置其他负载平衡器。例如,您可以手动配置 Citrix 负载平衡器Seesaw 负载平衡器

手动负载平衡模式要求进行比集成式模式更多的配置。本页面介绍使用手动负载平衡模式时需要执行的步骤。

限制

使用手动负载平衡具有以下限制:

  • 您不能使用 DHCP 为集群节点分配 IP 地址。您必须分配静态节点 IP 地址。

  • 您无法将 LoadBalancer 类型的 Service 公开给集群外部的客户端。但是,您可以创建 NodePort 类型的 Service 并手动配置负载平衡器,以便将其用作后端。您还可以使用 Ingress 对象公开您的 Service。

  • 如果添加或删除集群节点,则必须手动对负载平衡器进行相应配置。

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

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

预留 IP 地址

您创建的每个集群都有三个或更多虚拟机,这些虚拟机称为节点。为您要创建的集群中的每个节点预留一个 IP 地址。例如,如果您打算创建一个包含 4 个节点的管理员集群和一个包含 3 个节点的用户集群,请为节点预留 7 个IP 地址。配置路由器以使所有节点 IP 地址都可路由。

您还需要预留以下 VIP 用于负载平衡:

  • 管理员控制平面的 VIP(公开的端口:TCP 443)
  • 管理员集群 Ingress 控制器的 VIP(公开的端口:TCP 80、TCP 443)
  • 插件管理器的 VIP(公开的端口:TCP 8443)
  • 用户控制平面的 VIP(公开的端口:TCP 443)
  • 用户集群 Ingress 控制器的 VIP(公开的端口:TCP 80、TCP 443)

预留节点端口

GKE On-Prem 使用 NodePort 类型的 Kubernetes Service 对象将流量路由到 pod。

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 代表您的用户集群的 Ingress 控制器。另外,还假设您已做出以下选择:

  • 203.0.113.5 是您的用户集群 Ingress 控制器的 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。

您无需为 VIP 创建 Service 对象。GKE On-Prem 会为您完成这项工作。但对于每个(VIP、TCP 端口)对,您必须选择并指定以下内容:

  • 一组节点 IP 地址
  • 一个 nodePort 值。

您需要预留 7 个 nodePort 值:

  • 管理员集群控制平面的 nodePort,TCP 端口 443
  • 管理员集群 Ingress 控制器的 nodePort,TCP 端口 80
  • 管理员集群 Ingress 控制器的 nodePort,TCP 端口 443
  • 插件管理器的 nodePort,TCP 端口 8443
  • 用户控制平面的 nodePort,TCP 端口 80
  • 用户集群 Ingress 控制器的 nodePort,TCP 端口 80
  • 用户集群 Ingress 控制器的 nodePort,TCP 端口 443

修改 GKE On-Prem 配置文件

安装 GKE On-Prem 时,您会生成一个配置文件。您需要修改配置文件中的以下部分:

  • lbmode 设置为 Manual

  • admincluster:ipblockfilepath 设置为管理员集群的静态 IP 地址 YAML 文件的路径。相关说明请参阅配置静态 IPManual 模式不支持 DHCP。

  • usercluster: ipblockfilepath 设置为用户集群的静态 IP YAML 文件的路径。

  • 使用您为管理员集群选择的 nodePort 值更新 admincluster:manuallbspec 字段。

  • 使用您为用户集群选择的 nodePort 值更新 usercluster:manuallbspec 部分。

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

lbmode: Manual

admincluster:
  ipblockfilepath: "ipblock1.yaml"
  manuallbspec:
    ingresshttpnodeport: 32527
    ingresshttpsnodeport: 30139
    controlplanenodeport: 30968
    addonsnodeport: 31405

usercluster:
  ipblockfilepath: "env/default/ipblock2.yaml"
  manuallbspec:
    ingresshttpnodeport: 30243
    ingresshttpsnodeport: 30879
    controlplanenodeport: 30562

配置负载平衡器

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

首先,检查以确保管理员集群和用户集群具有不同的 IP 地址池。

如前所述,您需要配置 5 个 VIP 和 7 个端口。因此,您需要在负载平衡器上创建七个虚拟服务:

  • 管理员集群控制层面,TCP 端口 443
  • 管理员集群 Ingress 控制器,TCP 端口 80
  • 管理员集群 Ingress 控制器,TCP 端口 443
  • 插件管理器,TCP 端口 8443
  • 用户控制层面,TCP 端口 80
  • 用户集群 Ingress 控制器,TCP 端口 80
  • 用户集群 Ingress 控制器,TCP 端口 443

后续步骤

问题排查

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