天天看點

實戰阿裡雲容器服務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版本更新通知(郵件和站内信),提醒我們及時更新。

實戰阿裡雲容器服務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版本更新(一)

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

  • 不能跨大版本更新,隻能按照大版本逐個版本更新
  • 更新不可逆,可以暫停,但不能復原

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

1.10.4更新到1.11.5

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

實戰阿裡雲容器服務Kubernetes版本更新(一)

處理方法:

  • 在報錯的伺服器上修改配置檔案/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

    Environment="KUBELET_CERTIFICATE_ARGS=後面添加--anonymous-auth=false

  • systemctl restart kubelet 重新開機kubelet

(2)更新master時出現截圖報錯,更新完成後恢複:

實戰阿裡雲容器服務Kubernetes版本更新(一)

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

1.11.5更新到1.12.6

(1)更新完成的時間點出現報錯,大概5分鐘後自動恢複

實戰阿裡雲容器服務Kubernetes版本更新(一)

1.12.6更新到1.14.8

(1)更新master時,出現報錯,自動恢複

實戰阿裡雲容器服務Kubernetes版本更新(一)
實戰阿裡雲容器服務Kubernetes版本更新(一)

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

三、白老鼠更新小結

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

繼續閱讀