• 如何优雅升级 Kubernetes 集群的 Docker 和 Containerd 版本


    由于这个组件更新迭代也是非常的快速,并且官方文档很快不展示旧版本文档了,那么随着版本更新,API版本自然发生了改变,新版本的API就没有任何的参考意义了,因此需要升级组件版本。升级组件版本前提是docker版本至少需要20.10.11,containerd版本至少是1.4.11。于是这里先原地升级这两个组件。

    k8s的node节点维护

    尽可能在维护节点之前保证你的有另外的冗余节点,能够支撑你当前维护节点上的所有pod。或者保证你维护这个节点驱逐了所有pod后,其他节点能够承载你这个节点上所有pod。非常可怜也非常可惜,我这里节点内存都跑到了95%以上,并且领导不给机器,让我夜里升级。pod目前集群上有超过5000个。此时只能硬着头皮上了。理念是升级完一台正常后再接着升下一台。

    升级步骤

    1、查看原先的containerd和docker版本

    $ containerd -v
    containerd containerd.io 1.2.13 7ad184331fa3e55e52b890ea95e65ba581ae3429

    $ docker -v
    Docker version 19.03.12, build 48a66213fe

    2、驱逐pod

    $ kubectl drain k8s-node02.ayunw.cn --ignore-daemonsets --delete-local-data --force

    $ kubectl get node
    NAME                    STATUS                        
    k8s-master01.ayunw.cn   Ready                         
    k8s-node01.ayunw.cn     Ready                         
    k8s-node02.ayunw.cn     NotReady,SchedulingDisabled
    ...

    3、停止节点上docker和kubelet

    systemctl stop kubelet

    systemctl stop docker
    systemctl stop docker.socket
    systemctl stop containerd

    4、卸载老版本docker并安装新版本docker和containerd

    yum -y remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

    dnf -y install yum-utils device-mapper-persistent-data lvm2

    yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo

    yum makecache

    dnf -y install containerd.io-1.4.12-3.1.el8.x86_64.rpm

    dnf -y install docker-ce-20.10.11 docker-ce-cli-20.10.11

    systemctl daemon-reload
    systemctl start docker
    systemctl enable docker
    systemctl status docker

    systemctl status containerd
    systemctl enable containerd.service

    5、检查docker和containerd版本

    $ containerd -v && docker -v
    containerd containerd.io 1.4.12 7b11cfaabd73bb80907dd23182b9347b4245eb5d
    Docker version 20.10.11, build dea9396

    6、启动kubelet并恢复节点

    systemctl start kubelet
    systemctl status kubelet

    kubectl uncordon k8s-node02.ayunw.cn

    kubectl get node -o wide 

    最后就能看到版本已经升级完成。

    本文转载自:「运维开发故事」,原文:https://tinyurl.com/2p86nhya,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com

  • 相关阅读:
    celery的使用
    DOM操作
    js动画
    列表案例
    背景案例
    背景属性连写
    背景属性
    链接导航案例
    链接伪类
    优先权之权重会叠加
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/16227317.html
Copyright © 2020-2023  润新知