规划将集群迁移到推荐功能

概览

Google Distributed Cloud 基于 Kubernetes 和许多其他相关技术,这些技术会不断更新和改进,以提供更好的可伸缩性、性能、安全性和集成功能。因此,Google Distributed Cloud 会不断进行调整和改进。

在版本 1.30 中,我们强烈建议您迁移旧版部署,以利用重大改进。本页面介绍了从过时功能迁移到最新推荐功能的好处。

您可以为每个功能区域选择以下选项:

功能区域 推荐选项 原始选项
容器网络接口 (CNI)
  • Dataplane V2
    (enableDataplaneV2: true)
  • Dataplane V1 (Calico)
    (enableDataplaneV2: false)
负载均衡器
  • ManualLB(适用于 F5 Big IP 代理)
    (loadBalancer.kind: "ManualLB")
  • MetalLB
    (loadBalancer.kind: "MetalLB")
  • 集成式 F5 Big IP1
    (loadBalancer.kind: "F5BigIP")
  • Seesaw
    (loadBalancer.kind: "Seesaw")
管理员集群控制平面
  • 高可用性 (HA) 管理员集群
    (adminMaster.replicas: 3)
  • 非 HA 管理员集群
    (adminMaster.replicas: 1)
用户集群控制平面
  • Controlplane V2
    (enableControlplaneV2: true)
  • Kubeception 用户集群
    (enableControlplaneV2: false)

1 集成式 F5 BIG-IP 是指集群配置文件中 loadBalancer.f5BigIP 部分中的 loadBalancer.kind: "F5BigIP" 和相关设置。

下表显示了管理员集群和用户集群中这些功能的支持矩阵:

集群类型 过时的功能 为新集群添加 允许集群升级 迁移到新功能
1.32 版及更高版本
管理员 非 HA 否 否 不适用
Seesaw 否 否 不适用
集成式 F5 Big IP 否 否 不适用
用户 Kubeception 否 否 不适用
Seesaw 否 否 不适用
集成式 F5 Big IP 否 否 不适用
Dataplane V1 否 否 不适用
1.30 版和 1.31 版
管理员 非 HA 否 是 是
Seesaw 否 是 是
集成式 F5 Big IP 否 是 是
用户 Kubeception 否 是 是
Seesaw 否 是 是
集成式 F5 Big IP 否 是 是
Dataplane V1 否 是 是
版本 1.29
管理员 非 HA 否 是 是(预览版)
Seesaw 否 是 是
集成式 F5 Big IP 是 是 是(预览版)
用户 Kubeception 是 是 是(预览版)
Seesaw 是 是 是
集成式 F5 Big IP 是 是 是(预览版)
Dataplane V1 是 是 否
版本 1.28
管理员 非 HA 否 是 否
Seesaw 否 是 是
集成式 F5 Big IP 是 是 否
用户 Kubeception 是 是 否
Seesaw 是 是 是
集成式 F5 Big IP 是 是 否
Dataplane V1 是 是 否

要点:

  • 从 1.30 版开始,所有迁移解决方案都可以将集群迁移到推荐的替代方案。
  • 创建新集群时,以下版本不允许使用原始功能:

    • 管理员集群:

      • 非 HA 控制平面:1.28 及更高版本
      • Seesaw 负载均衡:1.28 及更高版本
      • 集成式 F5 Big IP:1.30 及更高版本
    • 用户集群:

      • Kubeception:1.30 及更高版本
      • Seesaw:1.30 及更高版本
      • 集成式 F5 Big IP:1.30 及更高版本
      • Dataplane V1:1.30 及更高版本
  • 您仍然可以使用原始功能升级现有集群。

将用户集群迁移到 Dataplane V2

您可以选择提供容器网络功能的容器网络接口 (CNI),即 Calico 或 Dataplane V2。Dataplane V2 是 Google 的 CNI 实现,基于 Cilium,在 Google Kubernetes Engine (GKE) 和 Google Distributed Cloud 中均有使用。

Dataplane V2 提供经过优化的设计和高效的资源利用率,从而提高网络性能和可伸缩性,尤其是对于具有高网络流量需求的大型集群或环境。我们强烈建议您将集群迁移到 Dataplane V2,以获取最新的功能、网络创新和功能。

从 1.30 版开始,数据平面 V2 是创建新集群的唯一 CNI 选项。

从 Calico 迁移到 Dataplane V2 需要进行规划和协调,但其设计目的是不会导致现有工作负载出现停机时间。通过主动迁移到 Dataplane V2,您可以从以下方面获益:

  • 提升性能和可伸缩性:Dataplane V2 的优化设计和高效资源利用可提高网络性能和可伸缩性,尤其是在大型集群或网络流量需求较高的环境中。这是因为使用了 EBPF 而非 IPTables,这使得集群可以使用 BPF 映射进行扩缩。

  • 简化管理和支持:在 Google Distributed Cloud 和 GKE 中对 Dataplane V2 进行标准化可以简化集群管理和问题排查,因为您可以依赖一组一致的工具和文档。

  • 高级网络功能:EgressNAT 和其他高级网络功能仅在 Dataplane V2 上受支持。日后所有网络请求都将在 Dataplane V2 层中实现。

迁移前 迁移后
kube-proxy 必需且自动部署 非必需且未部署
路由 kube-proxy + iptables eBPF

迁移负载均衡器类型

建议使用的负载均衡器类型 (loadBalancer.kind) 为 "ManualLB" 和 "MetalLB"。如果您有第三方负载均衡器(例如 F5 BIG-IP 或 Citrix),请使用 "ManualLB"。将 "MetalLB" 用于捆绑式负载均衡解决方案,该解决方案使用 MetalLB 负载均衡器。

从 1.30 版开始,这些是创建新集群的唯一选项。对于使用集成式 F5 Big IP 或捆绑式 Seesaw 负载均衡器的现有集群,我们提供了迁移指南,用于将 "F5BigIP" 配置设置迁移到 "ManualLB",并将捆绑式负载均衡器从 Seesaw 迁移到 MetalLB。

迁移 F5 BIG-IP 负载均衡器的配置设置

计划将使用集成式 F5 Big IP 的所有集群迁移到 ManualLB。集成式 F5 Big IP 使用 F5 BIG-IP 和负载均衡器代理,后者由以下两个控制器组成:

  • F5 控制器 (pod prefix: load-balancer-f5):将 LoadBalancer 类型的 Kubernetes 服务协调到 F5 通用控制器核心库 (CCCL) ConfigMap 格式。
  • F5 BIG-IP CIS Controller v1.14 (pod prefix: k8s-bigip-ctlr-deployment):将 ConfigMap 转换为 F5 负载均衡器配置。

原始的集成式 F5 Big IP 存在以下限制:

  • 表现力受限:集成式 F5 Big IP 会限制 Service API 的表现力,从而限制 F5 BIG-IP 的全部潜力。这样一来,您就无法根据自己的特定需求配置 BIG-IP 控制器,也无法利用可能对您的应用至关重要的高级 F5 功能。
  • 旧版组件:当前实现依赖于旧版技术,例如 CCCL ConfigMap API 和 1.x CIS。这些旧版组件可能与 F5 产品的最新改进不兼容,可能会导致错失提升性能和增强安全性的机会。

从集成式 F5 BIG-IP 迁移到 ManualLB 后,会发生以下变化:

迁移前 迁移后
F5 代理组件
  • F5 控制器
  • OSS CIS 控制器
  • F5 控制器(无变化)
  • OSS CIS 控制器(无变化)
F5 组件版本升级 您必须升级集群才能升级 F5 组件。如前所述,可用的组件版本数量有限。 您可以根据需要升级 F5 组件版本。
服务创建 由 F5 代理处理 由 F5 代理处理(无变化)

从 Seesaw 迁移到 MetalLB

与 Seesaw 相比,MetalLB 具有以下优势:

  • 简化管理并减少资源:与 Seesaw 不同,MetalLB 直接在集群节点上运行,可动态使用集群资源进行负载均衡。
  • 自动 IP 分配:MetalLB 控制器为 Service 进行 IP 地址管理,因此您无需为每个 Service 手动选择 IP 地址。
  • 在 LB 节点之间进行负载分布:不同 Service 的 MetalLB 的活跃实例可以在不同的节点上运行。
  • 增强的功能和面向未来的解决方案:与 Seesaw 相比,MetalLB 的活跃开发和与更广泛的 Kubernetes 生态系统的集成使其成为更具前瞻性的解决方案。使用 MetalLB 可确保您能够利用负载均衡技术的最新进展。
迁移前 迁移后
LB 节点 额外的 Seesaw 虚拟机(集群外) 具有客户选择的集群内 LB 节点
保留客户端 IP 可通过 externalTrafficPolicy: Local 实现 可通过 DataplaneV2 DSR 模式实现
服务创建 手动指定的服务 IP 从地址池自动分配的服务 IP

将用户集群迁移到 Controlplane V2,并将管理员集群迁移到高可用集群

我们建议为用户集群使用 Controlplane V2 控制平面。使用 Controlplane V2 时,控制平面在用户集群本身的一个或多个节点上运行。通过称为 kubeception 的旧版控制平面,用户集群的控制平面在管理集群中运行。kubeception如需创建高可用性 (HA) 管理员集群,您的用户集群必须启用 Controlplane V2。

从 1.30 版开始,新用户集群必须启用 Controlplane V2,而新管理员集群将具有高可用性。我们仍支持使用旧版控制平面升级用户集群,也支持升级非 HA 管理员集群。

将用户集群迁移到 Controlplane V2

过去,用户集群使用的是 kubeception。1.13 版引入了 Controlplane V2 作为预览版功能,该功能在 1.14 版中过渡为正式版。从 1.15 版开始,Controlplane V2 已成为创建用户集群的默认选项,并且在 1.30 版中,Controlplane V2 是唯一的选项。

与 kubeception 相比,Controlplane V2 的优势包括:

  • 架构一致性:管理员集群和用户集群使用相同的架构。
  • 故障隔离:管理员集群故障不会影响用户集群。
  • 操作分离:管理员集群升级不会导致用户集群停机。
  • 部署隔离:您可以将管理员集群和用户集群放在不同的拓扑域或多个位置。例如,在边缘计算部署模型中,用户集群可能与管理员集群位于不同的位置。

在迁移期间,现有用户集群工作负载不会出现停机时间。在切换到 Controlplane V2 期间,控制平面将经历最短的停机时间,具体取决于您的底层 vSphere 环境。迁移过程会执行以下操作:

  • 在用户集群中创建新的控制平面。
  • 从旧的控制平面复制 etcd 数据。
  • 将现有节点池节点(也称为工作节点)转换为新的控制平面。
迁移前 迁移后
控制平面 Kubernetes 节点对象 管理员集群节点 用户集群节点
Kubernetes 控制平面 Pod 管理员集群的 Statefulset/Deployment(用户集群命名空间) 用户集群静态 Pod(kube-system 命名空间)
其他控制平面 Pod 管理员集群的 Statefulset/Deployment(用户集群命名空间) 用户集群的 Statefulset/Deployment(kube-system 命名空间)
控制平面 VIP 管理员集群负载均衡器服务 keepalived + haproxy(用户集群静态 Pod)
Etcd 数据 管理员集群永久性卷 数据磁盘
控制平面机器 IP 管理 IPAM 或 DHCP IPAM
控制平面网络 管理员集群 VLAN 用户集群 VLAN

迁移到高可用性管理员集群

过去,管理员集群只能运行一个控制平面节点,从而造成单点故障的固有风险。除了一个控制平面节点之外,非 HA 管理员集群还有两个插件节点。HA 管理员集群有三个控制平面节点,没有插件节点,因此新管理员集群所需的虚拟机数量没有变化,但可用性显著提高。从 1.16 版开始,您可以使用高可用性 (HA) 管理员集群,该集群在 1.28 版中成为创建新集群的唯一选项。

迁移到高可用性管理员集群可提供以下优势:

  • 提高了可靠性和正常运行时间:高可用性配置消除了单点故障,即使其中一个控制平面节点遇到问题,管理员集群也能保持运行。
  • 增强的升级和更新体验:升级和更新管理员集群所需的所有步骤现在都在集群中运行,而不是在单独的管理员工作站中运行。这样可以确保即使与管理员工作站的初始会话可能会中断,升级和更新也会继续进行。
  • 可靠的集群状态可信来源:非 HA 管理员集群依赖于带外“检查点文件”来存储管理员集群状态。相比之下,HA 管理员集群会将最新的集群状态存储在管理员集群本身中,为集群状态提供更可靠的真实来源。

您可以选择将非高可用性管理员集群迁移到高可用性管理员集群,这不会导致用户工作负载停机。此过程会对现有用户集群造成最小的停机时间和中断,主要与控制平面切换相关。迁移过程会执行以下操作:

  • 创建新的 HA 控制平面。
  • 从现有的非 HA 集群恢复 etcd 数据。
  • 将用户集群转换为新的高可用性管理员集群。
迁移前 迁移后
控制平面节点副本 1 3
插件节点 2 0
数据磁盘大小 100GB * 1 25GB * 3
数据磁盘路径 由管理员集群配置文件中的 vCenter.dataDisk 设置 在以下目录下自动生成: /anthos/[ADMIN_CLUSTER_NAME]/default/[MACHINE_NAME]-data.vmdk
控制平面 VIP 通过管理员集群配置文件中的 loadBalancer.kind 设置 keepalived + haproxy
为管理员集群控制平面节点分配 IP 地址 DHCP 或静态 IP,具体取决于 network.ipMode.type 3 个静态 IP 地址

将负载均衡器和控制平面迁移整合为一组

通常,在更新集群时,我们建议您一次只更新一项功能或设置。不过,在 1.30 版及更高版本中,您可以将负载均衡器和控制平面迁移的配置更改整合为一组,然后只需更新一次集群即可完成这两项更改。

如果您的用户集群使用的是旧版 CNI,您需要先迁移到 DataPlane V2。之后,您可以将负载均衡器和控制平面的迁移整合为一组。将迁移整合为一组可带来以下优势:

  • 更简单的流程:如果您需要同时迁移控制平面和负载均衡器,通常只需更新一次集群即可。您无需决定需要优先迁移哪些功能。
  • 缩短总停机时间:某些迁移会存在控制平面停机时间,因此将这些迁移组合到一个更新操作中比起依序执行单独的更新,可以缩短总停机时间。

此过程因集群配置而异。总体而言,请按以下步骤为每个集群执行迁移:

  1. 迁移每个用户集群以使用推荐的 CNI (Dataplane V2)。

    1. 进行配置更改并更新用户集群,以触发将用户集群从旧版 CNI (Calico) 迁移到 Dataplane V2 的操作。

  2. 将每个用户集群从旧版负载均衡器 (LB) 和旧版控制平面 (CP) 迁移到推荐的负载均衡器和 Controlplane V2。

    1. 进行配置更改以使用建议的负载均衡器(MetalLB 或 ManualLB)。
    2. 进行配置更改以启用 Controlplane V2。
    3. 更新用户集群以迁移负载均衡器和控制平面。
  3. 迁移管理员集群,以使用推荐的负载均衡器并使控制平面具有高可用性。

    1. 进行配置更改以使用建议的负载均衡器(MetalLB 或 ManualLB)。
    2. 进行配置更改,将管理员集群的控制平面从非 HA 迁移到 HA。
    3. 更新管理员集群以迁移负载均衡器和控制平面。
  4. 执行可选的清理步骤,例如清理非 HA 控制平面虚拟机。

下图演示了迁移步骤:

迁移到推荐功能的步骤

如果您的管理员集群和所有用户集群均为 1.30 版或更高版本,您可以使用组迁移流程。如需了解详细步骤,请参阅以下指南: