Debian上如何升级Kubernetes版本
导读:Debian上升级Kubernetes版本的详细步骤 一、升级前准备 备份关键数据 备份集群配置(/etc/kubernetes/目录)和etcd数据(/var/lib/etcd/目录),可使用etcdctl snapshot save工...
Debian上升级Kubernetes版本的详细步骤
一、升级前准备
- 备份关键数据
备份集群配置(/etc/kubernetes/
目录)和etcd数据(/var/lib/etcd/
目录),可使用etcdctl snapshot save
工具备份etcd数据,防止升级过程中数据丢失。 - 检查集群状态
运行kubectl get nodes
确认所有节点状态为Ready
,运行kubectl get pods --all-namespaces
确保所有Pod处于Running
状态;检查是否有未完成的Job或DaemonSet,避免升级中断业务。 - 检查系统兼容性
确认Debian系统版本符合Kubernetes目标版本要求(如Kubernetes 1.28+需要Debian 11+);通过uname -r
检查内核版本,确保支持新版本Kubernetes(如Kubernetes 1.29+需要Linux内核5.15+)。 - 更新系统包
运行sudo apt update & & sudo apt upgrade -y
,将系统包(如apt
、systemd
)升级到最新版本,避免依赖冲突。 - 配置Kubernetes软件源
编辑/etc/apt/sources.list.d/kubernetes.list
文件,添加对应版本的Kubernetes仓库(以Kubernetes 1.28为例):
导入GPG密钥:deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg
,然后运行sudo apt update
同步仓库。
二、升级控制平面节点(Master节点)
- 升级kubeadm
下载目标版本的kubeadm二进制文件(如1.28.1),替换旧版本:
验证kubeadm版本:wget https://dl.k8s.io/release/v1.28.1/bin/linux/amd64/kubeadm chmod +x kubeadm sudo mv kubeadm /usr/local/bin/
kubeadm version
,确保显示为目标版本。 - 检查升级计划
运行kubeadm upgrade plan
,查看当前集群可升级的目标版本及需要升级的组件(如kube-apiserver、kube-controller-manager),确认升级路径合法(如从1.27升级到1.28)。 - 执行控制平面升级
运行kubeadm upgrade apply v1.28.1
,按照提示确认升级(输入yes
)。该命令会自动升级控制平面组件(kube-apiserver、kube-controller-manager、kube-scheduler)及静态Pod配置。 - 升级kubelet和kubectl
下载目标版本的kubelet和kubectl:
重启kubelet服务:wget https://dl.k8s.io/release/v1.28.1/bin/linux/amd64/kubelet wget https://dl.k8s.io/release/v1.28.1/bin/linux/amd64/kubectl chmod +x kubelet kubectl sudo mv kubelet /usr/local/bin/ sudo mv kubectl /usr/local/bin/
sudo systemctl daemon-reload & & sudo systemctl restart kubelet
。 - 解除Master节点保护
运行kubectl uncordon < master-node-name>
,将Master节点标记为可调度,恢复其接收Pod调度。
三、升级工作节点(Node节点)
- 逐个升级工作节点
每次仅升级一个工作节点,确保集群高可用。 - 腾空节点
运行kubectl drain < node-name> --ignore-daemonsets
,将节点标记为不可调度,并驱逐所有Pod(DaemonSet管理的Pod除外),避免升级过程中Pod中断。 - 升级kubelet和kubectl
在工作节点上重复“升级控制平面节点”中的步骤2和3,升级kubelet和kubectl至目标版本,并重启kubelet服务。 - 升级节点上的kubeadm(可选)
若节点需要重新加入集群(如重置后),运行sudo apt install -y kubeadm=< target-version> -00
升级kubeadm。 - 重新加入集群
运行kubeadm join < master-ip> :6443 --token < token> --discovery-token-ca-cert-hash sha256:< hash>
,将节点重新加入集群(token
和hash
可通过kubeadm token create
和kubeadm certs certificate-hash
获取)。 - 解除节点保护
运行kubectl uncordon < node-name>
,将节点标记为可调度。
四、升级后验证
- 检查节点状态
运行kubectl get nodes
,确认所有节点状态为Ready
,且版本显示为目标版本。 - 检查Pod状态
运行kubectl get pods --all-namespaces
,确保所有Pod处于Running
状态,无CrashLoopBackOff
或Pending
等异常。 - 验证功能正常
部署一个测试Pod(如nginx
),检查其是否能正常启动和访问,确认集群功能未受影响。
五、注意事项
- 遵循版本顺序
Kubernetes不支持跨多个大版本升级(如从1.27直接升级到1.29),必须按小版本逐步升级(如1.27→1.28→1.29)。 - CNI插件兼容性
升级前检查CNI插件(如Calico、Flannel)是否支持目标Kubernetes版本,必要时升级插件至兼容版本。 - 监控集群状态
升级后24小时内密切监控集群指标(如CPU、内存、网络流量),查看日志(journalctl -u kubelet
),及时处理异常。 - 回滚准备
若升级失败,可通过kubeadm upgrade revert v< target-version>
回滚到上一个稳定版本,恢复集群状态。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上如何升级Kubernetes版本
本文地址: https://pptw.com/jishu/720163.html