云环境下
- 新增节点,安装高版本的kubelet,kube-proxy,加入到现有集群中,等节点ready了再执行操作,通过kubectl 当前集群的节点设置成不可调度,drain命令隔离掉需要升级的节点,让pod在新节点上重建,需要考虑的问题如下:
- 有状态应用(Pod使用了本地存储)
- Daemonset Pod
- NodeSelector到特定节点的Pod
- Pod设置了强制Node亲和性的Pod
- 对node进行分批次升级
- 升级controller组件
- Etcd的升级
- 升级各个组件
物理机场景下
- 提前预估集群当前状态,是否满足升级条件
- 分批次升级node节点
- 升级master节点
总体需要考虑的问题
- 升级过程中服务的中断
- 升级过程中的回退
- Etcd数据的升级
- 当前社区对于升级这一块比较推荐的是kubeadm来做,但是kubeadm当前仍然整体没有Beta