升级 Linux 节点

本页讲述了如何升级用 kubeadm 创建的 Linux 工作节点。

准备开始

你必须有 Shell 能访问所有节点,且必须配置 kubectl 命令行工具让其与你的集群通信。 建议运行本教程的集群至少有两个节点,且这两个节点不能作为控制平面主机。

要获知版本信息,请输入 kubectl version.

更改软件包仓库

如果你正在使用社区自治的软件包仓库(pkgs.k8s.io), 你需要启用所需的 Kubernetes 小版本的软件包仓库。 这一点在更改 Kubernetes 软件包仓库文档中有详细说明。

说明: 自 2023 年 9 月 13 日起,Kubernetes 已经弃用并冻结了旧版软件包仓库 (apt.kubernetes.io 和yum.kubernetes.io)。 强烈建议使用托管在 pkgs.k8s.io 上的新软件包仓库来安装 2023 年 9 月 13 日之后发布的 Kubernetes 版本。 旧版软件包仓库已被弃用,其内容可能在未来的任何时间被删除,恕不另行通知。新的软件包仓库提供了从 Kubernetes v1.24.0 版本开始的下载。

升级工作节点

升级 kubeadm

升级 kubeadm:

  1. # 将 1.31.x-* 中的 x 替换为最新的补丁版本
  2. sudo apt-mark unhold kubeadm && \
  3. sudo apt-get update && sudo apt-get install -y kubeadm='1.31.x-*' && \
  4. sudo apt-mark hold kubeadm
  1. # 将 1.31.x-* 中的 x 替换为最新的补丁版本
  2. sudo yum install -y kubeadm-'1.31.x-*' --disableexcludes=kubernetes

执行 “kubeadm upgrade”

对于工作节点,下面的命令会升级本地的 kubelet 配置:

  1. sudo kubeadm upgrade node

腾空节点

将节点标记为不可调度并驱逐所有负载,准备节点的维护:

  1. # 在控制平面节点上执行此命令
  2. # 将 <node-to-drain> 替换为你正腾空的节点的名称
  3. kubectl drain <node-to-drain> --ignore-daemonsets

升级 kubelet 和 kubectl

  1. 升级 kubelet 和 kubectl:

    1. # 将 1.31.x-* 中的 x 替换为最新的补丁版本
    2. sudo apt-mark unhold kubelet kubectl && \
    3. sudo apt-get update && sudo apt-get install -y kubelet='1.31.x-*' kubectl='1.31.x-*' && \
    4. sudo apt-mark hold kubelet kubectl
    1. # 将 1.31.x-* 中的 x 替换为最新的补丁版本
    2. sudo yum install -y kubelet-'1.31.x-*' kubectl-'1.31.x-*' --disableexcludes=kubernetes
  2. 重启 kubelet:

    1. sudo systemctl daemon-reload
    2. sudo systemctl restart kubelet

取消对节点的保护

通过将节点标记为可调度,让节点重新上线:

  1. # 在控制平面节点上执行此命令
  2. # 将 <node-to-uncordon> 替换为你的节点名称
  3. kubectl uncordon <node-to-uncordon>

接下来