一、背景
2019年11月26日,阿里云容器服务Kubernetes版本升级到1.14.8,同时更新了Kubernetes 版本支持机制:(https://help.aliyun.com/document_detail/115453.html)
- 同时支持两个双数号的大版本,例如 v1.12、v1.14
- 保持每半年更新一次 Kubernetes 版本的频率。
- 当新版本发布上线时,会立即下线一个较早的版本;当新版本的升级功能发布后,会淘汰这个较早的版本。
2019年11月27日,阿里云下发了Kubernetes版本升级通知(邮件和站内信),提醒我们及时升级。
好吧,我们有2个正在使用的阿里云Kubernetes集群版本,分别是1.9.7和1.10.4,在失效版本之列,那就安排升级呗。
好消息是1.10.4版本的集群,是测试环境,可以拿来当白老鼠。(虽然跟下面线上1.9.7版本不一致,不能完全反映问题,但至少可以提供重要参考。)
坏消息是1.9.7版本的集群,是提供公司级别的中台基础服务(例如消息推送),升级出问题会影响线上所有业务。
二、白老鼠升级(1.10.4-->1.14.8)
白老鼠先上,把1.10.4版本的测试环境集群直接升级到最新的1.14.8。
阿里云官方Kubernetes版本升级注意事项,洋洋洒洒这么多,其实对升级没啥帮助。
用大白话翻译一下Kubernetes版本升级最重要的注意事项:
- 不能跨大版本升级,只能按照大版本逐个版本升级
- 升级不可逆,可以暂停,但不能回滚
跟测试小伙伴同步好风险后,我们把1.10.4版本升级到了1.14.8,升级过程遇到的问题记录如下:
1.10.4升级到1.11.5
(1)前置检查的时候报差错:
处理方法:
- 在报错的服务器上修改配置文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Environment="KUBELET_CERTIFICATE_ARGS=后面添加--anonymous-auth=false - systemctl restart kubelet 重启kubelet
(2)升级master时出现截图报错,升级完成后恢复:
(3)在升级node时,会有pod迁移动作(蓝绿),未影响到应用正常使用
1.11.5升级到1.12.6
(1)升级完成的时间点出现报错,大概5分钟后自动恢复
1.12.6升级到1.14.8
(1)升级master时,出现报错,自动恢复
(2)所有服务出现了大概2分钟左右的断线,之后自动恢复。
三、白老鼠升级小结
- 升级肯定会导致应用服务中断,而且会中断多次,中断时间几分钟到几十分钟。不过都会自动恢复,不需要人工干预。
- 应用存在需要重新手工发布的风险。
- 升级存在失败的风险
- 白老鼠k8s集群版本和线上环境k8s版本不一样,不能完全反应问题。