RockLinux+kubeadm+k8s-1.22.16 升级到1.22.17

升级第一个控制面

所有master主机安装kubeadm 1.22.17

yum install -y kubeadm-1.22.17-0 --disableexcludes=kubernetes

验证 kubeadm 版本

kubeadm version

检查kubeadm-config 酌情修改

kubectl edit -n kube-system cm kubeadm-config

内容如下

data:
  ClusterConfiguration: |
    apiServer:
      extraArgs:
        authorization-mode: Node,RBAC
        enable-admission-plugins: NodeRestriction,PodNodeSelector,PodTolerationRestriction
      timeoutForControlPlane: 4m0s
    apiVersion: kubeadm.k8s.io/v1beta3
    certificatesDir: /etc/kubernetes/pki
    clusterName: kubernetes
    controlPlaneEndpoint: api-server.solarfs.k8s:6443
    controllerManager:
      extraArgs:
        bind-address: 0.0.0.0
    dns:
      imageRepository: docker.io/coredns
      imageTag: 1.8.0
    etcd:
      local:
        dataDir: /var/lib/etcd
        extraArgs:
          listen-client-urls: https://0.0.0.0:2379
          listen-metrics-urls: http://0.0.0.0:2381
          listen-peer-urls: https://0.0.0.0:2380
    imageRepository: registry.netwarps.com/google_containers
    kind: ClusterConfiguration
    kubernetesVersion: v1.22.16
    networking:
      dnsDomain: cluster.local
      podSubnet: 10.128.0.0/16
      serviceSubnet: 10.96.0.0/12
    scheduler:
      extraArgs:
        bind-address: 0.0.0.0

验证升级计划:

执行升级到 v1.22.17

正常情况下显示如下

手动升级你的 CNI 驱动插件

你的容器网络接口(CNI)驱动应该提供了程序自身的升级说明。 参阅插件页面查找你的 CNI 驱动, 并查看是否需要其他升级步骤。

flannel v0.20.1 升级到 v0.22.3

下载flannel.yml

酌情修改配置,Network 的范围必须大于kubeadm-config 中 podSubnet 和 serviceSubnet 配置配置

创建flannel v0.22.3

对比服务配置

升级前的配置备份在 /etc/kubernetes/tmp/kubeadm-backup-manifests-2023-12-04-15-01-38,有可能手动修改过的服务配置,酌情使用kubeadm重新修改相关配置,参考:重新配置 kubeadm 集群

对于其它控制面节点

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

而不是:

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

腾空节点

  • 通过将节点标记为不可调度并腾空节点为节点作升级准备:

升级 kubelet 和 kubectl

  • 升级 kubelet 和 kubectl:

  • 重启 kubelet

解除节点的保护

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

升级工作节点

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

升级 kubeadm

执行 "kubeadm upgrade"

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

腾空节点

  • 官方文档写需要腾空节点,实际测试不腾空节点集群也可以正常工作(待观察吧)

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

升级 kubelet 和 kubectl

  • 升级 kubelet 和 kubectl:

  • 重启 kubelet

取消对节点的保护

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

验证集群的状态

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

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

参考:

RockLinux+kubeadm+k8s-1.22.2升级到1.22.16.md

https://v1-23.docs.kubernetes.io/zh/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/

https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/

https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/control-plane-flags/

https://kubernetes.io/zh-cn/docs/reference/command-line-tools-reference/kube-controller-manager/

Last updated

Was this helpful?