Kubernetes 社區大約會每隔三個月發布次要版本。 從2020年8月發布的版本 1.19 開始 ,Kubernetes 社區將每個版本的支持時長從 9 個月增加到了 12 個月。
長期支持(LTS)工作組在2019年初進行的一項調查顯示在當前的9個月支持期內,很大一部分 Kubernetes 用戶未能升級。這一點以及調查中的其他反應表明,如果將補丁支持期延長至12-14個月,則30%的用戶能夠將其部署保持在支持的版本上。無論用戶使用的是自建版還是商業發行版,情況都是如此。因此,延長支持期將導致超過 80% 的用戶使用受支持的版本,而不是現在的 50-60%。一年一度的支持期可為用戶提供所需的緩沖期,並且更符合熟悉的年度規划周期。從 Kubernetes 1.19 版本開始,支持窗口將延長到一年。
次要版本包括新增功能和改進。 補丁發布更為頻繁(有時每周都會發布),適用於次要版本中的關鍵 Bug 修復。 修補程序版本包括針對安全漏洞或主要 bug 的修復。為了使集群中一直跟隨着版本前進,如果一直不更新,會導致新功能無法使用,落后新版本太多版本,不方便升級。落后2個大版本以上的,需要考慮支持的功能以及參數,Kubernetes 會將一些功能刪除,或者更改資源名稱。類似這樣的情況,Kubernetes 其實也是給了使用者很好的兼容方式的,每個大版本會兼容前兩個大版本中的功能,如 1.21可以兼容 1.20和 1.19,並不兼容 1.18,如果從 1.18 直接升級到 1.21,很有可能有些功能或者參數在 1.21已經不支持了。
如果已經落后版本太多,還想要升級也是有辦法的,需要遞歸升級,如 1.12 先升級到 1.14 ,1.14 再升級到 1.16,以此類推。
那么我們升級Kubernetes的 策略如何做?
- 最好的方式是始終保持最新
- 每半年升級一次,資源會落后社區1~2個小版本(推薦)
- 一年升級一次,或者更長,落后版本太多(不推薦)
升級流程
升級管理節點 —> 升級其余管理節點 —> 升級worker節點
注意事項:升級前必須備份所有組件及數據,例如 etcd
參考:
[1]將 Kubernetes 支持窗口增加到一年:https://kubernetes.io/blog/2020/08/31/kubernetes-1-19-feature-one-year-support/
[2] Azure Kubernetes 服務的支持策略: https://docs.microsoft.com/zh-cn/azure/aks/support-policies
[3] Azure Kubernetes 服務 (AKS) 中支持的 Kubernetes 版本:https://docs.microsoft.com/zh-cn/azure/aks/supported-kubernetes-versions?tabs=azure-cli#kubernetes-version-support-policy
