首页主机资讯ubuntu如何升级k8s版本

ubuntu如何升级k8s版本

时间2025-12-03 18:00:04发布访客分类主机资讯浏览482
导读:Ubuntu上升级 Kubernetes 的标准流程(kubeadm) 一 升级前准备 备份关键数据与配置:优先备份 etcd(强烈建议),以及 /etc/kubernetes/ 目录。etcd 快照示例: ETCDCTL_API=3...

Ubuntu上升级 Kubernetes 的标准流程(kubeadm)

一 升级前准备

  • 备份关键数据与配置:优先备份 etcd(强烈建议),以及 /etc/kubernetes/ 目录。etcd 快照示例:
    • ETCDCTL_API=3 etcdctl snapshot save /path/to/backup/snapshot.db
      –endpoints https://:
      –cert /path/to/cert.pem --key /path/to/key.pem --cacert /path/to/ca.pem
  • 检查集群健康:确保控制面与节点均 Ready,核心组件 Running,无 CrashLoopBackOff/Error 的 Pod。
  • 确认升级路径:遵循“相邻次要版本递进”,不支持跨多个次要版本(如 1.22 → 1.24 需先到 1.23);kubectl 与集群版本差距不应超过 1 个次要版本。
  • 维护窗口与高可用:选择低峰期;如使用 HAProxy/Keepalived 等前端,确保升级期间健康检查与后端摘除策略正常。
  • 容器运行时:自 v1.24 起内置 dockershim 移除,需使用 containerd(或 CRI-O);如使用 Docker,需切换为 containerd 并正确配置 CRIcrictl

二 控制平面节点升级(逐个进行)

  • 升级 kubeadm(解除 hold → 安装 → 再加回 hold):
    • apt-mark unhold kubeadm
    • apt-get update & & apt-get install -y kubeadm=< 目标版本,如 1.29.2-1.1>
    • apt-mark hold kubeadm
  • 检查升级计划并应用:
    • kubeadm upgrade plan(确认可升级到的目标版本与变更)
    • kubeadm upgrade apply v< 目标版本> (如需单独控制 etcd,可加 --etcd-upgrade=false)
  • 腾空节点(维护前务必执行):
    • kubectl drain < 控制面节点名> --ignore-daemonsets --force
  • 升级 kubelet 与 kubectl(同法解除 hold → 安装 → 加回 hold):
    • apt-mark unhold kubelet kubectl
    • apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本>
    • apt-mark hold kubelet kubectl
    • systemctl daemon-reload & & systemctl restart kubelet
  • 恢复节点调度:
    • kubectl uncordon < 控制面节点名>
  • 验证:
    • kubectl get nodes(版本与状态)
    • kubectl get pods -n kube-system(核心组件 Running)

三 工作节点升级(逐个进行)

  • 腾空节点:
    • kubectl drain < 工作节点名> --ignore-daemonsets --force
  • 升级 kubeadm(与控制面目标版本保持一致):
    • apt-mark unhold kubeadm
    • apt-get update & & apt-get install -y kubeadm=< 目标版本>
    • apt-mark hold kubeadm
  • 执行节点升级(可选,用于同步 kubeadm 节点配置):
    • kubeadm upgrade node
  • 升级 kubelet 与 kubectl:
    • apt-mark unhold kubelet kubectl
    • apt-get install -y kubelet=< 目标版本> kubectl=< 目标版本>
    • apt-mark hold kubelet kubectl
    • systemctl daemon-reload & & systemctl restart kubelet
  • 恢复节点调度:
    • kubectl uncordon < 工作节点名>
  • 验证:
    • kubectl get nodes(节点 Ready)
    • 业务 Pod 恢复 Running

四 升级后验证与常见问题

  • 集群状态:
    • kubectl get nodes(所有节点版本与目标一致且 Ready
    • kubectl get pods -A(核心组件与业务 Running,无异常重启)
    • 查看日志:journalctl -u kubelet -f(必要时排查 kube-apiserver/controller-manager/scheduler)
  • 组件兼容性:
    • CNI/CSI/Ingress/Dashboard/Prometheus 等需与目标 K8s 版本兼容,必要时同步升级
  • 常见问题与要点:
    • 禁止跨多个次要版本;kubectl 与集群版本差距不超过 1
    • v1.24 起需使用 containerd(或 CRI-O),并正确配置 CRIcrictl
    • 升级窗口与 HA 健康检查要提前验证,避免 API 中断
    • 如采用外部 etcd,可先单独升级 etcd 后再升级控制面(使用 --etcd-upgrade=false 谨慎控制)

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu如何升级k8s版本
本文地址: https://pptw.com/jishu/762574.html
Debian下Node.js如何进行性能测试 k8s在ubuntu上的日志如何查看

游客 回复需填写必要信息