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

V3版本:

etcdctl snapshot save /bak/snapshot.db

在这里插入图片描述

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/

在这里插入图片描述

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

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

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

在这里插入图片描述

3.3 启动master3上的服务

systemctl start kube-apiserver kube-controller-manager \
               kubelet kube-proxy kube-scheduler

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

kubectl get node

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

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

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

在这里插入图片描述

4.2 将文件复制到node1上

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

4.3 启动node1上的kubelet和kube-proxy

在这里插入图片描述

4.4 确认node1版本

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

4.5 依次升级node2和node3

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

猜你喜欢

转载自blog.csdn.net/qq_29974229/article/details/126121834