升级前准备
master节点组件: kubectl,kube-apiserver,kube-controller-manager,kube-scheduler
node节点组件:kube-proxy,kubelet
##暂不升级的组件,需要升级后面再单独升级
数据库组件:etcd
网络组件:flannel
二进制包下载:https://github.com/kubernetes/kubernetes/releases
开始升级
升级kubectl
备份kubectl,在所有的master节点操作
1 | [root@bjxg-sy-test bin]# cd /opt/k8s/bin |
分发kubectl到所有节点
1 | source /opt/k8s/bin/environment.sh |
查看kubectl版本
1 |
|
升级master节点组件
在master节点操作,另需要注意一台master节点一台操作,如果是用的keepalived做的vip高可用,需要先让vip漂移;如果是nginx的4层代理,需要先将要升级的master节点摘掉。
1 | systemctl stop kube-apiserver |
复制新版本客户端
1 | source /opt/k8s/bin/environment.sh |
启动服务 kube-apiserver
1 | [root@bjxg-sy-test k8s.1.16.2-server]# systemctl status kube-apiserver |
看下kubectl version
1 | [root@bjxg-sy-test k8s.1.16.2-server]# kubectl version |
启动kube-controller-manager和kube-scheduler
1 | systemctl start kube-controller-manager && systemctl start kube-scheduler |
升级node节点组件
在所有node节点执行
1 | systemctl stop kubelet |
拷贝二进制文件
1 | source /opt/k8s/bin/environment.sh |
在kubernetes 1.15版起kubelet需要删除allow-privileged这个参数,因为新版本中这个参数已经过时。我们只需要在kubelet启动脚步中删除即可
1 | sed -i '/allow-privileged/d' /etc/systemd/system/kubelet.service |
查看并验证
查看node节点
1 | [root@bjxg-sy-test k8s.1.16.2-server]# kubectl get node |
启动一个pod
1 | [root@bjxg-sy-test k8s.1.16.2-server]# kubectl create deploy nginx --image=nginx |
至此,k8s集群升级完毕