博雲:Kubernetes 近年影響最大版本釋出,這幾點值得關注

語言: CN / TW / HK

近幾年影響最大版本來襲

2022 年 5 月 3 日,Kubernetes 1.24 正式釋出。這個版本的釋出可以說是“姍姍來遲”和“萬眾矚目”,因為此次釋出對 Kubernetes 社群會帶來深遠影響。

在 1.24 版本中,共有 46 項功能增強,其中 13 個進入了穩定期,14 個是改進現有的功能,13 個是全新的功能,此外還有六個被廢棄的功能。相信很多瞭解 Kubernetes 的同學已經知道了,其中最重要的就是 Kubernetes 社群正式移除了對於 Docker 的支援,在經歷了一年多、幾個大版本的過渡期之後,這一天還是到來了。除了這個重大變更以外,其他的新的功能增強也值得我們關注,由於篇幅的限制,在這裡就不一一列舉了,筆者先帶大家瞭解幾個方面,順便也講講博雲容器雲平臺在這些領域的工作。

新鮮上架

1. Docker 的離去

Docker 和 Kubernetes 互相陪伴,走過了很久,現在是分別的時刻了。

不久前,Kubernetes 社群釋出了一個紀錄片,講述了 Kubernetes 的誕生和發展,其中提到了 Kubernetes 和 Docker 的糾葛,這兩個專案有時幫助,常常競爭,總是合作。但是令人唏噓的是,隨著 Kubernetes 成長為容器編排的事實標準,容器執行時也百花齊放,Kubernetes 社群迫切需要一套統一的標準管理多種容器執行時,因此 CRI 應運而生,而 docker shim 墊片的方式也必將逐漸退出歷史舞臺。

相比於歷史,大家可能更關心未來怎麼辦,儘管 Kubernetes 官方發了幾篇博文向用戶說明即使廢棄 Docker 也不用恐慌,但是很多使用者可能還是不放心。其實 Kubernetes 社群之所以選擇現在這個時間點放棄 Docker,很大的原因是社群中的替代方案基本已經成熟。

在執行時層面,containerd、cri-o 初露鋒芒;在客戶端命令列工具中 podman,nerdctl 都是非常優秀的工具。以 podman 工具為例,在使用方法上,它與 Docker 十分類似。

alias docker=podman

沒錯,可以將 podman 直接當作 Docker 使用,這極大減少了開發者的遷移成本。

在 CRI 的選擇上,我們的可選項就更多了,由於 Kubernetes 的優秀設計,很容易就可以實現一個 CRI,目前開源社群中的 CRI 實現也很多,比較著名的有 containerd 和 cri-o,瞭解 Kubernetes 的同學知道,其實 Docker 後端就是呼叫的 containerd,因為 Docker 和 podman 構建的映象都是 OCI 標準的,所以不用擔心現有映象的相容性問題。另外,雖然 docker-shim 被正式移除了,但是 Mirantis (於 19 年底收購 docker 企業部門)維護的 cri-dockerd 專案仍然可以幫助大家實現 Kubernetes 和 Docker 的對接。

博雲容器雲平臺很早就開始進行 containerd、cri-o 的相容工作,目前已經完美適配這兩個 CRI,並且博雲容器雲平臺的特色產品,裸金屬容器也已經適配了 containerd 和 cri-o。

隨著 1.24 的釋出,可以預期未來的 Kubernetes 部署環境中 Docker 佔比會逐漸減少,containerd、cri-o、podman、nerdctl 等執行時和配套工具會逐漸進入大眾視野。Kubernetes 作為容器編排領域多年的事實標準,此次變更對應用運維和部署的影響不大。同時,Docker 作為本次雲原生浪潮的起點,在功能、易用性、使用者積累等方面仍然有巨大的優勢,在開發測試、個人使用等場景仍然會長期存在。

2. Windows 的逐步上位

容器技術生於 Linux,長於 Linux。雖然微軟也為 Windows 加入了容器功能,但是 Kubernetes 對於 Windows 容器的相容不盡如人意,很多功能都缺失。

不過在 1.24 版本中,我們可以看見一些變化,Kubernetes 增強了 Windows 版本的一致性認證標準。這項工作的推進可以使雲服務商提供更加穩定、符合 Kubernetes 規範的 Kubernetes 發行版雲平臺。

由於歷史遺留原因,其實有很多大型使用者的業務程式只有 Windows 版本,他們對於 Windows 業務容器化、編排 Windows 容器也有著強烈的需求,所以博雲容器雲平臺對於 Windows 容器的適配是非常重視的,我們很早就適配了 Windows 系統上的 Kubernetes。

博雲的自研元件,例如 Fabric CNI 也推出了 Windows 版本,相比於 Kubernetes 官方推薦的 Flannel ,Fabric 有著更優秀的效能和更強大的功能

除此之外,博雲容器雲平臺對 Windows 叢集的計算、儲存、網路和監控日誌都進行了統一管理,可以說在使用體驗上與 Linux 叢集沒有多少差別。

目前已有多個使用者使用了 Windows 版本的博雲容器雲平臺,實現了執行在 Windows 系統上的業務在幾千核 CPU 規模的叢集中穩定高效執行。

3. 網路的穩中求進

網路一直是 Kubernetes 的重中之重。

在 1.24 中,Kubernetes 帶來了幾個關於網路的新功能,其中有兩個值得特別關注

一是 NetworkPolicy 新增 NetworkPolicyStatus 欄位,CNI 通過設定這個欄位可以清楚的告訴使用者目前 NetworkPolicy 是否生效

二是增加了 service 動態和靜態 IP 的預留功能,此功能可以一定程度上防止 IP 衝突。

博雲自研 Fabric CNI 也將在下月釋出 2.5 版本,在此版本中帶來了很多新功能,而且也通過目前大熱的 eBPF 技術進一步增強了 Fabric,敬請期待。

4. Job 的成長

在最近一兩年,讓 AI, big data, HPC 與 Kubernetes 結合一直是雲原生一個有趣的方向,而 Kubernetes 的原生物件 -- Job 是實現這一目的不可或缺的工具,所以在這個版本中,Kubernetes 社群為 Job 和 CronJob 做了很多優化:

  • Cronjob 支援設定時區

  • 暫停 Job 的功能達到穩定狀態

  • 跟蹤 Job 下 pod 狀態的功能達到 beta 狀態

  • 索引作業的功能達到穩定狀態

這些功能使得 Job 和 Cronjob 更加易用,但是筆者覺得,這些只是餐前小菜。

真正值得關注的是,在近期,Kubernetes 社群成立了批處理作業工作組,這個工作組可能會為 Kubernetes 原生 Job 在使用方式上帶來新鮮血液,但是目前還需觀望。

博雲算力平臺以 CNCF Volcano 專案為核心排程引擎,為眾多客戶提供了執行 AI、big data、HPC 等業務的土壤,切實解決了眾多行業痛點。

5. 儲存也不能落下

在 1.24 版本中,儲存方向也有很多增強,其中值得關注的幾項增強:

  • 增加 CSI 卷執行狀況監控

  • CSI 卷擴充套件達到穩定狀態

  • 儲存容量跟蹤達到穩定狀態

在 1.24 中 CSI 卷的執行狀態作為一個 Kubelet 指標被公開,通過這個指標,我們可以更直觀、真實的瞭解卷的狀態。

博雲在儲存領域也有諸多行動,博雲自研開源 CSI -- Carina 已經進入 CNCF 雲原生全景圖。歡迎各位開發者來 Carina 社群溝通交流,博雲將保持開放的態度歡迎各位開發者的參與(Carina 社群:https://github.com/carina-io/carina)。

6. 有狀態服務的加速迭代

有狀態服務一直是 Kubernetes 的特色功能,它體現了 Kubernetes 對各種型別業務的包容態度,使得諸如資料庫等應用也可以很好的執行到 Kubernetes 上來。

通常在滾動更新時,為了降低丟失應用例項丟失的風險,並且更大限度提高可用性,有狀態服務的 pod 會一次刪除一個,再重建一個。但是這樣速度會很慢。

在 1.24 版本中,為有狀態服務引入了一個新的欄位 maxUnavailable, 通過設定這個欄位的值,可以控制 pod 刪除個數,例如將這個值設定為 5,則一次刪除 5 個 pod,再新建 5 個 pod,通過這種方式,可以加快有狀態服務的滾動更新速度。

結語

“Kubernetes 1.24 是 2022 年 Kubernetes 更新的第一個版本。在疫情的第三年裡,Kubernetes 社群中的貢獻者們始終不懈奉獻,將 Kubernetes 帶到了一個全新的高度。在這個版本中,一如既往的加入了令人眼前一亮的新功能,既有移除 Docker 這樣關鍵性的變更,也有在計算、儲存、網路層面的增強。在 1.24 版本中,隨著 Kubernetes 的成長,雲原生將會有更多可能性值得我們去發掘。”

博雲作為 Kubernetes 社群全球排名第 11 位的貢獻者,長期持續為 Kubernetes 的發展貢獻力量。博雲容器雲將緊跟技術最新發展,及時完成對 Kubernetes 1.24 版本的支援相容,並實現對老版本的平滑升級。

最後,祝願 Kubernetes 貢獻者和使用者們,能夠像 Kubernetes 1.24 的官方代號 – “觀星者”所描繪的一樣,將目光投向遠方,探索雲端計算更多的未知領域。

參考文章:

https://sysdig.com/blog/kubernetes-1-24-whats-new/

https://kubernetes.io/zh/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-deprecation-affects-you/

https://kubernetes.io/zh/blog/2022/02/17/dockershim-faq/

https://kubernetes.io/zh/blog/2022/04/07/upcoming-changes-in-kubernetes-1-24/

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md

https://podman.io/whatis.html

https://github.com/carina-io/carina