我们建议您配置以下负载均衡模式之一:
使用捆绑模式时,Google Distributed Cloud 提供和管理负载均衡器。您无需获得负载均衡器许可,并且只需执行最基本的设置步骤。
在手动模式下,Google Distributed Cloud 会使用您选择的负载均衡器,例如 F5 BIG-IP 或 Citrix。手动负载均衡模式要求您进行比捆绑模式更多的配置。
以下集群类型支持手动负载均衡:
已启用 Controlplane V2 的用户集群。使用 Controlplane V2 时,用户集群的控制平面节点位于用户集群本身中。
使用 kubeception 的用户集群。kubeception 指的是用户集群的控制平面在管理员集群中的一个或多个节点上运行的情况。如果未启用 Controlplane V2,则用户集群会使用 kubeception。
本页面介绍在您选择使用手动负载均衡模式时需要执行的步骤。
在本主题中,您要为控制平面节点和工作节点预留 IP 地址,供以后使用。您还需要为虚拟 IP (VIP) 预留 IP 地址,并确定 nodePort
值。您可以选择要使用的 IP 地址和 nodePort
值,然后在电子表格或其他工具中记录这些值。当您准备好创建集群时,需要使用 IP 地址和 nodePort
值来填写管理员集群和用户集群的配置文件以及您的集群的 IP 地址块文件。
在为用户集群手动配置负载均衡器时,您还需要使用 IP 地址和 nodePort
值。
预留节点 IP 地址
使用手动负载均衡模式时,您无法使用 DHCP。您必须为集群节点指定静态 IP 地址。您需要为管理员集群中的节点预留足够的地址,并为您要创建的所有用户集群中的节点预留足够的地址。如需详细了解要预留的节点 IP 地址数量,请参阅规划 IP 地址 (Controlplane V2) 和规划 IP 地址 (kubeception)。
配置 IP 地址
配置已预留静态 IP 地址的位置取决于集群类型以及用户集群是否已启用 Controlplane V2。
HA 管理员集群
下表介绍了 IP 地址的用途,以及您为 HA 管理员集群配置 IP 地址的位置。
静态 IP | 配置 |
---|---|
控制平面节点 | network.controlPlaneIPBlock.ips 部分中的管理员集群配置文件 |
1.16 及更低版本:插件节点 | 管理员集群 IP 地址块文件,并在管理员集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加该路径 |
在 1.28 及更高版本中,新的 HA 管理员集群没有插件节点,因此您无需像以前的版本那样为插件节点预留 IP 地址。
非 HA 管理员集群
下表介绍了 IP 地址的用途,以及您为非 HA 管理员集群配置 IP 地址的位置。
静态 IP | 配置 |
---|---|
控制平面节点 | 管理员集群 IP 地址块文件,并在管理员集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加该路径 |
插件节点 | 管理员集群 IP 地址块文件 |
在 1.28 及更高版本中,所有新管理员集群都必须是具有 3 个控制平面节点的高可用性 (HA) 集群。
CP V2 用户集群
下表介绍了 IP 地址的用途,以及您为启用了 Controlplane V2 的用户集群配置 IP 地址的位置。
静态 IP | 配置 |
---|---|
控制平面节点 | network.controlPlaneIPBlock.ips 部分中的用户集群配置文件 |
工作器节点 | 用户集群 IP 地址块文件,并在用户集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加该路径 |
Kubeception 用户集群
下表介绍了 IP 地址的用途,以及您为使用 kubeception 的用户集群配置这些 IP 地址的位置。
静态 IP | 配置 |
---|---|
控制平面节点 | 管理员集群 IP 地址块文件,并在管理员集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加该路径 |
工作器节点 | 用户集群 IP 地址块文件,并在用户集群配置文件的 network.ipMode.ipBlockFilePath 字段中添加该路径 |
预留 IP 地址作为 VIP 地址
无论您使用集成式、捆绑式还是手动负载均衡模式,都必须预留一些 IP 地址作为用于负载均衡的虚拟 IP (VIP) 地址。这些 VIP 地址允许外部客户端访问用户集群上的 Kubernetes API 服务器和您的入站流量服务。
配置 VIP 地址
您配置 VIP 地址的位置取决于集群类型。
HA 管理员集群
下表介绍了 VIP 地址的用途以及您为 HA 管理员集群配置该 VIP 地址的位置。
VIP | 配置 |
---|---|
管理员集群的 Kubernetes API 服务器的 VIP 地址 | loadBalancer.vips.controlPlaneVIP 字段中的管理员集群配置文件 |
1.15 版及更低版本:插件 VIP 地址 | loadBalancer.vips.addonsVIP 字段中的管理员集群配置文件 |
请注意以下版本差异:
在 1.16 及更高版本中,您无需为 HA 管理员集群配置插件 VIP。
在 1.28 及更高版本中,新的 HA 管理员集群没有插件节点。
非 HA 管理员集群
下表介绍了 VIP 地址的用途以及您为非 HA 管理员集群配置该 VIP 地址的位置。
VIP | 配置 |
---|---|
管理员集群的 Kubernetes API 服务器的 VIP 地址 | loadBalancer.vips.controlPlaneVIP 字段中的管理员集群配置文件 |
1.15 版及更低版本:插件 VIP 地址 | loadBalancer.vips.addonsVIP 字段中的管理员集群配置文件 |
请注意以下版本差异:
在 1.16 及更高版本中,您无需为非 HA 管理员集群配置插件 VIP 地址。
CP V2 用户集群
下表介绍了 VIP 地址的用途,以及您为启用了 Controlplane V2 的用户集群配置 IP 地址的位置。
VIP | 配置 |
---|---|
用户集群的 Kubernetes API 服务器的 VIP 地址 | loadBalancer.vips.controlPlaneVIP 字段中的用户集群配置文件 |
用户集群中入站服务的 VIP 地址 | loadBalancer.vips.ingressVIP 字段中的用户集群配置文件 |
Kubeception 用户集群
下表介绍了 IP 地址的用途,以及您为使用 kubeception 的用户集群配置这些 VIP 地址的位置。
VIP | 配置 |
---|---|
用户集群的 Kubernetes API 服务器的 VIP 地址 | loadBalancer.vips.controlPlaneVIP 字段中的用户集群配置文件 |
用户集群中入站服务的 VIP 地址 | loadBalancer.vips.ingressVIP 字段中的用户集群配置文件 |
预留 nodePort
值
在 Google Distributed Cloud 中,Kubernetes API 服务器和入站流量服务由 Kubernetes Service 公开。使用手动负载均衡模式时,您必须为这些服务选择自己的 nodePort
值。请选择 30000 - 32767 范围内的值。
配置 nodePort
值
您配置 nodePort
值的位置取决于用户集群是否已启用 ControlPlane V2。
HA 管理员集群
下表介绍了 nodePort
的用途以及您为 HA 管理员集群配置它的位置。
nodePort |
配置 |
---|---|
1.15 及更低版本:插件节点的 nodePort |
loadBalancer.manualLB.addonsNodePort 字段中的管理员集群配置文件 |
在 1.16 版及更高版本中,您无需为 HA 管理员集群的插件节点配置 nodePort
。
非 HA 管理员集群
下表介绍了 nodePort
值的用途,以及您为非 HA 管理员集群配置这些值的位置。
nodePort |
配置 |
---|---|
1.16 及更低版本:管理员集群的 Kubernetes API 服务器的 nodePort |
1.15 及更低版本:loadBalancer.vips.controlPlaneNodePort 字段中的管理员集群配置文件 |
1.15 及更低版本:插件节点的 nodePort |
loadBalancer.manualLB.addonsNodePort 字段中的管理员集群配置文件 |
在 1.16 版及更高版本中,您无需为非 HA 管理员集群的插件节点配置 nodePort
。
CP V2 用户集群
下表介绍了 nodePorts
的用途,以及您为启用了 Controlplane V2 的用户集群配置它们的位置。
nodePorts |
配置 |
---|---|
用户集群中入站流量服务的 HTTP nodePort |
loadBalancer.manualLB.ingressHTTPNodePort 中的用户集群配置文件 |
用户集群中入站流量服务的 HTTPS nodePort |
loadBalancer.manualLB.ingressHTTPSNodePort 中的用户集群配置文件 |
您无需为控制平面 VIP 地址配置 nodePort
,因为 Google Distributed Cloud 会为启用了 Controlplane V2 的用户集群处理针对控制平面节点的负载均衡。
Kubeception 用户集群
下表介绍了 nodePort
的用途,以及您为使用 kubeception 的用户集群配置它们的位置。
nodePort |
配置 |
---|---|
用户集群的 Kubernetes API 服务器的 nodePort |
loadBalancer.manualLB.controlPlaneNodePort 字段中的用户集群配置文件 |
用户集群的 Konnectivity 服务器的 nodePort (Konnectivity 服务器使用控制平面 VIP) |
loadBalancer.manualLB.konnectivityServerNodePort 字段中的用户集群配置文件 |
用户集群中入站流量服务的 HTTP nodePort |
loadBalancer.manualLB.ingressHTTPNodePort 中的用户集群配置文件 |
用户集群中入站流量服务的 HTTPS nodePort |
loadBalancer.manualLB.ingressHTTPSNodePort 中的用户集群配置文件 |
集群配置文件示例
以下示例展示了管理员和用户集群配置文件的一部分:
HA 管理员集群
1.16 版及更高版本:
network: controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB
1.15 版及更低版本需要插件节点的 VIP 地址和
nodeport
。network: controlPlaneIPBlock: netmask: "255.255.248.0" gateway: "21.0.143.254" ips: - ip: "21.0.140.226" hostname: "admin-cp-vm-1" - ip: "21.0.141.48" hostname: "admin-cp-vm-2" - ip: "21.0.141.65" hostname: "admin-cp-vm-3" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" addonsVIP: "203.0.113.4" kind: ManualLB manualLB: addonsNodePort: 31405
非 HA 管理员集群
1.16 版及更高版本:
network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" kind: ManualLB manualLB: controlPlaneNodePort: 30562
1.15 版及更低版本需要插件节点的 VIP 地址和
nodeport
。network: ipMode: type: static ipBlockFilePath: "ipblock-admin.yaml" loadBalancer: vips: controlPlaneVIP: "172.16.21.40" addonsVIP: "172.16.21.41" kind: ManualLB manualLB: controlPlaneNodePort: 30562 addonsNodePort: 30563
CP V2 用户集群
network:
ipMode:
type: static
ipBlockFilePath: "ipblock1.yaml"
controlPlaneIPBlock:
netmask: "255.255.255.0"
gateway: "172.16.21.1"
ips:
- ip: "172.16.21.6"
hostname: "cp-vm-1"
- ip: "172.16.21.7"
hostname: "cp-vm-2"
- ip: "172.16.21.8"
hostname: "cp-vm-3"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: ManualLB
manualLB:
ingressHTTPNodePort: 30243
ingressHTTPSNodePort: 30879
Kubeception 用户集群
network:
ipMode:
type: static
ipBlockFilePath: "ipblock1.yaml"
loadBalancer:
vips:
controlPlaneVIP: "172.16.21.40"
ingressVIP: "172.16.21.30"
kind: ManualLB
manualLB:
ingressHTTPNodePort: 30243
ingressHTTPSNodePort: 30879
konnectivityServerNodePort: 30563
controlPlaneNodePort: 30562
配置负载均衡器
使用负载均衡器的管理控制台或工具在负载均衡器中配置以下映射。具体的操作方法取决于您的负载均衡器。
HA 管理员集群
流向控制平面节点的流量
对于 HA 管理员集群,Google Distributed Cloud 会自动处理控制平面流量的负载均衡。虽然您不需要在负载均衡器中配置映射,但必须在 loadBalancer.vips.controlPlaneVIP
字段中指定 IP 地址。
流向插件节点中的服务的流量
1.15 及更低版本:下面显示了与插件节点中服务的流量的 IP 地址和 nodePort
值的映射:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
为管理员集群中的所有节点(包括控制平面节点和插件节点)添加此映射。
在 1.16 版及更高版本中,您无需为 HA 管理员集群的插件节点配置此映射。
非 HA 管理员集群
控制平面流量
下面显示了与控制平面节点的 IP 地址和 nodePort
值的映射:
- (
controlPlaneVIP
:443) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
)
为管理员集群中的所有节点(包括控制平面节点和插件节点)添加此映射。
流向插件节点中的服务的流量
1.15 及更低版本:下面显示了与在插件节点中运行的服务的 IP 地址和 nodePort
值的映射:
- (
addonsVIP
:8443) -> (NODE_IP_ADDRESSES:addonsNodePort
)
为管理员集群中的所有节点(包括控制平面节点和插件节点)添加此映射。
在 1.16 版及更高版本中,您无需为非 HA 管理员集群的插件节点配置此映射。
CP V2 用户集群
控制平面流量
对于启用了 Controlplane V2 的用户集群,Google Distributed Cloud 会自动处理控制平面流量的负载均衡。虽然您不需要在负载均衡器中配置映射,但必须在 loadBalancer.vips.controlPlaneVIP
字段中指定 IP 地址。
数据平面流量
下面显示了与数据平面流量的 IP 地址和 nodePort
值的映射:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
为用户集群中的所有节点(包括控制平面节点和工作器节点)添加这些映射。由于您在集群上配置了 NodePort,因此 Kubernetes 会在所有集群节点上打开 NodePort。这样,集群中的任何节点都可以处理数据平面流量。
配置映射后,负载均衡器会在标准 HTTP 和 HTTPS 端口上监听您为用户集群的入站流量 VIP 地址配置的 IP 地址上的流量。负载均衡器会将请求路由到集群中的任意节点。请求路由到某个集群节点后,内部 Kubernetes 网络会接管该请求并将其路由到目标 Pod。
Kubeception 用户集群
控制平面流量
下面显示了与控制平面流量的 IP 地址和 nodePort
值的映射:
- (
controlPlaneVIP
:443
) -> (NODE_IP_ADDRESSES:controlPlaneNodePort
) - (
controlPlaneVIP
:8132
) -> (NODE_IP_ADDRESSES:konnectivityServerNodePort
)
为管理员集群中的所有节点(包括管理员集群和用户集群控制平面节点)添加此映射。
数据平面流量
下面显示了与数据平面流量的 IP 地址和 nodePort
值的映射:
- (
ingressVIP
:80
) -> (NODE_IP_ADDRESSES:ingressHTTPNodePort
) - (
ingressVIP
:443
) -> (NODE_IP_ADDRESSES:ingressHTTPSNodePort
)
为用户集群中的所有节点添加这些映射。如果用户集群使用 kubeception,则集群中的所有节点都是工作器节点。
重置与故障节点的连接(推荐)
除了上述要求外,我们还建议您配置负载均衡器,以便在检测到后端节点故障时重置客户端连接。如果不进行这一配置,Kubernetes API 服务器的客户端在服务器实例关闭时可能会停止响应几分钟,这可能会导致 Kubernetes 控制平面不稳定。
- 如果使用 F5 BIG-IP,此设置在后端池配置页面中称为 Action On Service Down。
- 如果使用 HAProxy,此设置在后端服务器配置中称为 on-marked-down shutdown-sessions。
- 如果您使用其他负载均衡器,请参阅文档以查找等效设置。
获取对手动负载均衡的支持
Google 不提供对使用手动负载均衡模式配置的负载均衡器的支持。如果您遇到与负载均衡器相关的问题,请与负载均衡器的供应商联系。