Kubernetes v1.20 重磅發佈 | 新版本核心主題 & 主要變化解讀

作者:Bach(才雲)、bot(才雲)

技術校對:星空下的文仔(才雲)

美國時間 12 月 8 日,Kubernetes v1.20 正式發佈,這是 2020 年的第三個新版本,也是最後一個版本。該版本包含 42 個增強功能:其中 11 個增強功能趨於穩定,15 個進入 Beta,16 個進入 Alpha。

之前擴展發佈週期後,v1.20 發佈週期恢復到正常的 11 周。這是近來功能最密集的版本之一:Kubernetes 更新速度仍在加快。該版本 Alpha 增強功能比穩定的增強功能更多,這表明在雲原生生態系統中還有許多值得探索的空間。

Major Themes

新版本主要圍繞以下主題:

存儲卷快照功能趨於穩定

現在提供了觸發存儲卷快照功能的標準方法,並允許用戶以可移植的方式在 Kubernetes 環境或任何受支持的存儲提供程序上合併快照操作。同時,Kubernetes 快照原語可作爲基礎構建塊,能提供 Kubernetes 開發企業級存儲管理功能的能力,包括應用程序以及集羣備份解決方案。

另外,快照支持需要 Kubernetes 發行廠商捆綁 Snapshot 控制器、Snapshot CRD 和驗證 Webhook。支持快照功能的 CSI 驅動程序也要部署在集羣上。

Kubectl Debug 進入 Beta

kubectl alpha debug 功能在 v1.20 進入 Beta 版,並更名爲 kubectl debug。該功能能通過 kubectl 提供常見調試工作流的支持。現在 kubectl 支持的故障排除方案包括:

  • 通過創建使用其他容器鏡像的 Pod 副本解決啓動時工作負載崩潰的問題。
  • 通過在 Pod 的新副本或臨時容器(臨時容器是一項默認不啓用的 Alpha 功能。)使用調試工具添加新容器來解決 Distroless 容器的故障。
  • 通過在主機命名空間中創建能運行並具有訪問主機文件系統權限的容器,對節點進行故障排除。

作爲新的內置命令,kubectl debug 比任何名字帶有 “debug” 的 kubectl 插件優先級都要高,因此必須重命名受影響的插件。

在 v1.20 中,不建議繼續使用 kubectl alpha debug。後續發行版中其也被刪除,建議更新腳本使用 kubectl debug。

Beta:API 優先級和公平性

v1.18 版本引入的 API 優先級和公平性(APF)功能現在在 Kubernetes v1.20 默認啓用,它能讓 kube-apiserver 按優先級對傳入的請求進行分類。

IPV4/IPV6 Alpha 功能更新

IPv4/IPv6 雙協議棧基於用戶和社區反饋重新實現,現在既可以將 IPv4 與 IPv6 服務集羣 IP 地址分配給單個服務,也可以在服務中實現單 IP 棧與雙 IP 棧的切換。

GA:限制進程 PID

進程 ID(PID)是 Linux 主機上的基本資源,爲避免主機不穩定,要達到任務限制與資源限制的平衡。

管理員需要一些機制來確保用戶 Pod 不會導致 PID 耗盡,以避免主機守護程序(運行時、kubelet 等)停止運行。另外,也要確保在容器之間限制 PID,以確保不會對節點上其他工作負載造成影響。在一年前默認啓用後,SIG Node 通過 SupportNodePidsLimit(node-to-pod PID 隔離)和 SupportPodPidsLimit(能在 Pod 限制 PID)將限制進程 PID 推向 GA。

Alpha:節點優雅關閉

用戶和集羣管理員希望 Pod 以預定的 Pod 生命週期運行,包括 Pod 終止。但目前節點關閉時,Pod 不會遵循預期的 Pod 終止生命週期,並無法正常終止,這可能會導致工作負載出現問題。GracefulNodeShutdown 功能現在進入 Alpha,它能讓 kubelet 知道節點系統關閉,從而在系統關閉期間正常終止 Pod。

重要更新

以下是 v1.20 中值得關注的變化:

Dockershim 棄用

v1.20 將棄用 Dockershim,即 Docker 容器運行時接口(CRI),這意味着不再支持 Docker,並將在後續版本中刪除。由於Docker 鏡像遵循開放容器倡議(OCI)鏡像規範,所以 Docker 產生的鏡像能在所有 CRI 兼容運行時的集羣中正常使用。詳情可見《Kubernetes 棄用 Docker 來龍去脈》

Exec 探針超時處理

修正了長期存在的 exec 探針超時錯誤,該 bug 可能會對現有 pod 定義造成影響。在發佈該修復程序之前,exec 探針未考慮 timeoutSeconds 字段,並會無限期運行,甚至超過配置限制,直到返回結果。此次修復後,如果未指定值,探針會默認爲 1 秒;如果探針時間超過 1 秒,現有 Pod 定義可能無法滿足。此次修復還添加了一個名爲 ExecProbeTimeout 的 feature gate,它能讓集羣操作員還原到以前的行爲,但在後續發行版中,它將被鎖定並刪除。如果要恢復以前的行爲,要將該 feature gate 設置爲 false。

其他更新

以下特性進入穩定

  • RuntimeClass
  • 內置 API 類型默認值
  • 添加 Pod-Startup Liveness-Probe 延遲
  • 在 Windows 上支持 CRI-ContainerD
  • SCTP 支持 Service
  • 將 AppProtocol 添加到 Service 和 Endpoint

重要功能更新

#19 CronJobs:用於執行所有與時間相關的操作,即備份,報告生成等。

發佈 logo

對於許多人來說,2020 年是充滿挑戰的一年,但是 Kubernetes 的貢獻者在此版本中提供了創紀錄的增強功能。這是一項巨大的成就,因此發佈負責人希望在今年結束時有所成就,並向 Kubernetes 1.14-Caturnetes 致敬,包括一隻名爲 “Humphrey” 的 “rad” 貓。

圖片

本文只簡單介紹了 Kubernetes v1.20 中的一些重要增強功能,以及企業用戶和個人開發者可能會比較關注的新功能。關於新版本的更多內容,請查看官方文檔:

https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/

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

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