K8s社群不維護的往期版本怎麼辦?

語言: CN / TW / HK

理想主義的花,

最終會盛開在浪漫主義的地裡。

我們很高興宣佈 KLTS (https://klts.io/) 開源專案正式上線了。

KLTS 全稱為 Kubernetes Long Term Support,主要使命是 為 Kubernetes 早期版本提供長期免費的維護支援

KLTS 從提出思路、資料來源整理、網站建設,到最後釋出上線,共用了 2 個多月時間。整個專案都是「DaoCloud 道客」的相關技術同事,自發組織,用工作之餘的時間完成的。

在埋頭幹活的同時,不忘仰望星辰大海。理想主義的花,最終會盛開在浪漫主義的地裡。

歡迎廣大的開發者和我們一起共赴,這一程充滿浪漫主義的,理想的實現之旅。在路上一起暢聊開源技術,共同探討和解決相關的問題。

理想之花的由來:為什麼會有 KLTS 這個開源專案呢?

01

浪漫之始

理想照進現實

在所有理想的想象中,新的肯定都是更好的。但是在現實中,往往不是這樣。實際生產中,大多數企業往往會選擇採用,早期的 Kubernetes 版本管控叢集。

首先,升級頻率高會帶來變更風險,每次升級必須進行充分驗證。特別是金融行業的平臺層變更週期通常比較長,因為一旦升級後的新版本存在 bug,就需要被迫回滾或快速響應升級至更新的版本,這樣會造成不必要的成本支出。

其次,Kubernetes 升級後部分功能的替代方案還沒有完全生產就緒,在生產環境中常會出現不相容的狀況。

最後,Kubernetes 社群僅支援小版本 +1 升級,不支援跨版本升級,因為跨版本升級經常會出現一些不可控的因素,造成更大的生產問題。

所以大多數企業的選擇是沿用早期版本,不會貿然升級。但 Kubernetes 社群只維護最新的 3 到 4 個版本,然而企業實際在使用的都是早於這些的版本。

在企業使用這些早期版本的時候,如何才能免受社群不定時發現的,CVE 漏洞和 bug 的襲擾呢?這就是 KLTS 的價值所在!KLTS 會 對Kubernetes 社群停止維護的早期版本,提供長達 3 年的免費維護支援,積極修復早期版本的 CVE 安全漏洞和重大 bug。

這就是 KLTS 想要為使用早期版本的企業,培植和呵護的理想之花。

02

守護遺失之地

保障生產穩定

在維護的範圍中, KLTS 會優先修復中高級別的 CVE,其次會修復重大 Bug

這是因為,一些高優先順序的 CVE 或嚴重 Bug ,在生產環境中會造成較大的安全隱患,CVE 安全問題是叢集的生命線。因此,KLTS 會優先修復中高級別的 CVE,其次會修復重大 Bug,確保生產環境穩定執行。

當 Kubernetes 社群發現可能影響生產的 CVE 新漏洞或 bug,受到影響的可能不止社群正在維護的版本,還有之前已經停止維護,但是仍有企業使用的版本,KLTS 團隊維護的正是這些社群放棄維護的版本。

以 2021 年 1 月發現的 CVE-2021-3121 安全漏洞為例,CVSS 危急分數高達 7.5。但截止 2021 年 9 月 Kubernetes 社群:  

  • 僅修復了 4 個版本:1.18、1.19、1.20、1.21

  • 宣稱“所有早期版本均有這個安全漏洞,建議使用者立即停止使用早期版本”

  • 因為之前的版本已經停止維護,拒絕修復早期版本漏洞的要求

KLTS 面對這一現狀,自發修復了深受 CVE-2021-3121 安全漏洞影響的 ,其他 8 個早期版本:

v1.17.17、v1.16.15、v1.15.12、v1.14.10、v1.13.12、v1.12.10、v1.11.10、v1.10.13

03

三年之保

以號為證

在這三年維護期內,我們對從 1.10.13 起的每一個版本,每提供一次免費維護,每一個Kubernetes 版本號,都有一個相對應的 KLTS 提供的補丁版本號。企業可以通過這樣的補丁號,可以找到對應的修復版本。

KLTS 維護的早期版本號,是從 1.10.13 起到 Kubernetes 社群最新停止維護的版本號。 例如,社群釋出的最新 Kubernetes 版本為 x.y.n,其中 x 是大版本號,y 是小版本號,n 是補丁版本號 (補丁版本號代表社群維護過程中產生的補丁數,初始為 0),區別 KLTS 維護的版本和 Kubernetes 社群維護版,主要是以 y 的變化為準。

因此,根據社群版本維護宣告,如果社群僅維護最近的三個版本,版本號即為 x.y、x.(y-1)、x.(y-2),而 KLTS 維護的則是從 1.10 起,到 x.(y-3) 的近十個早期版本,如下圖所示。

對應每個維護的版本,KLTS 每維護一次,就會有一個對應的補丁號。

示例:Kubernetes 社群很早以前就停止維護的一個版本,版本號為 1.10.13,KLTS 在三年內提供的補丁版本,版本號通常在此基礎上加上 lts1、lts2 … ltsn 表示。例如,1.10.13 第一個補丁版本號為 1.10.13 lts1,第二個補丁版本號為 1.10.13 lts2,第 n 個補丁版本號為 1.10.13 ltsn。

如上圖所示,Kubernetes 社群對某個版本的維護週期通常是一年左右,而 KLTS 則是在接下來的三年內提供長期維護,直至程式碼無法相容,才會將相應版本淘汰。

04

歡迎共同培育

結出碩果

辛勤的耕耘,最終收穫的是盛開的美麗花朵。經過開發者精心的維護支援, KLTS 為這些使用早期版本的企業帶來了最終的成果:

三年維護期: Kubernetes 社群對每個版本提供一年左右的維護,而 KLTS 接下來會為該版本提供長達三年的持續維護。

安全穩定: 小版本升級更安全,相容性高;漸進式升級穩定性更好;從 1.10 起所有核心都是久經金融政企生產驗證的軟體,可以放心下載,經過測試驗證後就能直接投入生產環境。

易於安裝: 結合國內映象加速,原生支援 Kubeadm,支援 CentOS、Ubuntu、openSUSE,還提供了一鍵安裝指令碼。

公開透明: 在 GitHub 託管的開源專案,全流程公開。

全鏈路規劃: 後續會新增 Containerd 及其他元件的長期維護。

KLTS 的路線圖正在制定之中,目前路線圖計劃短期實現信創支援,長期實現麒麟系統支援等多方位的重要能力。

在此,向廣大的開發者,再次發出邀請,如果您覺得 KLTS 團隊的付出有價值,讓您值得信賴,歡迎任何開發者加入 KLTS 社群交流並貢獻,期待您的任何意見、建議或解決方案。

加入 KLTS's Slack

https://join.slack.com/t/klts/shared_invite/zt-wutp4tk7-ITXZc8EUUiuxbM_5mh1qXA

  K 8 s