Kubernetes 1.21發佈,支持IPv4/IPv6 雙棧等51項增強功能

近日,Kubernetes 1.21正式發佈,這也是2021年的第一個版本。此版本包含51項增強功能:13項增強功能已逐步升級爲穩定版,16項增強功能已轉換爲Beta版,20項增強功能已進入Alpha版,2項功能已棄用。新版本更新圍繞以下主題:

CronJobs畢業到穩定

自Kubernetes 1.8起,CronJobs一直是一個測試版本功能,在1.21中,這個被廣泛使用的API逐漸穩定下來。CronJobs 用於執行定期的計劃操作,如備份、報告生成等。每個任務都應該被配置爲無限期重複出現,你可以在該間隔時間內定義作業應該啓動的時間點。

ImmutableSecrets和ConfigMap

Immutable Secrets和ConfigMap爲資源類型添加一個新字段,如果設置了該字段,資源類型將拒絕對這些對象的更改。默認情況下,Secrets和ConfigMap是可變的,這對於能夠使用更改的Pod是有益的。如果將錯誤的配置推送給使用它們的pod,可變的 Secrets 和 ConfigMaps 也會導致問題。

通過將Secrets和ConfigMaps標記爲不可變,可以確保您的應用程序配置不會改變。如需更改,則要創建一個新的、唯一命名的Secret或ConfigMap,並部署一個新的pod來使用該資源。不可變的資源還具有擴展優勢,因爲控制器不需要輪詢API服務器來觀察改變。

IPv4/IPv6 雙棧支持

IP地址是消耗性資源,集羣操作人員和管理員需要確保其不會耗盡。特別是,公共IPv4地址現在很稀缺,具有雙棧支持,可以將原生IPv6路由到Pod和服務,同時仍允許您的羣集在需要的地方使用IPv4。雙棧羣網絡還改善了工作負載的可能伸縮限制。

Kubernetes中的雙棧支持意味着Pod、服務和節點可以獲取IPv4地址和IPv6地址。在Kubernetes1.21中,雙棧網絡已從alpha升級到beta,並且默認啓用,從而可以同時分配IPv4和IPv6地址。

IPv4 / IPv6雙棧提供以下功能

  • 雙棧Pod網絡(每個Pod分配一個IPv4和IPv6地址)

  • 支持IPv4和IPv6的服務

  • 同時通過IPv4和IPv6接口進行集羣外出口路由(例如Internet)

Graceful Node Shutdown

Kubernetes1.21中,GracefulNode Shutdown已經升級到Beta版,它允許 kubelet 知道節點關閉,並優雅地終止調度到該節點的 pod。

目前,當節點關閉時,pod還不能遵循預期終止生命週期,也不會正常關閉,這可能會在許多不同的工作負載下帶來問題。以後,kubelet將能夠通過systemd檢測到即將發生的系統關閉,然後通知正在運行的Pod,以便它們可以儘可能正常地終止。

PersistentVolume健康監測器

PersistentVolume通常用於應用程序中獲取本地的、基於文件的存儲。它們可以以多種不同的方式使用,並可以幫助用戶遷移應用程序而無需重新編寫存儲後端。

Kubernetes 1.21具有一項新的alpha功能,該功能可以監視PV的運行狀況,並在卷變得不健康時進行相應標記。工作負載將能夠對運行狀況做出反應,以保護數據不被從不健康的捲上寫入或讀取。

棄用 PodSecurityPolicy

PodSecurityPolicy 作爲 Kubernetes 目前常用的安全策略管理和授權機制,在一些限制存儲和網絡特權使用的場景中,提供了諸多便利。但因版本不兼容等問題,PodSecurityPolicy在 Kubernetes 1.21 中被棄用。與 Kubernetes 所有已棄用的特性一樣,PodSecurityPolicy將在其他多個版本中繼續可用並提供完整的功能。之前處於測試階段的 PodSecurityPolicy 計劃在 Kubernetes 1.25 中刪除。

棄用 TopologyKeys

在 Kubernetes 1.21 中,服務字段 topologyKeys 被棄用;使用此字段的所有組件功能以前都是alpha,現在也已棄用。我們用一種實現感知拓撲路由的方法替換了 topologyKeys,這種支持拓撲的提示是 Kubernetes 1.21 中的一個 alpha 特性。

減少Kubernetes的構建維護

之前,Kubernetes維護了多個構建系統,這通常是造成新貢獻者和現有貢獻者之間摩擦以及複雜性的根源。在上一個發佈週期中,爲了簡化構建過程和標準化原生的 Golang 構建工具,我們投入了大量的精力。

在此次發佈週期中,圍繞發佈流程的所有權也產生重大轉變:從定期向社區請求輸入的同步通信模式,轉變爲社區選擇模式——發佈中加入特性或博客。這使社區協作和團隊合作得到進一步增強。

引入暫停作業特性

Job(作業)是 Kubernetes API 的重要組成部分。雖然其他類型的工作負載(例如Deployments,ReplicaSets,StatefulSets和DaemonSets)解決了需要 Pod 永遠運行的用例,但 Job 在 Pod 需要運行到完成時非常有用。Job 通常用於並行批處理,可以用於各種應用程序,如視頻渲染、數據庫維護、科學計算等。

雖然並行度和 Job 完成的條件是可配置的,但 Kubernetes API 缺乏暫停和恢復Job 的能力。當集羣資源有限,需要在另一個 Job 的位置上執行一個更高優先級的 Job 時,通常需要刪除較低優先級的 Job ,這是一個糟糕的解決方案,因爲 Pod 完成歷史和其他與 Job 相關的指標將會丟失。

在Kubernetes 1.21 版本中,你可以通過更新其規範來暫停 Job。該特性目前處於 alpha 階段,需要你在 API 服務器和控制器管理器上啓用 suspend Job 特性門才能使用它。

其他更新

Graduated toStable

  • EndpointSlice

  • Add sysctlsupport

  • PodDisruptionBudgets

Notable FeatureUpdates

  • Externalclient-go credential providers - 1.21是beta版

  • Structuredlogging – 計劃1.22升級到 beta 版

  • TTL afterfinish cleanup for Jobs and Pods – 升級到beta版

原文鏈接:https://kubernetes.io/blog/2021/04/08/kubernetes-1-21-release-announcement/

 

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