理想主義的花,最終會盛開在浪漫主義的地里。
我們很高興宣布 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 社區:
1.僅修復了 4 個版本:1.18、1.19、1.20、1.21
2.宣稱“所有早期版本均有這個安全漏洞,建議用戶立即停止使用早期版本”
3.因為之前的版本已經停止維護,拒絕修復早期版本漏洞的要求

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