開發與維運

實戰阿里雲容器服務Kubernetes版本升級(一)

一、背景

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版本升級通知(郵件和站內信),提醒我們及時升級。
1.png

好吧,我們有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版本升級注意事項,洋洋灑灑這麼多,其實對升級沒啥幫助。
2.png

用大白話翻譯一下Kubernetes版本升級最重要的注意事項:

  • 不能跨大版本升級,只能按照大版本逐個版本升級
  • 升級不可逆,可以暫停,但不能回滾

跟測試小夥伴同步好風險後,我們把1.10.4版本升級到了1.14.8,升級過程遇到的問題記錄如下:

1.10.4升級到1.11.5

(1)前置檢查的時候報差錯:
3.png

處理方法:

  • 在報錯的服務器上修改配置文件/etc/systemd/system/kubelet.service.d/10-kubeadm.conf
    Environment="KUBELET_CERTIFICATE_ARGS=後面添加--anonymous-auth=false
  • systemctl restart kubelet 重啟kubelet

(2)升級master時出現截圖報錯,升級完成後恢復:
4.png

(3)在升級node時,會有pod遷移動作(藍綠),未影響到應用正常使用

1.11.5升級到1.12.6

(1)升級完成的時間點出現報錯,大概5分鐘後自動恢復
5.png

1.12.6升級到1.14.8

(1)升級master時,出現報錯,自動恢復
6.png
7.png

(2)所有服務出現了大概2分鐘左右的斷線,之後自動恢復。

三、白老鼠升級小結

  1. 升級肯定會導致應用服務中斷,而且會中斷多次,中斷時間幾分鐘到幾十分鐘。不過都會自動恢復,不需要人工干預。
  2. 應用存在需要重新手工發佈的風險。
  3. 升級存在失敗的風險
  4. 白老鼠k8s集群版本和線上環境k8s版本不一樣,不能完全反應問題。

Leave a Reply

Your email address will not be published. Required fields are marked *