vSphere with Tanzu 支持对 主管 和 Tanzu Kubernetes Grid 集群以及支持这些集群的基础架构执行滚动更新。
如何更新 主管 和 Tanzu Kubernetes Grid 集群
vSphere with Tanzu 对 主管 和 Tanzu Kubernetes Grid 集群使用滚动更新模型。滚动更新模型可确保在更新过程中将集群工作负载的停机时间降至最低。滚动更新包括升级 Kubernetes 软件版本以及支持 Kubernetes 集群的基础架构和服务,如虚拟机配置和资源、vSphere 命名空间 以及自定义资源。
主管 更新和 Tanzu Kubernetes Grid 集群更新之间的依赖关系
您可以单独更新 主管 和 Tanzu Kubernetes Grid 集群。但是请注意,这两者之间存在依赖关系。
更新 主管 可能会触发在其中部署的 Tanzu Kubernetes Grid 集群的滚动更新。请参见通过执行 vSphere 命名空间 更新来更新 主管。
如果 Tanzu Kubernetes Grid 集群与目标 主管 版本不兼容,您可能需要在更新 主管 之前先更新一个或多个 Tanzu Kubernetes Grid 集群。请参见针对 主管 的升级验证 Tanzu Kubernetes Grid 集群兼容性。
关于 主管 更新
启动 主管 更新时,系统将创建一个新的控制平面虚拟机,并将其加入到现有的 主管 控制平面。在此更新阶段,vSphere 清单显示四个控制平面虚拟机,因为系统会添加新的更新虚拟机,然后移除旧的过期虚拟机。对象将从一个旧的控制平面虚拟机迁移到该新的控制平面虚拟机,并移除旧的控制平面虚拟机。此过程逐个重复执行,直到所有控制平面虚拟机都已更新。所有控制平面虚拟机全部更新后,将以类似的滚动更新方式更新工作节点。工作节点是 ESXi 主机,每个 ESXi 主机上的每个 spherelet 进程逐个进行更新。
- 更新 vSphere 命名空间。
- 更新所有内容,包括 VMware 和 Kubernetes 版本。
更新 vSphere 命名空间
- 升级 vCenter Server。
- 执行 vSphere 命名空间 更新(包括 Kubernetes 升级)。
要执行 vSphere 命名空间 更新,请参见通过执行 vSphere 命名空间 更新来更新 主管。
更新所有 vSphere with Tanzu 组件
可以使用更新所有内容工作流更新所有 vSphere with Tanzu 组件。更新主要版本(例如从 NSX-T 3.X 更新到 4 以及从 vSphere 7.x 更新到 8)时,需要使用此类型的更新。
- 检查 VMware 互操作性列表 (https://interopmatrix.vmware.com/Interoperability) 中的 vCenter Server 和 NSX 以确定兼容性。vSphere with Tanzu 功能由随 vCenter Server 提供的工作负载控制平面 (WCP) 软件提供。
- 升级 NSX(如果兼容)。
- 升级 vCenter Server。
- 升级 vSphere Distributed Switch。
- 升级 ESXi 主机。
- 检查任何已置备的 Tanzu Kubernetes Grid 集群与目标 主管 版本的兼容性。
- 更新 vSphere 命名空间(包括 主管 Kubernetes 版本)。
- 更新 Tanzu Kubernetes Grid 集群。
关于 Tanzu Kubernetes Grid 集群更新
更新 主管 时,还会更新支持部署到该 主管 的 Tanzu Kubernetes Grid 集群的基础架构组件(如 Tanzu Kubernetes Grid 2.0)。每个基础架构更新都可以包括支持 Tanzu Kubernetes Grid 2.0 的服务(CNI、CSI、CPI)的更新,以及可应用于现有 Tanzu Kubernetes Grid 集群的控制平面虚拟机和工作节点的更新配置设置。为确保您的配置符合兼容性要求,vSphere with Tanzu 会在滚动更新期间执行预检查并实施合规性。
要对 Tanzu Kubernetes Grid 集群执行滚动更新,需要更新集群清单。请参见更新主管上的 TKG 2 集群。但是,请注意,执行 vSphere 命名空间 更新时,系统会立即将更新的配置传播到所有 Tanzu Kubernetes Grid 集群。这些更新可自动触发 Tanzu Kubernetes Grid 控制平面和工作节点的滚动更新。
用于替换集群节点的滚动更新过程类似于 Kubernetes 部署中的 pod 滚动更新。有两个不同的控制器负责执行 Tanzu Kubernetes Grid 集群的滚动更新:加载项控制器和 TanzuKubernetesCluster 控制器。在这两个控制器中,滚动更新有三个关键阶段:更新加载项、更新控制平面以及更新工作节点。这些阶段按顺序进行,并执行预检查以防止某一步骤在前一步骤充分完成之前开始。如果确定不需要执行这些步骤,则可以跳过这些步骤。例如,更新可能仅影响工作节点,因此不需要任何加载项或控制平面更新。
在更新过程中,系统会添加一个新的集群节点,并等待该节点与目标 Kubernetes 版本一起上线。然后,系统将旧节点标记为删除,移至下一个节点,并重复此过程。移除所有 pod 后,才会删除旧节点。例如,如果 pod 定义为 PodDisruptionBudgets 以阻止某节点完全引流,则该节点将隔离,直到可以逐出这些 pod 后才会移除。系统首先升级所有控制平面节点,然后再升级工作节点。在更新过程中,Tanzu Kubernetes Grid 集群状态将更改为“正在更新”。滚动更新过程完成后,Tanzu Kubernetes Grid 集群状态将更改为“正在运行”。
在 Kubernetes 版本升级过程中,在不受复制控制器监管的 Tanzu Kubernetes Grid 集群上运行的 Pod 将在 Tanzu Kubernetes Grid 集群更新期间作为工作节点引流过程的一部分删除。如果手动触发集群更新或由 vSphere 命名空间 更新自动触发,则会出现此情况。不受复制控制器监管的 Pod 包括不作为 Deployment 或 ReplicaSet 规范的一部分创建的 Pod。有关详细信息,请参考 Kubernetes 文档中的 Pod 生命周期:Pod 生命周期主题。