升级集群
本页概述了升级 Kubernetes 集群应遵循的步骤。
升级集群的方式取决于您最初如何部署它以及任何后续更改。
概括地说,您需要执行以下步骤
准备工作
您必须有一个现有的集群。本页介绍如何从 Kubernetes 1.29 升级到 Kubernetes 1.30。如果您的集群当前未运行 Kubernetes 1.29,请查看您计划升级到的 Kubernetes 版本的文档。
升级方法
kubeadm
如果您的集群是使用 kubeadm
工具部署的,请参阅升级 kubeadm 集群,了解有关如何升级集群的详细信息。
升级集群后,请记住安装最新版本的 kubectl
。
手动部署
注意
这些步骤不考虑第三方扩展,例如网络和存储插件。您应该按照以下顺序手动更新控制平面
- etcd(所有实例)
- kube-apiserver(所有控制平面主机)
- kube-controller-manager
- kube-scheduler
- 云控制器管理器(如果您使用的话)
此时,您应该安装最新版本的 kubectl
。
对于集群中的每个节点,请驱逐该节点,然后将其替换为使用 1.30 kubelet 的新节点,或者升级该节点上的 kubelet 并将该节点重新投入使用。
注意
在升级 kubelet 之前驱逐节点可确保重新接纳 Pod 并重新创建容器,这对于解决某些安全问题或其他重要错误可能是必要的。其他部署
请参阅您的集群部署工具的文档,了解推荐的维护设置步骤。
升级后任务
切换集群的存储 API 版本
序列化到 etcd 中的对象,用于集群内部表示集群中活动的 Kubernetes 资源,是使用特定版本的 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 版本。