k8s -1.15更新內容

正式發佈Kubernetes 1.15版本,這也是我們在2019年發佈的第二個版本!Kubernetes 1.15包含25項增強功能,其中2項爲穩定版、13項爲beta測試版,另有10項爲alpha測試版。本次版本的主題爲:

持續性改進。項目的可持續性水平並不僅僅取決於功能。因此,我們通過多項SIG致力於提升測試覆蓋率、確保各基礎要素的穩定性、改善核心功能集的穩定水平,並努力在完善現有功能的同時處理尚未解決的積壓性問題。

可擴展性。社區一直在要求我們進一步提升可擴展性水平,因此本次版本中包含更多與CRD以及API Machinery相關的開發成本。本次升級週期中的大多數增強功能來自SIG API Machinery及其相關領域。

下面讓我們深入探討1.15版本的主要功能。

關於核心Kubernetes API的可擴展性

與CustomResourceDefinitions緊密相關的數據一致性與原生行爲無疑是本輪開發工作中的關注重點。我們希望幫助用戶順暢完成交互,而無需考慮具體使用CustomResource抑或是Golang原生資源。通過一系列重大步驟,我們正努力在下一版本週期中發佈CRD與admission webhook的通用版本。

以此爲指導,我們重新審視了CRD當中基於OpenAPI的驗證模式。而且從1.15版本開始,我們將基於所謂“結構模式”對每一種模式進行限制性檢查。具體來講,我們將強制要求CustomResource中的各個字段皆符合非多態及完整性要求。未來,我們將要求所有結構模式——特別是以下列出的各項新功能——皆以NonStructural狀態的形式列出。非結構模式將在v1beta1 API組當中暫時繼續起效,但在可預見的未來,我們將要求一切嚴肅的CRD應用皆遷移至新的結構模式。

更多關於結構模式的細節信息,請參閱我們將在本週晚些時候發佈在kubernetes.io網站上的博文。當然,大家也可以點擊此處[1]參考Kuberntes說明文檔。

beta:CustomResourceDefinition Webhook轉換

自1.14版本開始,CustomResourceDefinitions已經能夠支持多個beta形式的版本。而在Kubernetes 1.15當中,其能夠進一步在不同版本之間實現即時轉換,且具體方式與用戶所熟悉的原生資源一樣。CRD的轉換通過集羣管理員部署在集羣之內的webhook實現。此項功能已經在Kubernetes 1.15版本中被提升爲beta版,這意味着CRD將在各類嚴肅CRD應用當中得到進一步推廣。

beta:CustomResourceDefinition OpenAPI發佈

長久以來,OpenAPI中的原生類型範式一直通過/openapi/v2交付,很多組件都在使用這些範式,特別是在kubectl實施意見驗證、kubectl解釋以及基於OpenAPI的客戶端生成器當中。

用於CRD的OpenAPI發佈機制將在Kubernetes 1.15版本中以beta測試形式亮相,但目前僅適用於結構模式。

beta:CustomResourceDefinitions刪減

刪減功能,是指對發送至Kubernetes API的對象當中的未知字段進行移除的操作。如果未在OpenAPI驗證模式當中指定字段,則該字段即被視爲未知。這項功能既關乎數據一致性,又與安全相關聯。其強制要求將CRD開發者所指定的數據結構永久保存至etcd當中。這是一種原生資源行爲,並將從Kubernetes 1.15版本的beta測試版開始適用於CRD。

刪減可通過CustomResourceDefinition中的spec.preserveUnknownFields: false被激活。未來即將發佈的CRD apiextensions.k8s.io/v1變種將強制執行刪減操作(但允許用戶明確關閉此項功能)。

刪減還要求CRD開發者提供完整的結構驗證模式,包括頂級以及其它一切CRD版本。

alpha:CustomResourceDefinition默認設置

CustomResourceDefinitions獲得了默認設置支持能力。所謂默認設置,是指在OpenAPI驗證模式當中利用default關鍵字指定的選項。對於被髮送至API的對象,默認設置將在系統從etcd讀取這些對象時爲未指定的字段提供默認選項。

默認設置在Kubernetes 1.15版本中以alpha測試形式支持結構模式。

beta:Admission Webhook重新定位與改進

對於需要對Kubernetes API進行擴展的項目而言,對admission webhook的變異與驗證正成爲一種愈發主流的處理方式。截至目前,webhook變異只需要以字母排序方式進行一次調用。這意味着較早運行的webhook無法根據稍後調用的webhook的輸出結果做出反應。在Kubernetes 1.15版本當中,這一情況將有所改善:

用戶可以通過指定reinvocationPolicy: IfNeeded確保webhook變異至少進行一次重新調用。如果後續的webhook變異對對象做出修改,那麼較早的webhook將能夠對變更做出反應。

這就要求webhook具有類似於idem-potent的行爲,從而應對二次調用。

目前我們還沒有計劃添加更多調用輪,因此webhook編寫者仍然需要謹慎地思考已提交對象是否發生了變更。最後,webhook驗證將通過調用驗證承諾不變量是否仍然不變。

我們還對admission webhook做出了一點小小調整,特別是objectSelector 將排除某些來自admission(即webhook服務器的任意端口,而不只是端口443)且包含特定標籤的對象。

集羣生命週期的穩定性與可用性改進

對Kubernetes的安裝、升級與配置流程進行強化,一直是SIG集羣生命週期在本輪升級週期中的關注重點。我們針對裸機工具與生產就緒用戶故事進行了bug修復,例如在1.15版本當中爲高可用性用例提供更高優先級。

kubeadm爲集羣生命週期的基本構建塊,其將繼續獲得有效引導生產集羣所必需的功能與穩定性提升。Kubeadm已經進入beta測試階段,實現了高可用性提升,允許用戶利用已經非常熟悉的kubeadm init與kubeadm join命令對高可用性控制面板進行配置與部署。我們還專門設計出一款全新測試套件,用以確保這些功能隨時間推移而始終保持穩定。

證書管理在1.15版本中也將變得更加強大,kubeadm現在可以在證書(升級時)到期之前對其進行無縫輪換。大家可以點擊此處[2]查看kubeadm文檔以瞭解與證書管理相關的細節信息。

在1.15版本當中,kubeadm配置文件API也將由v1beta1升級爲v1beta2。

最後,讓我們慶祝kubeadm終於擁有了自己的徽標!

CSI的持續改進

在Kubernetes 1.15版本當中,SIG存儲將繼續致力於將樹內存儲卷插件遷移至容器存儲接口(簡稱CSI)。SIG存儲亦努力將CSI與樹內結構之間的功能對應起來,包括大小調整以及內聯存儲卷等功能。SIG存儲還引入了一些原本Kuebernetes存儲子系統中所不存在的全新alpha功能,例如存儲卷克隆。

存儲卷克隆允許用戶在配置新存儲卷時,將另一PVC指定爲“DataSource”。如果底層存儲系統支持此項功能並在其CSI驅動程序當中啓用了“CLONE_VOLUME”功能,則新存儲卷將成爲源存儲卷的克隆。

其它值得關注的功能更新

在Kubernetes Core中支持Go模塊。

繼續爲雲供應商的提取與代碼組織需求做好準備。雲服務供應商的代碼已經被移動至kubernetes/legacy-cloud-providers,旨在降低後續刪除與外部使用難度。

Kubectl的get與describe現可與各擴展成功協作。

節點現可支持第三方監控插件。

發佈新的alpha測試版本調度框架,用於管理各調度插件。

用於在不同容器用例當中觸發hook命令的ExecutionHook API現在進入alpha測試階段。

繼續棄用extensions/v1beta1、apps/v1beta1以及apps/v1beta2 APIs;這些擴展將在1.16版本中被徹底淘汰!

最後,大家可以點擊此處[3]獲取此次更新與修復的完整列表。

發佈時間

Kubernetes 1.15目前已經可在GitHub上直接下載[4]。要開始使用Kubernetes,我們建議您點擊此處[5]參閱交互式教程。您也可以利用kubeadm命令輕鬆安裝最新的1.15版本。

相關鏈接:

https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/#specifying-a-structural-schema

https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.15.md#kubernetes-v115-release-notes

https://github.com/kubernetes/kubernetes/releases/tag/v1.15.0

https://kubernetes.io/docs/tutorials/

原文鏈接:https://kubernetes.io/blog/2019/06/19/kubernetes-1-15-release-announcement/

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