• K8s版本升级---v1.21.0至v1.21.12


    1. 目的

    本文纯粹为了升级而升级,不在解决v1.21.0的任何bug,只为了做一个K8s升级的文档
    K8s的升级一般在1个大版本之内升级,超过2个请谨慎处理.
    例如:1.21.x 升级到1.22.x,升级1.23.x理论上步骤是一样的
    同时事先做好ETCD的备份

    1.1 ETCD备份

    V2版本:
    /opt/etcd_backup 此目录必须为空

    ETCDCTL_API=2 etcdctl backup --data-dir /var/lib/etcd/ --backup-dir /bak/etcd_backup
    
    • 1

    V3版本:

    etcdctl snapshot save /bak/snapshot.db
    
    • 1

    在这里插入图片描述

    2. 准备工作

    2.1 获取必要的二进制文件

    v1.21.12 release 下载地址:
    https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.21.md
    在这里插入图片描述
    在这里插入图片描述
    下载并上传至服务器
    在这里插入图片描述

    2.2 解压安装包

    mkdir  /apps/kubernetes
    上传kubernetes-server-linux-amd64.tar.gz
    tax xf kubernetes-server-linux-amd64.tar.gz
    cd /apps/kubernetes/kubernetes/server/bin/
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3. 升级Master节点

    3.1 停置向升级的服务器转发请求

    先停用掉负载均衡的配置,停用升级的服务器分发

    在这里插入图片描述
    在这里插入图片描述

    3.2 Master节点上停止服务

    Master节点上需要升级kube-apiserver kube-controller-manager kubectl kubelet kube-proxy kube-scheduler
    其中kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler有service,需要先停止
    在这里插入图片描述

    systemctl stop kube-apiserver kube-controller-manager \
                   kubelet kube-proxy kube-scheduler
    
    • 1
    • 2

    在这里插入图片描述
    替换文件

    scp kube-apiserver kube-controller-manager \
        kubectl kubelet kube-proxy kube-scheduler k8s-master-03:/usr/bin/
    
    • 1
    • 2

    在这里插入图片描述

    3.3 启动master3上的服务

    systemctl start kube-apiserver kube-controller-manager \
                   kubelet kube-proxy kube-scheduler
    
    • 1
    • 2

    在这里插入图片描述

    这里应该再确认下master3的升级后版本情况,但忘记截图了

    kubectl get node
    
    • 1

    3.4 再注释掉master1和master2,并解开master3的注释

    在这里插入图片描述
    在这里插入图片描述

    3.5 升级master1和master2

    同样的停止服务,复制文件,启动服务

    systemctl stop kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler
    scp kube-apiserver kube-controller-manager \
        kubectl kubelet kube-proxy kube-scheduler k8s-master-01:/usr/bin/
    scp kube-apiserver kube-controller-manager \
        kubectl kubelet kube-proxy kube-scheduler k8s-master-02:/usr/bin/
    systemctl start kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    在这里插入图片描述

    3.6 恢复haproxy,使得3个master都被正常轮询

    在这里插入图片描述

    3.7 升级master节点完成

    在这里插入图片描述

    4. 升级node节点

    当前k8s环境pods状态
    在这里插入图片描述
    kubelet和kube-proxy都有service文件,所以需要停止这2个服务,并复制kubectl,kubelet,kube-proxy3个文件
    在这里插入图片描述

    4.1 停用node1 kubelet和kube-proxy

    systemctl stop kubelet kube-proxy
    
    • 1

    在这里插入图片描述

    4.2 将文件复制到node1上

    scp kubectl kubelet kube-proxy node-1:/usr/bin
    
    • 1

    4.3 启动node1上的kubelet和kube-proxy

    在这里插入图片描述

    4.4 确认node1版本

    在这里插入图片描述

    升级成功
    可以看到重启kubelet和kube-proxy对已经启动的pods没有影响
    在这里插入图片描述

    4.5 依次升级node2和node3

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    至此整个k8s升级完成

  • 相关阅读:
    UI自动化---Wechat批量表情包轰炸
    Spring Cloud Greenwich 正式发布,Hystrix 即将寿终正寝!
    2023java攻克了抖音视频去水印视频下载
    C# NanUI 相关功能整合
    AtCoder ABC324G 启发式合并
    java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
    麒麟KYLINOS通过命令行配置kysec的防火墙
    Pytorch 的数据处理 学习笔记
    【webrtc】PC : BaseChannel 及子类VideoChannel 和 VoiceChannel :关联source、sink,关联MediaEngine子类,实现RTP包收发
    【腾讯云 Cloud Studio 实战训练营】使用python爬虫和数据可视化对比“泸州老窖和五粮液4年内股票变化”
  • 原文地址:https://blog.csdn.net/qq_29974229/article/details/126121834