温馨提示×

如何更新centos k8s部署

小樊
48
2025-11-22 04:10:22
栏目: 智能运维

适用于 kubeadm 部署的 CentOS 集群升级指南

一 升级前准备

  • 备份关键数据与配置:建议备份 /etc/kubernetes//var/lib/etcd/,并使用 etcdctl snapshot save 备份 etcd;同时备份 kubeconfig
  • 检查当前状态与版本:使用 kubectl versionkubectl get nodes 确认集群健康与节点版本。
  • 查看可升级版本:执行 kubeadm upgrade plan,确认目标版本是否可用与升级路径。
  • 版本策略与兼容性:遵循 Kubernetes 的版本倾斜策略,通常要求 控制面与节点小版本差距不超过 1,且不建议跨多个小版本一次性升级;升级前确认 kubelet/kube-proxy 与 kube-apiserver 的兼容关系。
  • 维护窗口与高可用:选择低峰时段,若为 HA 控制面,确保 APIServer 前端的负载均衡(如 HAProxy)健康检查与摘除策略正常。
  • 系统依赖:确认 内核/Cgroups 与新版本 Kubernetes 的兼容性。

二 控制平面升级步骤

  • 升级 kubeadm(在首个控制平面节点执行):
    • 查看可用版本:yum list --showduplicates kubeadm --disableexcludes=kubernetes
    • 安装目标版本:yum install -y kubeadm-<目标版本> --disableexcludes=kubernetes
    • 验证升级计划:kubeadm upgrade plan
  • 腾空控制平面节点:kubectl drain --ignore-daemonsets
  • 应用控制平面升级:kubeadm upgrade apply <目标版本>
  • 升级 kubelet 与 kubectl(所有控制平面节点):
    • 安装目标版本:yum install -y kubelet-<目标版本> kubectl-<目标版本> --disableexcludes=kubernetes
    • 重启服务:systemctl daemon-reload && systemctl restart kubelet
  • 解除节点保护:kubectl uncordon
  • 说明:若为 HA 集群,按上述步骤依次升级其余控制平面节点;APIServer 前端 HAProxy 会自动摘除/恢复后端。

三 工作节点升级步骤

  • 逐个升级工作节点(避免同时升级多节点):
    • 腾空节点:kubectl drain --ignore-daemonsets
    • 升级 kubelet/kubectl:yum install -y kubelet-<目标版本> kubectl-<目标版本> --disableexcludes=kubernetes
    • 重启服务:systemctl daemon-reload && systemctl restart kubelet
    • 解除节点保护:kubectl uncordon
  • 单节点集群注意:若集群只有一个节点,驱逐后 Pod 将无法调度,会出现业务中断,请在测试环境充分验证或准备临时节点。

四 升级后验证与常见问题

  • 版本与健康检查:
    • 集群版本:kubectl version --short
    • 节点版本:kubectl get nodes -o wide
    • 组件状态:kubectl get pods -n kube-system
  • 插件与系统组件:升级后按需更新 网络插件(如 Calico/Cilium) 及其他 CNI/CSI/Ingress/监控 组件,确保与新版本 Kubernetes API 兼容。
  • 清单与 API 变更:若新版本引入 API 变更,使用 kubectl convert 将现有清单转换至新 apiVersion,并回归测试关键业务。
  • 回滚与应急:升级失败可基于 etcd 快照与备份清单回滚;回滚控制面前先恢复 kubelet 到旧版本并重启。

五 常用命令清单

  • 备份与查看:
    • etcdctl snapshot save /var/lib/etcd/backup/snapshot.db
    • cp /root/.kube/config /root/.kube/config.backup
    • kubectl versionkubectl get nodes
  • 升级 kubeadm 与规划:
    • yum list --showduplicates kubeadm --disableexcludes=kubernetes
    • yum install -y kubeadm- --disableexcludes=kubernetes
    • kubeadm upgrade plan
  • 控制面与应用:
    • kubeadm upgrade apply
    • kubectl drain --ignore-daemonsetskubectl uncordon
  • 升级 kubelet/kubectl:
    • yum install -y kubelet- kubectl- --disableexcludes=kubernetes
    • systemctl daemon-reload && systemctl restart kubelet
  • 验证:
    • kubectl version --shortkubectl get nodes -o widekubectl get pods -A

0