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

 

近幾年影響最大版本來襲

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 十分類似。

 

 

沒錯,可以將 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章