温馨提示×

怎样在centos上进行k8s升级安装

小樊
44
2025-12-21 17:43:00
栏目: 智能运维

在 CentOS 上升级 Kubernetes 的标准流程

一 升级前准备

  • 备份关键数据与配置:包括应用数据、持久卷数据、集群配置与证书等,确保可回滚。
  • 检查当前版本与状态:
    • 查看节点与组件版本:kubectl get nodeskubectl version
    • 查看可用的 kubeadm 版本:yum list --showduplicates kubeadm --disableexcludes=kubernetes
  • 核对兼容性:
    • 升级路径遵循“不可跨次版本”原则,通常按 1.y → 1.(y+1) → … 逐级升级;同一主版本内可升级补丁版本。
    • 确认容器运行时与网络插件对新版本的支持情况(如 containerd/CRI-O、CNI)。
  • 维护窗口与隔离:选择低峰时段,准备回滚方案与演练。
  • 系统与内核:确保 CentOS内核满足目标 Kubernetes 版本要求,必要时先升级内核并开启 IPv4 转发

二 控制平面升级步骤

  • 将控制平面节点标记为不可调度并驱逐工作负载:
    • kubectl cordon <master-node>
    • kubectl drain <master-node> --ignore-daemonsets --force
  • 升级 kubeadm 到目标版本:
    • 查看与目标一致的可用版本:yum list --showduplicates kubeadm --disableexcludes=kubernetes
    • 安装目标版本:yum install -y kubeadm-<version> --disableexcludes=kubernetes
  • 验证升级计划:kubeadm upgrade plan(确认可升级到的目标版本与组件)
  • 执行升级:kubeadm upgrade apply <target-version>(按提示完成)
  • 升级 kubelet 与 kubectl:
    • yum install -y kubelet-<version> kubectl-<version> --disableexcludes=kubernetes
    • systemctl daemon-reload && systemctl restart kubelet
  • 恢复节点调度:kubectl uncordon <master-node>
  • 验证控制平面:kubectl get nodeskubectl get pods -n kube-system 状态均为 Ready/Running

三 工作节点升级步骤

  • 逐台升级,避免同时升级多台导致业务中断:
    • 标记不可调度并驱逐:kubectl cordon <worker-node>kubectl drain <worker-node> --ignore-daemonsets --force
  • 升级 kubeadm、kubelet、kubectl(与主控版本保持一致):
    • yum install -y kubeadm-<version> kubelet-<version> kubectl-<version> --disableexcludes=kubernetes
    • systemctl daemon-reload && systemctl restart kubelet
  • 恢复调度:kubectl uncordon <worker-node>
  • 检查节点与系统组件状态:kubectl get nodeskubectl get pods -n kube-system

四 升级后验证与常见问题处理

  • 版本与组件一致性:
    • 确认 kubectl version 输出中 ClientServer 版本匹配或处于受支持范围;必要时同步升级 kubectl。
    • 检查核心组件版本:kubectl get pods -n kube-system -o wide(如 kube-apiserver、kube-controller-manager、kube-scheduler、kube-proxy、CoreDNS、etcd
  • 网络与插件:
    • 确认 CNI 网络插件已兼容新版本并已成功重启;如有异常,按插件文档升级或回滚。
  • 资源与 API 兼容性:
    • 核查集群中 API 版本与自定义资源定义(CRD)的兼容性,必要时迁移或调整。
  • 监控与回滚:
    • 持续观察 Pod 分布与事件,如有异常按回滚方案恢复;必要时使用 kubeadm upgrade plan 与备份进行回退。

五 全新安装与升级的区别提示

  • 若当前环境尚未安装 Kubernetes,可参考下列要点进行全新部署(与升级不同,无需 drain/cordon):
    • 准备 CRI(如 containerd)、启用 IPv4 转发、按需配置 ipvs
    • 添加 Kubernetes YUM 源,安装 kubeadm/kubelet/kubectl
    • 使用 kubeadm init 初始化控制平面,部署 CNI 网络插件,最后 kubeadm join 加入工作节点。

0