升级 Linux 节点

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

准备开始

你必须拥有一个 Kubernetes 的集群,同时你必须配置 kubectl 命令行工具与你的集群通信。 建议在至少有两个不作为控制平面主机的节点的集群上运行本教程。 如果你还没有集群,你可以通过 Minikube 构建一个你自己的集群,或者你可以使用下面的 Kubernetes 练习环境之一:

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

更改软件包仓库

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

说明: The legacy package repositories (apt.kubernetes.io and yum.kubernetes.io) have been deprecated and frozen starting from September 13, 2023. Using the new package repositories hosted at pkgs.k8s.io is strongly recommended and required in order to install Kubernetes versions released after September 13, 2023. The deprecated legacy repositories, and their contents, might be removed at any time in the future and without a further notice period. The new package repositories provide downloads for Kubernetes versions starting with v1.24.0.

升级工作节点

升级 kubeadm

升级 kubeadm:

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

执行 “kubeadm upgrade”

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

  1. sudo kubeadm upgrade node

腾空节点

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

  1. # 将 <node-to-drain> 替换为你正腾空的节点的名称
  2. kubectl drain <node-to-drain> --ignore-daemonsets

升级 kubelet 和 kubectl

  1. 升级 kubelet 和 kubectl:

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

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

取消对节点的保护

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

  1. # 将 <node-to-uncordon> 替换为你的节点名称
  2. kubectl uncordon <node-to-uncordon>

接下来