写在前面
kubernetes是目前最炙手火热的容器管理、调度、编排平台,不仅拥有全面的生态系统,而且还开源、开放自治,谁贡献的多,谁的话语权就大,云提供商都有专门的工程师来从事kubernetes开源项目,其软件的升级迭代非常快,今天我们就来谈谈如何使用kubeadm平滑地升级kubenetes集群到v1.10.3。
备注:kubeadm是一个快速构建kubernetes集群的工具。
查看目前集群版本
从上面可以看到,master节点kubelete版本低于woker节点,kubernetes的版本倾斜并不支持此情况,详细原因如下:
基于这两个原因,为了避免出现一些不必要的问题,所以决定立即升级集群。
检视集群
检查哪些版本可用于升级并验证当前群集是否可升级。
kubeadm upgrade plan [flags]
上图已经说得很清楚了,我们需要先升级kubeadm,然后才能升级control pannel,而kubeadm并不会自动安装和管理kubelet、kubectl,所以我们需要手工完成这三个组件的升级。
升级kubeadm kubelet kubectl
yum install -y kubelet kubeadm kubectl
升级集群组件
kubeadm upgrade apply v1.10.3
升级网络插件
kubernetes支持符合CNI规范的所有网络插件,生产环境一般建议使用calico,其他网络插件的升级大家可以自行去官网查看。
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml
kubectl apply -f https://docs.projectcalico.org/v3.1/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
再次检视集群
从上面可以看到,各个control pannel和组件都成功升级完成!!!
备注:命令执行后,可能一段时间kubectl get nodes看到的版本还是没有改变,dashboard也处于僵死状态,不要着急,等待大概20分钟左右就好了,不过服务会很快恢复,基本用户是无感知的。
延伸阅读
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade
https://kubernetes.io/docs/tasks/tools/install-kubeadm
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm