Kubernetes 集群中 Linux 工作节点的升级指南
website Kubernetes website and documentation repo: 项目地址: https://gitcode.com/gh_mirrors/webs/website
前言
在 Kubernetes 集群的生命周期管理中,节点升级是一个关键操作。本文将详细介绍如何安全地升级使用 kubeadm 创建的 Linux 工作节点,确保升级过程平稳且不影响集群稳定性。
升级前的准备工作
在开始升级工作节点前,请确保:
- 已经完成控制平面节点的升级(这是必须的先决条件)
- 确认当前 Kubernetes 版本与目标版本兼容
- 备份重要数据和配置文件
- 了解整个升级流程和可能的风险
升级步骤详解
1. 配置正确的软件包仓库
如果你使用社区维护的 Kubernetes 软件包仓库(pkgs.k8s.io),需要确保已启用目标 Kubernetes 版本的软件包仓库。这是获取正确版本软件包的关键步骤。
2. 升级 kubeadm 工具
首先需要升级节点上的 kubeadm 工具,这是后续操作的基础:
Ubuntu/Debian/HypriotOS 系统
# 替换 x 为目标版本的最新补丁号
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='<目标版本>.x-*' && \
sudo apt-mark hold kubeadm
CentOS/RHEL/Fedora 系统
# 替换 x 为目标版本的最新补丁号
sudo yum install -y kubeadm-'<目标版本>.x-*' --disableexcludes=kubernetes
3. 执行节点升级配置
升级 kubeadm 后,运行以下命令更新节点的 kubelet 配置:
sudo kubeadm upgrade node
4. 安全腾空节点
为确保升级过程不影响运行中的工作负载,需要先将节点设置为不可调度状态并驱逐现有 Pod:
kubectl drain <节点名称> --ignore-daemonsets
注意:
- 此命令应在控制平面节点上执行
--ignore-daemonsets
参数确保 DaemonSet 管理的 Pod 不会被驱逐
5. 升级 kubelet 和 kubectl
Ubuntu/Debian/HypriotOS 系统
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='<目标版本>.x-*' kubectl='<目标版本>.x-*' && \
sudo apt-mark hold kubelet kubectl
CentOS/RHEL/Fedora 系统
sudo yum install -y kubelet-'<目标版本>.x-*' kubectl-'<目标版本>.x-*' --disableexcludes=kubernetes
升级完成后,重启 kubelet 服务:
sudo systemctl daemon-reload
sudo systemctl restart kubelet
6. 恢复节点服务
升级完成后,将节点重新加入集群调度系统:
kubectl uncordon <节点名称>
升级后的验证
节点升级完成后,建议进行以下检查:
- 节点状态是否正常(
kubectl get nodes
) - 节点上的 Pod 是否全部恢复运行
- 系统日志是否有异常报错
注意事项
- 升级过程中确保一次只操作一个工作节点,以维持集群服务可用性
- 生产环境建议先在测试环境验证升级流程
- 升级前确保有完整的备份和回滚方案
- 关注 Kubernetes 官方发布说明,了解目标版本的已知问题和变更
总结
通过本文介绍的步骤,你可以安全有序地升级 Kubernetes 集群中的 Linux 工作节点。记住始终遵循先控制平面后工作节点的升级顺序,并在每个步骤后进行验证,确保集群的健康状态。
website Kubernetes website and documentation repo: 项目地址: https://gitcode.com/gh_mirrors/webs/website
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考