伺服器端應用已在Kubernetes 1.22成為正式功能

伺服器端應用已在Kubernetes 1.22成為正式功能

Kubernetes 1.22是今年的第2個更新版本,這個版本有許多新功能進入穩定階段,包括伺服器端應用(Server-side Apply,SSA)、外部憑證提供程式,以及開源分散式儲存etcd升級至3.5.0版本,另外,創建臨時容器的API,也在Kubernetes 1.22有所變化。

這個版本的一大重點在於SSA成為正式版本,SSA讓用戶和控制器可以使用宣告式配置來管理資源,像是創建或修改物件,在經過幾個版本的測試之後,這個功能已經正式釋出。Kubernetes 1.22將原本採用Kubectl應用(Kubectl Apply)的客戶端實作,替換成為伺服器端實作,並允許Kubectl以外的工具和客戶端使用。

官方提到,伺服器端應用是一種新欄位所有權(Field Ownership)和物件合併演算法,在Kubernetes API伺服器上運作。SSA從Beta測試版到正式版本,增加了對子資源的支援,client-go和Kubebuilder也都全面支援SSA,而這樣的改進提供了控制器開發上,所有必須的SSA功能。

從1.11版本以來,一直處於測試階段的外部憑證提供程序,也在Kubernetes 1.22版本中進入穩定階段,正式版功能集包括改進互動式登入流程套件的支援,並且修正多個臭蟲。Kubernetes預設的後端儲存etcd,採用了新版本3.5.0,這版本改進了安全性、效能、監控和開發人員體驗,新加入的功能包含移植使用結構化日誌紀錄,以及內建日誌輪替功能。

Kubernetes 1.22提供了一個新的Alpha測試功能,對記憶體資源進行QoS(Quality of Service),原本Kubernetes使用第一版的cgroups API,這個設計可讓Pod的QoS類別,應用到CPU資源上,而這個新的測試功能,Kubernetes使用cgroups v2 API來控制記憶體和隔離,這個功能的目的,是要在記憶體資源競爭的時候,提高工作負載和節點可用性,並且增加容器生命周期的可預測性。

除了功能更新,Kubernetes 1.22還有一些重大變更,刪除了數個遭到棄用的Beta測試API,包括Ingress、APIService和CertificateSigningRequest等。而臨時性容器(Ephemeral Containers)API也有更動,目前臨時性容器功能還是Alpha功能並且預設停用,新的API不適用於使用舊API的客戶端。

kubectl 1.21以及早前版本,不支援臨時性容器的新API,當用戶計畫使用kubectl debug創建臨時性容器,而且叢集執行Kubernetes 1.22,則無法使用kubectl 1.21和更早版本進行操作,如果要將kubectl debug與叢集版本混用,就必須要將kubectl更新到1.22。

從今年4月開始,Kubernetes的發布頻率,從原本的每年4次降為3次,所以Kubernetes 1.22是相對之前,發布周期較長的一個版本,官方提到,隨著Kubernetes專案越來越成熟,每個周期加入的新功能也會增加,而這帶給終端用戶許多學習上的壓力,迫使他們必須要更快地學習更多的新功能,而把發布頻率降為每年3次,則可以使Kubernetes發展更加平衡,包括管理社群貢獻以及版本發布,也可以讓使用者在升級使用最新版本上,保有規畫彈性。


文章來源:iThome