将用户集群迁移到 Controlplane V2

本文档介绍如何使用 kubeception 将 1.29 版或更高版本的用户集群迁移到 Controlplane V2。

1.29:预览版
1.28:不可用
1.16:不可用

用户集群控制平面简介

在 Google Distributed Cloud 1.13 版之前,用户集群的控制平面在管理员集群中的一个或多个节点上运行。这种控制平面称为 kubeception。在 1.13 版中,为新用户集群引入了 Controlplane V2。启用 Controlplane V2 后,用户集群的控制平面会在用户集群中运行。

Controlplane V2 具有以下优势:

  • 故障隔离。管理员集群故障不会影响用户集群。

  • 运维分离。管理员集群升级不会导致用户集群停机。

  • 部署分离。您可以将管理员集群和用户集群放在不同的故障域或地理站点中。例如,位于边缘位置的用户集群可能与管理员集群位于不同的地理位置。

使用要求

如需将用户集群迁移到控制平面 V2,用户集群必须满足以下要求:

  • 用户集群必须为 1.29 或更高版本。管理员集群和节点池可以比用户集群低一个或两个次要版本。如果需要,请升级集群

  • 用户集群必须启用 Dataplane V2。此字段不可更改,因此如果集群上未启用 Dataplane V2,您无法将其迁移到 Controlplane V2。

  • 用户集群必须配置为使用 MetalLB 或手动负载均衡器。如果用户集群使用的是 SeeSaw 负载均衡器,您可以将其迁移到 MetalLB

  • 查看 IP 地址规划文档,并确保您有足够的 IP 地址供用户集群的控制平面节点使用。控制平面节点需要静态 IP 地址,并且您需要一个额外的 IP 地址来获取新的控制平面虚拟 IP (VIP)。

更新用户集群配置文件

对现有用户集群配置文件进行以下更改:

  1. enableControlplaneV2 设置为 true。

  2. (可选)将控制平面 V2 用户集群的控制平面设为高可用性 (HA)。如需从非高可用性集群更改为高可用性集群,请将 masterNode.replicas 从 1 更改为 3。

  3. 将用户集群控制平面节点的一个或多个静态 IP 地址添加到 network.controlPlaneIPBlock.ips 部分。从管理员集群 IP 块文件中移除 kubeception 用户集群控制平面节点的一个或多个 IP 地址。

  4. network.controlPlaneIPBlock 部分中填写网络掩码和网关。

  5. 如果 network.hostConfig 部分为空,请进行填写。

  6. 如果用户集群使用手动负载均衡,请将负载均衡器配置为包含数据平面流量的控制平面节点 IP

    • (ingressVIP:80) -> (CP_NODE_IP_ADDRESSES:ingressHTTPNodePort)
    • (ingressVIP:443) -> (CP_NODE_IP_ADDRESSES:ingressHTTPSNodePort)
  7. 使用控制平面 VIP 的新 IP 地址更新 loadBalancer.vips.controlPlaneVIP 字段。

  8. 除非为迁移更新集群,否则上述所有字段都是不可变的。请务必仔细检查所有设置。

  9. 运行 gkectl diagnose cluster,然后修复该命令发现的任何问题。

    gkectl diagnose cluster --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
          --cluster-name=USER_CLUSTER_NAME

    请替换以下内容:

    • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径

    • CLUSTER_NAME:用户集群的名称。

调整手动负载均衡器配置

如果用户集群使用手动负载均衡,请执行本部分中的步骤。 否则,请跳过此部分。

与为 CPv2 用户集群配置负载均衡器类似,对于您在 network.controlPlaneIPBlock 部分中指定的三个新控制平面节点 IP 地址,每个地址均在负载均衡器中配置映射:

  • (ingressVIP:80) -> (NEW_NODE_IP_ADDRESS:ingressHTTPNodePort)
  • (ingressVIP:443) -> (NEW_NODE_IP_ADDRESS:ingressHTTPNodePort)

更新集群

运行以下命令,将集群迁移到 Controlplane V2:

gkectl update cluster \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG

请替换以下内容:

  • ADMIN_CLUSTER_KUBECONFIG:管理员集群 kubeconfig 文件的路径。

  • USER_CLUSTER_CONFIG:用户集群配置文件的路径。