升级前准备
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集群升级完毕