温馨提示×

Debian如何更新Kubernetes版本安装

小樊
36
2025-12-15 02:30:41
栏目: 智能运维

在 Debian 上更新或安装指定版本的 Kubernetes

一 准备与版本选择

  • 备份关键数据与配置:建议备份 /etc/kubernetes//var/lib/etcd/,并使用 etcdctl 进行快照;同时确认集群当前状态健康。升级前阅读目标版本的发行说明与变更。
  • 升级顺序与兼容性:遵循 kubeadm 升级指南 的版本路径,通常要求在同一 小版本内逐级升级(例如从 v1.28.x → v1.29.x → v1.30.x),避免跨多个小版本;升级前确保网络插件、存储插件与集群内组件均支持目标版本。
  • 系统与容器运行时:保持 Debian 系统与容器运行时(如 containerd)为稳定版本;确保 swap 已禁用,并满足 kubelet 运行要求。

二 安装指定版本(全新安装或重装场景)

  • 添加 Kubernetes APT 仓库(Debian 12 示例):
    echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/kubernetes-archive-keyring.gpg >/dev/null
    echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
    sudo apt update
    
  • 安装指定版本(将 1.30.x 替换为你的目标版本):
    KVER=1.30.0-1.1
    sudo apt-get update
    sudo apt-get install -y kubelet=${KVER} kubeadm=${KVER} kubectl=${KVER}
    sudo apt-mark hold kubelet kubeadm kubectl
    
  • 初始化或加入集群(示例):
    # 仅在全新初始化时执行
    sudo kubeadm init --pod-network-cidr=10.244.0.0/16
    
    # 工作节点加入(使用 kubeadm init 输出的 join 命令)
    sudo kubeadm join <control-plane-host>:<port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
    
  • 验证:
    kubectl version --short
    kubectl get nodes
    

说明:上述仓库条目中的 xenial 是 Kubernetes APT 仓库的发行代号,并非 Debian 版本;安装后使用 apt-mark hold 防止组件被意外升级。

三 就地升级集群(已存在集群)

  • 控制平面节点
    1. 检查升级计划并升级控制平面:
      sudo kubeadm upgrade plan
      sudo kubeadm upgrade apply v1.30.0
      
    2. 腾空节点并升级 kubelet/kubectl(保持与 kubeadm 一致的小版本):
      kubectl drain <master-node> --ignore-daemonsets
      sudo apt-get update
      sudo apt-get install -y kubelet=1.30.0-1.1 kubectl=1.30.0-1.1
      sudo systemctl daemon-reload
      sudo systemctl restart kubelet
      kubectl uncordon <master-node>
      
  • 工作节点
    1. 逐台升级,先腾空:
      kubectl drain <worker-node> --ignore-daemonsets
      
    2. 升级 kubelet/kubectl 并重启:
      sudo apt-get update
      sudo apt-get install -y kubelet=1.30.0-1.1 kubectl=1.30.0-1.1
      sudo systemctl daemon-reload
      sudo systemctl restart kubelet
      kubectl uncordon <worker-node>
      
  • 验证:
    kubectl version --short
    kubectl get nodes
    kubectl get pods -A
    

要点:升级期间保持 单主节点可调度 或合理安排控制平面维护窗口;升级完成后逐一恢复节点调度。

四 常见问题与注意事项

  • 版本锁定:为避免误升级,安装后用 apt-mark hold kubelet kubeadm kubectl 固定版本;升级完成再按需解除。
  • 组件一致性:确保 kubelet、kubeadm、kubectl 与控制平面镜像版本一致或兼容;升级后使用 kubectl version --shortkubectl get nodes 校验。
  • 网络与插件:升级前后确认 CNI 网络插件存储插件 已支持目标版本;升级期间建议暂停可能影响稳定性的变更。
  • 生产建议:先在测试环境验证,再滚动升级节点,全程关注监控与日志,出现异常及时回滚或扩容维护窗口。

0