Kubernetes HA集羣平滑升級方案1.10.1-1.11.0,1.11.0-1.12.0

    集羣框架:

    172.30.0.81 k8s-master1

    172.30.0.109 k8s-master2

    172.30.0.89 k8s-node1

    172.30.2.60 nginx vip

    K8S master高可用配置 方便升級集羣的流量切換:

    image.png

   

    image.png

    image.png

    K8S集羣初始化安裝的版本爲1.10.1,後續考慮到集羣平滑升級方案,再次做了一系列測試,方案適用於1.10.1升級至1.11.0,1.11.0升級至1.12.0親測,整個升級過程不影響正常業務容器,需要提前設置後master負載均衡,摘除準備升級的master節點,將master節點上的容器“排幹”,在升級node節點的時候如是,對容器“排幹”操作,避免業務容器出現中斷的可能。

    注意:kubeadm 集羣升級,只能按階梯升級,不能跨兩級從1.10直接升級至1.12

   

    準備工作:

         1.準備版本升級所需要的master,node節點的容器鏡像,可以到官網下載指定版本,或者通過獲取kubeadm默認版本的配置文件,拉取指定的鏡像,如

         # kubeadm config print init-defaults > init-default.yaml

         更換鏡像拉取地址爲阿里雲的,默認是k8s官網的,需要×××  

              imageRepository: registry.aliyuncs.com/google_containers

         # kubeadm upgrade image pull --config=init-default.yaml

         鏡像拉取到之後,需要修改標籤,要不然在升級部署的過程k8s會報鏡像拉取失敗,如

         image.png

   

         升級過程:

         1.切換master節點的流量,將需要升級的master節點下掉

            image.png

         

         2.升級kubeadm到指定版本

         # yum update kubeadm-1.12.0 --disableexcludes=kubernetes

         查看是否爲預期版本

         # kubeadm version 

        

         3.查看升級計劃是否正常

         # kubeadm upgrade plan

         正常則返回success


         4.kubeadm upgrade apply v1.12.0

         注意:升級過程中若遇到阻塞,可以查看控制檯的master相關pod,一般是因爲標籤不對拉不到鏡像,需要更改鏡像標籤

         image.png

        此時這臺升級的master的kube-apiserver,controller-manager,scheduler,kube-proxy組件均已升級完畢,可以通過kubectl describe pod查看版本


        5.升級kubelet,修改kubelet配置文件,升級爲升級版本的配置

        # yum upgrade kubelet-1.12.0 -y

        # kubeadm upgrade node config --kubelet-version 1.12.0

        重啓kubelet

        # systemctl daemon-reload && systemctl restart kubelet

        查看系統日誌看節點是否正常

        # tail -F /var/log/message

        查看節點是否升級成功

        # kubectl get node   節點已升級至1.12.0


        6.切換nginx流量,下掉另一臺沒有升級的master'


        7.升級第二臺master的kubelet至1.12.0,重新加載kubelet配置

        # yum upgrade kubelet-1.12.0 -y

        # kubeadm upgrade node config --kubelet-version 1.12.0

        重啓kubelet

        # systemctl daemon-reload && systemctl restart kubelet

        查看系統日誌看節點是否正常

        # tail -F /var/log/message

        查看節點是否升級成功

        # kubectl get node   節點已升級至1.12.0


        8.node worker節點升級,升級kubelet,加載新版本配置,重新啓動kubelet即可


        9.升級完成

        image.png

        

         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章