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 对象都有一个 protocol
、port
、nodePort
和 targetPort
。例如,下面是其 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.10
、192.168.0.11
、192.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 文件的路径。相关说明请参阅配置静态 IP。Manual
模式不支持 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
后续步骤
问题排查
如需了解详情,请参阅问题排查。