GKE On-Prem 集群可以通过两种负载平衡模式之一运行:集成或手动。使用集成模式时,GKE On-Prem 集群将通过 F5 BIG-IP 负载平衡器运行。在手动模式下,您可以使用 F5 BIG-IP 负载平衡器或您选择的任何其他负载平衡器。手动负载平衡模式要求您进行比集成模式更多的配置。本页面介绍在您选择使用手动负载平衡模式时需要执行的步骤。
您可以通过手动负载均衡模式使用的负载均衡器示例包括 Citrix 负载均衡器和 Seesaw 负载均衡器。
在本主题中,您要预留 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
值。对于两个用户集群中的每一个,为进入入站服务的 HTTP 流量预留一个
nodePort
值。对于两个用户集群中的每一个,为进入入站服务的 HTTPS 流量预留
nodePort
值。为管理员集群中的插件服务预留一个
nodePort
值。对于两个用户集群中的每一个,为插件服务器预留一个
nodePort
值。
因此,在前面的示例中,您需要预留 11 个 nodePort
值。
修改 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。
如前所述,您需要配置 5 个 VIP 和 7 个端口。因此,您需要在负载平衡器上创建七个虚拟服务:
- 管理员集群控制层面,TCP 端口 443
- 管理员集群 Ingress 控制器,TCP 端口 80
- 管理员集群 Ingress 控制器,TCP 端口 443
- 插件管理器,TCP 端口 8443
- 用户控制层面,TCP 端口 80
- 用户集群 Ingress 控制器,TCP 端口 80
- 用户集群 Ingress 控制器,TCP 端口 443
负载平衡示例
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 代表您的某个用户集群的入站服务。另外,还假设您已做出以下选择:
203.0.113.5
是您的用户集群的入站服务的 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。
获取对手动负载平衡的支持
Google 不提供对使用手动负载平衡模式配置的负载平衡器的支持。如果您遇到与负载平衡器相关的问题,请与负载平衡器的供应商联系。
后续步骤
问题排查
如需了解详情,请参阅问题排查。