目录
环境检查
#这个k8s集群有两个master节点、有一个work节点
[root@master001 ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master001 Ready master 25h v1.17.0
master002 Ready master 25h v1.17.0
master003 Ready node 25h v1.17.0
下载kubeadm、kubectl、kubeletRPM包
#下载地址:
https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/Packages/
[root@master001 1.18.0]# ll
total 40044
-rw-r–r--. 1 root root 9204778 Oct 22 21:27 kubeadm-1.18.0-0.x86_64.rpm
-rw-r–r--. 1 root root 9996474 Oct 22 21:28 kubectl-1.18.0-0.x86_64.rpm
-rw-r–r--. 1 root root 21797010 Oct 22 21:28 kubelet-1.18.0-0.x86_64.rpm
更新流程
更新master节点
安装kubeadm–> list需要的docker镜像–>升级–>升级kubelet–>重启kubelet
更新work节点
升级kubelet–>重启kubelet
更新master节点
1、查看kubeadm1.17.0需要的docker镜像
[root@master001 ~]# kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
registry.aliyuncs.com/google_containers/kube-apiserver:v1.17.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.17.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.17.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.17.0
registry.aliyuncs.com/google_containers/pause:3.1
registry.aliyuncs.com/google_containers/etcd:3.4.3-0
registry.aliyuncs.com/google_containers/coredns:1.6.5
2、更新kubeadm、kubectl
[root@master001 1.18.0]# yum -y install kubectl-1.18.0-0.x86_64.rpm kubeadm-1.18.0-0.x86_64.rpm
3、查看kubeadm1.18.0需要的docker镜像
[root@master001 1.18.0]# kubeadm config images list --image-repository registry.aliyuncs.com/google_containers
registry.aliyuncs.com/google_containers/kube-apiserver:v1.18.0
registry.aliyuncs.com/google_containers/kube-controller-manager:v1.18.0
registry.aliyuncs.com/google_containers/kube-scheduler:v1.18.0
registry.aliyuncs.com/google_containers/kube-proxy:v1.18.0
registry.aliyuncs.com/google_containers/pause:3.2
registry.aliyuncs.com/google_containers/etcd:3.4.3-0
registry.aliyuncs.com/google_containers/coredns:1.6.7
4、经比较,除了etcd镜像与之前版本一致,其他镜像都需要重新下载
docker pull 下载1.18.0所需要的镜像
docker tag 为镜像打上标签
docker pull 上传到私有镜像仓库
docker push 192.168.122.131/google_containers/kube-controller-manager:v1.18.0
5、kubeadm执行升级命令
[root@master001 1.18.0]# kubeadm upgrade plan # 查看执行计划
[root@master001 1.18.0]# kubeadm upgrade apply v1.18.0
6、查看master节点任意组件的,如apiserver
kubectl describe pod -n kube-system kube-apiserver-master001
通过输出显示apiserver组件的镜像已经是1.18.0了
7、升级kubelet组件
[root@master001 1.18.0]# yum -y install kubelet-1.18.0-0.x86_64.rpm
[root@master001 1.18.0]# systemctl daemon-reload && systemctl restart kubelet
[root@master001 1.18.0]# kubectl get node
NAME STATUS ROLES AGE VERSION
master001 Ready master 37h v1.18.0
master002 Ready master 37h v1.17.0
master003 Ready node 37h v1.17.0
此时,master001节点显示版本为1.18.0了
更新mater002节点
[root@master002 1.18.0]# yum -y install kubectl-1.18.0-0.x86_64.rpm kubeadm-1.18.0-0.x86_64.rpm
[root@master002 1.18.0]# kubeadm upgrade apply v1.18.0
[root@master002 1.18.0]# yum -y install kubelet-1.18.0-0.x86_64.rpm
[root@master002 1.18.0]# systemctl daemon-reload && systemctl restart kubelet
[root@master002 1.18.0]# kubectl get node
NAME STATUS ROLES AGE VERSION
master001 Ready master 37h v1.18.0
master002 Ready master 37h v1.18.0
master003 Ready node 37h v1.17.0
更新work节点
#驱逐work节点
[root@master003 1.18.0]# kubectl taint node master003 xx=xx:NoExecute
[root@master003 1.18.0]# yum -y install kubelet-1.18.0-0.x86_64.rpm
[root@master003 1.18.0]# systemctl daemon-reload && systemctl restart kubelet
[root@master003 ~]# systemctl daemon-reload && systemctl restart kubelet
#设置work节点可调度
[root@master003 1.18.0]# kubectl taint node master003 xx=xx:NoExecute-
验证
[root@master001 1.18.0]# kubectl get node
NAME STATUS ROLES AGE VERSION
master001 Ready master 37h v1.18.0
master002 Ready master 37h v1.18.0
master003 Ready node 37h v1.18.0
[root@master001 1.18.0]# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6c55f667db-fcnbw 1/1 Running 0 11m
kube-system coredns-6c55f667db-jjjdr 1/1 Running 0 11m
kube-system etcd-master001 1/1 Running 0 7m51s
kube-system etcd-master002 1/1 Running 0 2m31s
kube-system kube-apiserver-master001 1/1 Running 0 7m51s
kube-system kube-apiserver-master002 1/1 Running 0 2m31s
kube-system kube-controller-manager-master001 1/1 Running 1 7m51s
kube-system kube-controller-manager-master002 1/1 Running 0 2m33s
kube-system kube-flannel-ds-amd64-9kwv8 1/1 Running 0 37h
kube-system kube-flannel-ds-amd64-j8xlh 1/1 Running 0 37h
kube-system kube-flannel-ds-amd64-tmtj6 1/1 Running 0 37h
kube-system kube-proxy-bqss2 1/1 Running 0 11m
kube-system kube-proxy-n5xnw 1/1 Running 0 11m
kube-system kube-proxy-xlpzg 1/1 Running 0 11m
kube-system kube-scheduler-master001 1/1 Running 1 7m51s
kube-system kube-scheduler-master002 1/1 Running 0 2m33s