k8s版本升级

温馨提示 : k8s升级一定要测试环境测试好,最好不要跨大版本,而且需要停止服务 首先进入官网找到需要下载的版本

https://github.com/kubernetes/kubernetes/releases
下面是我们需要升级的版本 1.21.4,需要把安装包down下来,选择amd.tar.gz  下载好之后上传至部署节点
https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.21.md#downloads-for-v1214

上传安装包

root@k8s-master1:~# cd /usr/local/src/
root@k8s-master1:/usr/local/src# ls
kubernetes-v1.21.4-client-linux-amd64.tar.gz
kubernetes-v1.21.4-node-linux-amd64.tar.gz
kubernetes-v1.21.4-server-linux-amd64.tar.gz
kubernetes-v1.21.4.tar.gz
$解压安装包
root@k8s-master1:/usr/local/src# tar xf kubernetes-v1.21.4-client-linux-amd64.tar.gz
root@k8s-master1:/usr/local/src# tar xf  kubernetes-v1.21.4-node-linux-amd64.tar.gz
troot@k8s-master1:/usr/local/src# tar xf kubernetes-v1.21.4-server-linux-amd64.tar.gz
root@k8s-master1:/usr/local/src# tar xf kubernetes-v1.21.4.tar.gz

进入解压目录,里面存放这我们需要升级的server以及node文件

root@k8s-master1:/usr/local/src# cd kubernetes/
root@k8s-master1:/usr/local/src/kubernetes# ls
addons  cluster  hack                   LICENSES  README.md  version
client  docs     kubernetes-src.tar.gz  node      server

升级master

首先我们需要知道Server上都有哪些组件需要升级 ,分别是:
kuber-scheduler
kuber-contoller-manager
apiextensions-apiserver
kube-proxy
kubelete
kuberctl

root@k8s-master1:/usr/local/src/kubernetes# cd server/bin/
root@k8s-master1:/usr/local/src/kubernetes/server/bin# ll

先停止一台master,为了保证集群的可用性,主节点挂了之后我们的负载均衡器会调度另一台为主节点
如果保险起见可以进入负载均衡器,把需要升级的一台注释,然后批量升级在取消注释

停止服务

root@k8s-master1:# systemctl stop kube-apiserver.service kube-proxy.service kube-controller-manager.service kubelet.service kube-scheduler.service

拷贝二进制

# pwd
/usr/local/src/kubernetes/server/bin
root@k8s-master1:/usr/local/src/kubernetes/server/bin# cp kube-apiserver kube-proxy kube-controller-manager kube-scheduler kubelet /usr/bin/
root@k8s-master1:/usr/local/src/kubernetes/server/bin# systemctl start kube-apiserver.service kube-proxy.service kube-controller-manager.service kubelet.service kube-scheduler.service

验证是否升级成功
如果升级成功其他master按照此操作批量操作,或者写脚本一键升级

root@k8s-master1:/usr/local/src/kubernetes/server/bin# kubectl get node
NAME        STATUS                     ROLES    AGE     VERSION
10.0.0.18   Ready,SchedulingDisabled   master   6d19h   v1.21.4

升级node

> node需要升级的几个组件,分别是:
kubectl
kubelete
kube-proxy

先升级其中一台node测试,主节点把安装包拷贝过来,一定要先停服务在master节点拷贝数据包

root@k8s-node1:~# systemctl stop kubelet kube-proxy
root@k8s-master1:/usr/local/src/kubernetes/server/bin# scp kubelet kube-proxy kubectl 10.0.0.48:/usr/bin
root@k8s-node1:~# systemctl start kubelet kube-proxy

在master节点查看是否升级成功,版本显示成功就没问题,然后就可以批量升级

$ kubectl  get node
10.0.0.48   Ready                      node     6d18h   v1.21.4

更换主节点系统版本

为了保证我们后期添加节点版本一致,所以安装节点需要替换原始版本

强制替换
#cp kube-apiserver kube-proxy kube-controller-manager kube-scheduler kubelet /etc/kubeasz/bin/
  • 检查版本是否替换成功至1.21.4

    root@k8s-master1:~# cd /etc/kubeasz/bin/
    root@k8s-master1:/etc/kubeasz/bin# ./kubelet –version
    Kubernetes v1.21.4

添加node节点

需要免密先提前做好

cd /etc/kubeasz/
./ezctl add-node k8s-01 10.0.0.81
成功之后就使用kubectl 测试是否加入成功

添加master节点

需要注意时间需要一致,负载均衡器会把master的配置文件重新推送

./ezctl add-master k8s-01 10.0.0.89
添加成功之后可以在负载均衡配置文件看到添加好的信息
root@k8s-master1:/etc/kubeasz# cat /etc/kube-lb/conf/kube-lb.conf

删除节点
按照上面操作很简单

    del-etcd    <cluster>  <ip>      to delete a etcd-node from the etcd cluster
    del-master  <cluster>  <ip>      to delete a master node from the k8s cluster
    del-node    <cluster>  <ip>      to delete a work node from the k8s cluster