升级集群

本页概述了升级 Kubernetes 集群应遵循的步骤。

升级集群的方式取决于您最初部署的方式以及任何后续更改。

总的来说,您执行的步骤是

  • 升级 控制平面
  • 升级集群中的节点
  • 升级客户端,例如 kubectl
  • 根据新 Kubernetes 版本随附的 API 更改调整清单和其他资源

开始之前

您必须拥有一个现有的集群。本页介绍如何从 Kubernetes 1.30 升级到 Kubernetes 1.31。如果您当前的集群未运行 Kubernetes 1.30,请查看您计划升级到的 Kubernetes 版本的文档。

升级方法

kubeadm

如果您使用 kubeadm 工具部署了集群,请参考 升级 kubeadm 集群,了解有关如何升级集群的详细信息。

升级集群后,请务必 安装最新版本的 kubectl

手动部署

您应该按照以下顺序手动更新控制平面

  • etcd(所有实例)
  • kube-apiserver(所有控制平面主机)
  • kube-controller-manager
  • kube-scheduler
  • 云控制器管理器(如果您使用了一个)

此时,您应该 安装最新版本的 kubectl

对于集群中的每个节点,请 排干该节点,然后用使用 1.31 kubelet 的新节点替换它,或者升级该节点上的 kubelet 并将该节点重新投入服务。

其他部署

请参阅集群部署工具的文档,了解有关维护的推荐设置步骤。

升级后任务

切换集群的存储 API 版本

集群内部表示 Kubernetes 资源的活动状态的 etcd 中序列化对象使用特定版本的 API 编写。

当支持的 API 发生变化时,可能需要使用较新的 API 重新编写这些对象。如果不这样做,最终会导致 Kubernetes API 服务器无法解码或使用的资源。

对于每个受影响的对象,使用最新的支持的 API 获取它,然后使用最新的支持的 API 重新写入它。

更新清单

升级到新的 Kubernetes 版本可以提供新的 API。

您可以使用 kubectl convert 命令在不同 API 版本之间转换清单。例如

kubectl convert -f pod.yaml --output-version v1

kubectl 工具会将 pod.yaml 的内容替换为一个清单,该清单将 kind 设置为 Pod(不变),但 apiVersion 已修改。

设备插件

如果您的集群正在运行设备插件,并且节点需要升级到具有更新设备插件 API 版本的 Kubernetes 版本,则必须在升级节点之前将设备插件升级为支持这两个版本,以确保在升级过程中设备分配继续成功完成。

请参阅 API 兼容性Kubelet 设备管理器 API 版本,了解详细信息。

上次修改时间:2023 年 9 月 14 日,太平洋标准时间下午 9:39:建议在更新 kubelet 之前排干节点 (20cfb80cf9)