• Kubernets二进制安装(19)之集群平滑升级


    在实际生产环境中,部署好的集群稳定就行了,但是,如果需要使用到新的功能或当前版本出现了严重的漏洞,都建议做升级,本教程是将node节点从v1.15.10版本平滑升级到v1.15.12版本,如果升级到相对应的版本后,发现不稳定的情况,也可以通过相同的方法进行降级,不管是升级还是降级,都需要一台升级/降级好后再对下一台进行操作,不建议一起进行

    1.查看原集群的Node节点的版本号

    在master上(mfyxw30.mfyxw.com或mfyxw40.mfyxw.com)任意一台主机执行命令

    [root@mfyxw30 ~]# kubectl get nodes
    

    image-20200516080703208

    2.将要升级的版本上传到node节点上并解压

    在mfyxw30.mfyxw.com主机上执行

    rz命令(上传)和sz命令(下载)都需要安装一个lrzsz的rpm包

    [root@mfyxw30 ~]# rz -y
    [root@mfyxw30 ~]# mkdir -p /opt/v1512
    [root@mfyxw30 ~]# tar xf kubernetes-server-linux-amd64-v1.15.12.tar.gz -C /opt/v1512
    [root@mfyxw30 ~]# mv /opt/v1512/kubernetes/ /opt/kubernetes-v1.15.12
    [root@mfyxw30 ~]# rm -fr /opt/v1512/
    [root@mfyxw30 ~]# ls -l /opt/
    

    image-20200516082724154

    3.清理kubernetes-v1.15.12目录中的 *.tar 和 *._tag文件

    在mfyxw30.mfyxw.com主机上分行

    [root@mfyxw30 ~]# cd /opt/kubernetes-v1.15.12/
    [root@mfyxw30 kubernetes-v1.15.12]# rm -fr *.tar.gz
    [root@mfyxw30 kubernetes-v1.15.12]# cd server/bin/
    [root@mfyxw30 bin]# rm -fr *.tar
    [root@mfyxw30 bin]# rm -fr *.*_tag
    

    image-20200516084714615

    4.在kubernetes-v1.15.12的bin目录下创建conf目录和cert目录

    在mfyxw30.mfyxw.com主机执行

    [root@mfyxw30 ~]# mkdir -p /opt/kubernetes-v1.15.12/server/bin/{conf,cert}
    

    5.将旧版本的k8s的证书文件,配置文件,sh文件都复制到新版本中

    在mfyxw30.mfyxw.com主机上执行

    [root@mfyxw30 ~]# cd /opt/kubernetes-v1.15.10/server/bin
    [root@mfyxw30 bin]# cp -r conf/* /opt/kubernetes-v1.15.12/server/bin/conf/
    [root@mfyxw30 bin]# cp -r cert/* /opt/kubernetes-v1.15.12/server/bin/cert/
    [root@mfyxw30 bin]# cp -r /opt/kubernetes-v1.15.10/server/bin/*.sh /opt/kubernetes-v1.15.12/server/bin/
    [root@mfyxw30 bin]# cp -r /opt/kubernetes-v1.15.10/server/conf /opt/kubernetes-v1.15.12/server/
    [root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/bin/conf/
    [root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/bin/cert/
    [root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/bin
    [root@mfyxw30 bin]# ls /opt/kubernetes-v1.15.12/server/conf/
    

    image-20200516100445121

    准备工作已经完成,现在下面就要准备从v1.15.10平滑升级到v1.15.12,前提是要选择流量低的时候进行,每个公司的流量高低都不尽相同,请根据实际情况来决定,在升级/降级的时候,需要发布一则消息出去,告知其它人。

    6.查看下pod节点的情况

    在mfyxw30.mfyxw.com主机上执行

    [root@mfyxw30 ~]# kubectl get pod -n kube-system -o wide
    

    image-20200516092400854

    从查询得的pod可以看到,在mfyxw30.mfyxw.com主机上运行的Pod比较少,就先升级/降级此node节点

    7.将四层和七层代理进行注释(删除某台node节点就注释某个对应的IP地址)

    分别在mfyxw10.mfyxw.com和mfyxw20.mfyxw.com上执行,以mfyxw10主机为例

    [root@mfyxw10 ~]# vi /etc/nginx/nginx.conf
    

    image-20200516092610075

    [root@mfyxw10 ~]# cat > /etc/nginx/conf.d/od.com.conf << EOF
    upstream default_backend_traefik {
        #server 192.168.80.30:81    max_fails=3 fail_timeout=10s;
        server 192.168.80.40:81    max_fails=3 fail_timeout=10s;
    }
    server {
        server_name *.od.com;
    
        location / {
            proxy_pass http://default_backend_traefik;
            proxy_set_header Host $http_host;
            proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
        }
    }
    EOF
    

    image-20200516093056386

    重新启动nginx

    [root@mfyxw10 ~]# nginx -t
    [root@mfyxw10 ~]# nginx -s reload
    

    image-20200516093106738

    8.将node节点从集群中删除

    在master节点mfyxw40.mfyxw.com主机上执行

    [root@mfyxw40 ~]# kubectl get nodes
    [root@mfyxw40 ~]# kubectl delete node mfyxw30.mfyxw.com
    [root@mfyxw40 ~]# kubectl get nodes
    

    image-20200516093531706

    9.将kubernetes链接指向新版本的kubernetes-v1.15.12

    在mfyxw30.mfyxw.com主机上执行

    [root@mfyxw30 ~]# cd /opt/
    [root@mfyxw30 opt]# ll
    [root@mfyxw30 opt]# rm -fr kubernetes
    [root@mfyxw30 opt]# ln -sv kubernetes-v1.15.12 kubernetes
    [root@mfyxw30 opt]# ll
    

    image-20200516094025443

    10.将k8s集群重新启动

    在mfyxw30.mfyxw.com主机上执行

    [root@mfyxw30 ~]# systemctl stop supervisord
    [root@mfyxw30 ~]# netstat -tanlp | grep "kube"
    [root@mfyxw30 ~]# kill -9 58235   #每台机器查询出来的PID不同,请根据实际情况来
    [root@mfyxw30 ~]# kill -9 58236   #每台机器查询出来的PID不同,请根据实际情况来
    [root@mfyxw30 ~]# netstat -tanlp | grep "kube"
    [root@mfyxw30 ~]# systemctl start supervisord
    [root@mfyxw30 ~]# supervisorctl status
    

    image-20200516103357495

    11.查询集群的node节点(mfyxw30)是否已经升级到最新版

    在mfyxw30.mfyxw.com主机上执行

    [root@mfyxw30 ~]# kubectl get nodes
    

    image-20200516103653092

    12.对node节点打标签

    在mfyxw30.mfyxw.com主机执行

    [root@mfyxw30 ~]# kubectl label node mfyxw30.mfyxw.com node-role.kubernetes.io/master=
    [root@mfyxw30 ~]# kubectl label node mfyxw30.mfyxw.com node-role.kubernetes.io/node=
    [root@mfyxw30 ~]# kubectl get nodes
    

    image-20200516103909028

    13.将前面在四层和七层代理注释的内容把注释去掉并重启nginx

    在mfyxw10.mfyxw.com和mfyxw20.mfyxw.com主机上分别执行

    [root@mfyxw10 ~]# cat > /etc/nginx/conf.d/od.com.conf << EOF
    upstream default_backend_traefik {
        server 192.168.80.30:81    max_fails=3 fail_timeout=10s;
        server 192.168.80.40:81    max_fails=3 fail_timeout=10s;
    }
    server {
        server_name *.od.com;
    
        location / {
            proxy_pass http://default_backend_traefik;
            proxy_set_header Host $http_host;
            proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
        }
    }
    EOF
    

    至此,node节点mfyxw30.mfyxw.com已经平滑升级完成,另外的node节点也采用类似的方法来升级/降级

    最后来查询一下所有的node节点的版本号是否一致

    在master节点上(mfyxw30.mfyxw.com或mfyxw40.mfyxw.com)任意一台执行即可

    [root@mfyxw10 ~]# kubectl get nodes
    

    image-20200516110112997

  • 相关阅读:
    Nilearn教程系列(2)-3D和4D niimgs:处理和可视化
    Python-EEG工具库MNE中文教程(9)-参考电极应用
    EEMD算法原理与python实现
    Python-EEG工具库MNE中文教程(8)-参考电极简介
    联想笔记本 thinkpad BIOS 超级密码 Supervisor Password 清除 破解 亲测有效 转载地址https://blog.csdn.net/ot512csdn/article/details/72571674
    C Primer Plus 学习 第四章
    C Primer Plus 学习 第三章
    六 BASH 高级变量
    五 shell 变量与字符串操作
    四 shell基本命令
  • 原文地址:https://www.cnblogs.com/Heroge/p/12903668.html
Copyright © 2020-2023  润新知