温馨提示×

k8s在centos上如何升级

小樊
35
2025-12-27 13:45:36
栏目: 智能运维

在 CentOS 上升级 Kubernetes 的标准流程

一 升级前准备

  • 备份关键数据与配置:优先备份 etcd(建议快照到持久存储),以及 /etc/kubernetes/ 配置和 kubeconfig。示例:ETCDCTL_API=3 etcdctl snapshot save /var/lib/etcd/backup/snapshot-$(date +%F).db;cp /root/.kube/config /root/.kube/config.backup。
  • 检查集群健康:kubectl get nodes、kubectl get pods -A,确保当前无异常或卡在 Terminating 的 Pod。
  • 确认升级路径:遵循 小版本逐步升级 原则,不可跨多个小版本;先查可升级版本,再规划批次。
  • 配置软件源:在所有节点确保已启用 Kubernetes 官方仓库,以便安装目标版本的 kubeadm/kubelet/kubectl。
  • 维护窗口与策略:生产环境建议滚动升级、分批维护,准备回滚预案。

二 控制平面升级(使用 kubeadm)

  • 逐台维护(若为 HA 控制平面,一次仅维护一台):
    1. 标记控制平面节点不可调度并驱逐工作负载:kubectl cordon ;kubectl drain --ignore-daemonsets --delete-emptydir-data。
    2. 升级 kubeadm 到目标版本:yum install -y kubeadm- --disableexcludes=kubernetes。
    3. 检查升级计划:kubeadm upgrade plan(确认组件镜像与控制平面版本一致)。
    4. 执行升级:kubeadm upgrade apply v(按提示完成)。
    5. 升级 kubelet 与 kubectl:yum install -y kubelet- kubectl- --disableexcludes=kubernetes;systemctl daemon-reload && systemctl restart kubelet。
    6. 恢复调度:kubectl uncordon
    7. 验证:kubectl get nodes、kubectl get pods -n kube-system,确认控制平面与核心组件 Running。

三 工作节点升级(使用 kubeadm)

  • 逐台滚动升级(保持业务连续性):
    1. 标记不可调度并驱逐:kubectl cordon ;kubectl drain --ignore-daemonsets --delete-emptydir-data。
    2. 升级 kubeadm:yum install -y kubeadm- --disableexcludes=kubernetes。
    3. 执行节点升级:kubeadm upgrade node。
    4. 升级 kubelet 与 kubectl:yum install -y kubelet- kubectl- --disableexcludes=kubernetes;systemctl daemon-reload && systemctl restart kubelet。
    5. 恢复调度:kubectl uncordon
    6. 验证:kubectl get nodes -o wide,确认节点版本已更新且 Ready。

四 升级后验证与常见问题

  • 版本与状态核验:
    • kubectl version --short(客户端/服务端版本)
    • kubectl get nodes -o wide(节点版本与状态)
    • kubectl get pods -A(系统组件与业务 Pod 状态)
    • 如为外置 etcd,核对 etcd 集群健康与数据一致性。
  • 常见问题与处理:
    • 版本不匹配或组件不一致:控制平面组件版本需完全一致;kubelet 与控制平面通常允许 ±1 个小版本差异,必要时对齐版本后重启 kubelet。
    • 升级失败回滚:优先回滚到上一版本的 kubeadm/kubelet 包并重启服务;若有 etcd 快照,可恢复到升级前快照。
    • 节点无法恢复调度:检查节点污点、磁盘/内存压力、容器运行时状态与网络插件 Pod 就绪情况。

五 补充建议

  • 升级顺序:始终遵循 先控制平面,后工作节点;逐台滚动 的策略,最小化业务中断。
  • 版本策略:生产环境优先选择 PATCH 版本修复;MINOR 版本升级需充分验证与灰度。
  • 兼容性校验:升级前核对 Kubernetes 与容器运行时/网络插件 的兼容矩阵,必要时在测试环境演练。

0