概览
本页介绍了如何将版本 1.30 或更高版本的管理员集群迁移到以下推荐功能:
负载均衡器配置:
集成式 F5 BIG-IP 负载均衡器配置为
ManualLB
。或
将捆绑式 Seesaw 负载均衡器迁移到 MetalLB。
从非高可用性 (HA) 管理员集群迁移到高可用性 (HA) 管理员集群。 使用相同数量的虚拟机时,高可用性管理员集群可显著提高可用性。非 HA 管理员集群有一个控制平面节点和两个插件节点。HA 管理员集群的三个节点都是控制平面节点,没有插件节点。
本页面适用于管理底层技术基础架构生命周期的 IT 管理员和运维人员。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
如需详细了解迁移规划,请参阅规划将集群迁移到推荐功能。
最佳做法
如果您有多个环境(例如测试环境、开发环境和生产环境),我们建议您先迁移最不重要的环境(例如测试环境)。验证迁移成功后,请对每个环境重复此过程,最后再迁移生产环境。这样,您就可以在迁移到下一个更关键的环境之前,验证每次迁移是否成功,并确保工作负载正常运行。
要求
- 管理员集群必须为 1.30 或更高版本。
- 管理员集群管理的所有用户集群必须已迁移到推荐功能,如将用户集群迁移到推荐功能中所述。
规划迁移期间的停机时间
在迁移期间,控制平面会有一些停机时间。非高可用性管理集群的 Kubernetes API 访问功能将无法使用约 20 分钟,但 Kubernetes 控制平面仍可用于使用 F5 的高可用性管理集群。在迁移期间,Kubernetes 数据平面会继续处于稳定状态。
从 | 到 | Kubernetes API 访问权限 | 用户工作负载 |
---|---|---|---|
使用 F5 BIG-IP 的高可用性管理员集群 |
使用 |
不受影响 |
不受影响 |
包含 |
具有相同类型负载均衡器的 HA 管理员集群 |
受影响 |
不受影响 |
使用 F5 BIG-IP 的非 HA 管理员集群 |
使用 |
受影响 |
不受影响 |
使用 Seesaw 的非 HA 管理员集群 |
带有 MetalLB 的 HA 管理员集群 |
受影响 |
不受影响 |
- 受影响:迁移期间服务中断明显。
- 不受影响:服务中断不会发生,或者几乎不会被察觉。
迁移准备工作
如果您的管理员集群是非高可用集群,请按照本部分中的步骤准备迁移到高可用集群。如果您的管理员集群已具有高可用性,请跳转到下一部分为负载均衡器迁移做好准备。
分配额外的 IP 地址
将管理员集群从非 HA 迁移到 HA 时,请额外分配四个 IP 地址。确保这些 IP 地址与现有管理员集群节点位于同一 VLAN,并且未被任何现有节点使用:
- 为新控制平面 VIP 分配一个 IP 地址,并在管理员集群配置文件中的
loadBalancer.vips.controlPlaneVIP
字段中指定该 IP 地址。 - 为管理员集群配置文件中的
network.controlPlaneIPBlock
部分,为三个控制平面节点中的每一个分配新的 IP 地址。
更新防火墙规则
将管理员集群从非高可用性集群迁移到高可用性集群时,请更新管理员集群上的防火墙规则。这样可确保为控制平面节点新分配的 IP 地址可以访问所有必需的 API 和其他目的地,如管理员集群的防火墙规则中所述。
为负载均衡器迁移做好准备
如果您的管理员集群使用的是集成式 F5 BIG-IP 配置或捆绑式 Seesaw 负载均衡器,请按照本部分中的步骤对管理员集群配置文件进行必要的更改。否则,请跳转到下一部分:准备从非 HA 迁移到 HA。
F5 BIG-IP
如果您的管理员集群使用的是集成 F5 BIG-IP 配置,请对管理员集群配置文件进行以下更改:
- 将
loadBalancer.kind
字段设置为"ManualLB"
。 - 设置或保留
loadBalancer.vips.controlPlaneVIP
字段的值。如果您的管理员集群已具有高可用性,请保持相同的值。如果您要从非 HA 管理员集群迁移到 HA 管理员集群,请将loadBalancer.vips.controlPlaneVIP
字段的值更改为您分配的 IP 地址。 - 删除整个
loadBalancer.f5BigIP
部分。
以下管理员集群配置文件示例显示了这些更改:
loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind:"F5BigIP""ManualLB"f5BigIP: address: "203.0.113.20" credentials: fileRef: path: ""my-config-folder/user-creds.yaml" entry: "f5-creds" partition: "my-f5-user-partition"
Seesaw
如果您的管理员集群使用 Seesaw 负载均衡器,请对管理员集群配置文件进行以下更改:
- 将
loadBalancer.kind
字段设置为“MetalLB”。 - 保留
network.hostConfig
部分。 - 设置或保留
loadBalancer.vips.controlPlaneVIP
]5 字段的值。如果您的管理员集群已是高可用集群,您可以保留相同的值。如果从非 HA 管理员集群迁移到 HA 管理员集群,请将loadBalancer.vips.controlPlaneVIP
字段的值更改为您分配的 IP 地址。 - 移除
loadBalancer.seesaw
部分。
以下管理员集群配置文件示例显示了这些更改:
network: hostConfig: dnsServers: - "203.0.113.1" - "203.0.113.2" ntpServers: - "203.0.113.3" loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind: "MetalLB""Seesaw"seesaw: ipBlockFilePath: "user-cluster-1-ipblock.yaml" vrid: 1 masterIP: "" cpus: 4 memoryMB: 3072
准备从非高可用性集群迁移到高可用性集群
如果您的管理员集群是非高可用集群,请按照本部分中的步骤准备迁移到高可用集群。
如果您的管理员集群已是高可用集群,请跳至下一部分迁移管理员集群。
如果您的管理员集群版本为 1.29.0-1.29.600 或 1.30.0-1.30.100,并且如果在 1.14 或更低版本的管理员集群中启用了始终启用的密钥加密,则您必须先轮替加密密钥,然后再开始迁移。否则,新的高可用性管理员集群将无法解密 Secret。
如需检查集群是否可能使用旧的加密密钥,请执行以下操作:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get secret -n kube-system admin-master-component-options -o jsonpath='{.data.data}' | base64 -d | grep -oP '"GeneratedKeys":\[.*?\]'
如果输出显示空密钥(如以下示例),则必须轮替加密密钥。
"GeneratedKeys":[{"KeyVersion":"1","Key":""}]
按需轮替加密密钥
如果上一部分中的步骤显示您需要轮替加密密钥,请执行以下步骤:
在管理员集群配置文件中增加
keyVersion
。更新管理员集群:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config ADMIN_CLUSTER_CONFIG
这将创建与新版本号匹配的新密钥,重新加密每个 Secret,并安全地清除旧 Secret。所有后续的新 Secret 均使用新的加密密钥进行加密。
更新管理员集群配置文件
对管理员集群配置文件进行以下更改:
- 使用您为控制平面节点分配的三个 IP 地址填充
network.controlPlaneIPBlock
。 - 确保您已填写
network.hostConfig
部分。本部分包含有关集群节点虚拟机使用的 NTP 服务器、DNS 服务器和 DNS 搜索网域的信息。 - 请确保您已将
loadBalancer.vips.controlPlaneVIP
的值替换为您分配的 IP 地址。 - 将
adminMaster.replicas
设置为 3。 - 移除
vCenter.dataDisk
字段。对于高可用性管理员集群,控制平面节点使用的三个数据磁盘的路径会在数据存储区根目录anthos
下自动生成。 - 如果
loadBalancer.kind
设置为"ManualLB"
,请将loadBalancer.manualLB.controlPlaneNodePort
设置为 0。
以下管理员集群配置文件示例显示了这些更改:
vCenter: address: "my-vcenter-server.my-domain.example" datacenter: "my-data-center"dataDisk: "xxxx.vmdk"... network: hostConfig: dnsServers: – 203.0.113.1 – 203.0.113.2 ntpServers: – 203.0.113.3 ... controlPlaneIPBlock: netmask: "255.255.255.0" gateway: "198.51.100.1" ips: – ip: "192.0.2.1" hostname: "admin-cp-hostname-1" – ip: "192.0.2.2" hostname: "admin-cp-hostname-2" – ip: "192.0.2.3" hostname: "admin-cp-hostname-3" ... ... loadBalancer: vips: controlPlaneVIP:192.0.2.6192.0.2.50 kind: ManualLB manualLB:controlPlaneNodePort: 300030 ... adminMaster: replicas: 3 cpus: 4 memoryMB: 8192 ...
如有需要,请调整负载均衡器中的映射
如果您的管理员集群一直在使用手动负载均衡,请完成本部分中的步骤。
如果您要从集成的 F5 BIG-IP 迁移到手动负载均衡,或者要迁移到 MetalLB,请跳到下一部分迁移管理集群。
对于您在 network.controlPlaneIPBlock
部分中指定的三个新控制平面节点 IP 地址中的每一个,请在外部负载均衡器(例如 F5 BIG-IP 或 Citrix)中配置此映射:
(old controlPlaneVIP:443) -> (NEW_NODE_IP_ADDRESS:old controlPlaneNodePort)
这可确保旧的控制平面 VIP 在迁移期间继续正常运行。
迁移管理员集群
仔细查看您对管理员集群配置文件所做的所有更改。除非更新集群以进行迁移,否则所有设置都是不可变的。
更新集群:
gkectl update admin --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
--config ADMIN_CLUSTER_CONFIG
Replace the following
:
ADMIN_CLUSTER_KUBECONFIG
:管理员集群 kubeconfig 文件的路径。ADMIN_CLUSTER_CONFIG
:管理员集群配置文件的路径。
该命令会显示迁移进度。
当系统提示时,输入 Y
以继续。
在从非 HA 迁移到 HA 期间,旧的控制平面 VIP 会继续运行,并且可用于访问新的高可用性管理员集群。迁移完成后,管理员集群的 kubeconfig 文件会自动更新为使用新的控制平面 VIP。
迁移后
更新完成后,验证管理员集群是否正在运行:
kubectl get nodes --kubeconfig ADMIN_CLUSTER_KUBECONFIG
预期输出如下所示:
负载均衡器迁移
如果您迁移了负载均衡器,请验证负载均衡器组件是否已成功运行。
MetalLB
如果您已迁移到 MetalLB,请使用以下命令验证 MetalLB 组件是否已成功运行:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
--namespace kube-system --selector app=metallb
输出结果会显示 MetalLB 控制器和发言者的 Pod。例如:
metallb-controller-744884bf7b-rznr9 1/1 Running
metallb-speaker-6n8ws 1/1 Running
metallb-speaker-nb52z 1/1 Running
metallb-speaker-rq4pp 1/1 Running
迁移成功后,请删除管理集群的已关停 Seesaw 虚拟机。您可以在配置目录的 seesaw-for-gke-admin.yaml
文件的 vmnames
部分中找到 Seesaw 虚拟机名称。
ManualLB
将集群更新为使用手动负载均衡后,集群的流量不会中断。这是因为现有的 F5 资源仍然存在,您可以通过运行以下命令来查看:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
预期输出如下所示:
Warning: v1 ComponentStatus is deprecated in v1.19+
NAMESPACE NAME TYPE DATA AGE
kube-system secret/bigip-login-xt697x Opaque 4 13h
NAMESPACE NAME SECRETS AGE
kube-system serviceaccount/bigip-ctlr 0 13h
kube-system serviceaccount/load-balancer-f5 0 13h
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/k8s-bigip-ctlr-deployment 1/1 1 1 13h
kube-system deployment.apps/load-balancer-f5 1/1 1 1 13h
NAME ROLE AGE
clusterrolebinding.rbac.authorization.k8s.io/bigip-ctlr-clusterrole-binding ClusterRole/bigip-ctlr-clusterrole 13h
clusterrolebinding.rbac.authorization.k8s.io/load-balancer-f5-clusterrole-binding ClusterRole/load-balancer-f5-clusterrole 13h
NAME CREATED AT
clusterrole.rbac.authorization.k8s.io/bigip-ctlr-clusterrole 2024-03-25T04:37:34Z
clusterrole.rbac.authorization.k8s.io/load-balancer-f5-clusterrole 2024-03-25T04:37:34Z