13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

创新互联kubernetes教程:Kubernetes升级kubeadm集群

在开始之前

附加信息

确定要升级到哪个版本

使用操作系统的包管理器找到最新的补丁版本 Kubernetes 1.24:

成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、成都网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的边坝网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

升级控制平面节点 

控制面节点上的升级过程应该每次处理一个节点。 首先选择一个要先行升级的控制面节点。该节点上必须拥有 ​/etc/kubernetes/admin.conf​ 文件。

执行 "kubeadm upgrade"

升级第一个控制面节点

  1. 升级 kubeadm:
    • Ubuntu、Debian 或 HypriotOS
    • # 用最新的补丁版本号替换 1.24.x-00 中的 x
      apt-mark unhold kubeadm && \
      apt-get update && apt-get install -y kubeadm=1.24.x-00 && \
      apt-mark hold kubeadm
      -
    • CentOS、RHEL 或 Fedora
    • # 用最新的补丁版本号替换 1.24.x-0 中的 x
      yum install -y kubeadm-1.24.x-0 --disableexcludes=kubernetes
  2. 验证下载操作正常,并且 kubeadm 版本正确:
  3. kubeadm version
    
  4. 验证升级计划:
  5. kubeadm upgrade plan
    

    此命令检查你的集群是否可被升级,并取回你要升级的目标版本。 命令也会显示一个包含组件配置版本状态的表格。

    Note:


    kubeadm upgrade​ 也会自动对 kubeadm 在节点上所管理的证书执行续约操作。 如果需要略过证书续约操作,可以使用标志 ​
    --certificate-renewal=false​。

    Note:

    如果 ​
    kubeadm upgrade plan​ 给出任何需要手动升级的组件配置,用户必须 通过 ​
    --config​ 命令行标志向 ​
    kubeadm upgrade apply​ 命令提供替代的配置文件。 如果不这样做,​
    kubeadm upgrade apply​ 会出错并退出,不再执行升级操作。

    选择要升级到的目标版本,运行合适的命令。例如:

    # 将 x 替换为你为此次升级所选择的补丁版本号
    sudo kubeadm upgrade apply v1.24.x

    一旦该命令结束,你应该会看到:

    [upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.24.x". Enjoy!
    
    [upgrade/kubelet] Now that your control plane is upgraded, please proceed with upgrading your kubelets if you haven't already done so.
  6. 手动升级你的 CNI 驱动插件。
  7. 你的容器网络接口(CNI)驱动应该提供了程序自身的升级说明。

    如果 CNI 驱动作为 DaemonSet 运行,则在其他控制平面节点上不需要此步骤。

对于其它控制面节点

与第一个控制面节点相同,但是使用:

sudo kubeadm upgrade node

而不是:

sudo kubeadm upgrade apply

此外,不需要执行 ​kubeadm upgrade plan​ 和更新 CNI 驱动插件的操作。

腾空节点

升级 kubelet 和 kubectl 

  1. 升级 kubelet 和 kubectl:
    • Ubuntu、Debian 或 HypriotOS
    • ```shell
      # 用最新的补丁版本替换 1.24.x-00 中的 x
      apt-mark unhold kubelet kubectl && \
      apt-get update && apt-get install -y kubelet=1.24.x-00 kubectl=1.24.x-00 && \
      apt-mark hold kubelet kubectl
      ```
    • CentOS、RHEL 或 Fedora
    • ```shell
      # 用最新的补丁版本号替换 1.24.x-00 中的 x
      yum install -y kubelet-1.24.x-0 kubectl-1.24.x-0 --disableexcludes=kubernetes
      ```
  2. 重启 kubelet
  3. sudo systemctl daemon-reload
    sudo systemctl restart kubelet

解除节点的保护

升级工作节点 

工作节点上的升级过程应该一次执行一个节点,或者一次执行几个节点, 以不影响运行工作负载所需的最小容量。

升级 kubeadm

执行 "kubeadm upgrade"

腾空节点 

升级 kubelet 和 kubectl

  1. 升级 kubelet 和 kubectl:
    • Ubuntu、Debian 或 HypriotOS
    • # 将 1.24.x-00 中的 x 替换为最新的补丁版本
      apt-mark unhold kubelet kubectl && \
      apt-get update && apt-get install -y kubelet=1.24.x-00 kubectl=1.24.x-00 && \
      apt-mark hold kubelet kubectl
    • CentOS, RHEL or Fedora
    • # 将 1.24.x-0 x 替换为最新的补丁版本
      yum install -y kubelet-1.24.x-0 kubectl-1.24.x-0 --disableexcludes=kubernetes
  2. 重启 kubelet
  3. sudo systemctl daemon-reload
    sudo systemctl restart kubelet

取消对节点的保护

验证集群的状态 

在所有节点上升级 kubelet 后,通过从 kubectl 可以访问集群的任何位置运行以下命令, 验证所有节点是否再次可用:

kubectl get nodes

STATUS ​应显示所有节点为 ​Ready ​状态,并且版本号已经被更新。

从故障状态恢复

如果 ​kubeadm upgrade​ 失败并且没有回滚,例如由于执行期间节点意外关闭, 你可以再次运行 ​kubeadm upgrade​。 此命令是幂等的,并最终确保实际状态是你声明的期望状态。 要从故障状态恢复,你还可以运行 ​kubeadm upgrade --force​ 而无需更改集群正在运行的版本。

在升级期间,kubeadm 向 ​/etc/kubernetes/tmp​ 目录下的如下备份文件夹写入数据:

kubeadm-backup-etcd​ 包含当前控制面节点本地 etcd 成员数据的备份。 如果 etcd 升级失败并且自动回滚也无法修复,则可以将此文件夹中的内容复制到 ​/var/lib/etcd​ 进行手工修复。如果使用的是外部的 etcd,则此备份文件夹为空。

kubeadm-backup-manifests​ 包含当前控制面节点的静态 Pod 清单文件的备份版本。 如果升级失败并且无法自动回滚,则此文件夹中的内容可以复制到 ​/etc/kubernetes/manifests​ 目录实现手工恢复。 如果由于某些原因,在升级前后某个组件的清单未发生变化,则 kubeadm 也不会为之 生成备份版本。

工作原理 

kubeadm upgrade apply​ 做了以下工作:

kubeadm upgrade node​ 在其他控制平节点上执行以下操作:

kubeadm upgrade node​ 在工作节点上完成以下工作:


当前题目:创新互联kubernetes教程:Kubernetes升级kubeadm集群
标题网址:http://cdbrznjsb.com/article/dhsesge.html

其他资讯

让你的专属顾问为你服务