Kubernetes v1.20 重磅發布,新版本核心主題&主要變化解讀|容器與雲
導讀:美國時間 12 月 8 日,Kubernetes v1.20 正式發布,這是 2020 年的第三個新版本,也是最後一個版本。該版本包含 42 個增強功能:其中 11 個增強功能趨於穩定,15 個進入 Beta,16 個進入 Alpha。
本文字數:2910,閱讀時長大約:4分鐘
K8sMeetup 中國社區第一時間整理了 v1.20?的亮點內容,為大家詳細介紹此版本的主要功能。
美國時間 12 月 8 日,Kubernetes v1.20 正式發布,這是 2020 年的第三個新版本,也是最後一個版本。該版本包含 42 個增強功能:其中 11 個增強功能趨於穩定,15 個進入 Beta,16 個進入 Alpha。
之前擴展發布周期後,v1.20 發布周期恢復到正常的 11 周。這是近來功能最密集的版本之一:Kubernetes 更新速度仍在加快。該版本 Alpha 增強功能比穩定的增強功能更多,這表明在雲原生生態系統中還有許多值得探索的空間。
核心主題
新版本主要圍繞以下主題:
1、存儲卷快照功能趨於穩定
現在提供了觸發存儲卷快照功能的標準方法,並允許用戶以可移植的方式在 Kubernetes 環境或任何受支持的存儲提供程序上合併快照操作。同時,Kubernetes 快照原語可作為基礎構建塊,能提供 Kubernetes 開發企業級存儲管理功能的能力,包括應用程序以及集群備份解決方案。
另外,快照支持需要 Kubernetes 發行廠商捆綁 Snapshot 控制器、Snapshot CRD 和驗證 Webhook。支持快照功能的 CSI 驅動程序也要部署在集群上。
2、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。
3、Beta:API 優先順序和公平性
v1.18 版本引入的 API 優先順序和公平性(APF)功能現在在 Kubernetes v1.20 默認啟用,它能讓 kube-apiserver 按優先順序對傳入的請求進行分類。
4、IPV4/IPV6 Alpha 功能更新
IPv4/IPv6 雙協議棧基於用戶和社區反饋重新實現,現在既可以將 IPv4 與 IPv6 服務集群 IP 地址分配給單個服務,也可以在服務中實現單 IP 棧與雙 IP 棧的切換。
5、GA:限制進程 PID
進程 ID(PID)是 Linux 主機上的基本資源,為避免主機不穩定,要達到任務限制與資源限制的平衡。
管理員需要一些機制來確保用戶 Pod 不會導致 PID 耗盡,以避免主機守護程序(運行時、kubelet 等)停止運行。另外,也要確保在容器之間限制 PID,以確保不會對節點上其他工作負載造成影響。在一年前默認啟用後,SIG Node 通過 SupportNodePidsLimit(node-to-pod PID 隔離)和 SupportPodPidsLimit(能在 Pod 限制 PID)將限制進程 PID 推向 GA。
6、Alpha:節點優雅關閉
用戶和集群管理員希望 Pod 以預定的 Pod 生命周期運行,包括 Pod 終止。但目前節點關閉時,Pod 不會遵循預期的 Pod 終止生命周期,並無法正常終止,這可能會導致工作負載出現問題。GracefulNodeShutdown 功能現在進入 Alpha,它能讓 kubelet 知道節點系統關閉,從而在系統關閉期間正常終止 Pod。
重要更新
以下是 v1.20 中值得關注的變化:
1、Dockershim 棄用
v1.20 將棄用 Dockershim,即 Docker 容器運行時介面(CRI),這意味著不再支持 Docker,並將在後續版本中刪除。由於Docker 鏡像遵循開放容器倡議(OCI)鏡像規範,所以 Docker 產生的鏡像能在所有 CRI 兼容運行時的集群中正常使用。詳情可見《Kubernetes 棄用 Docker 來龍去脈》。
2、Exec 探針超時處理
修正了長期存在的 exec 探針超時錯誤,該 bug 可能會對現有 pod 定義造成影響。在發布該修復程序之前,exec 探針未考慮 timeoutSeconds 欄位,並會無限期運行,甚至超過配置限制,直到返回結果。此次修復後,如果未指定值,探針會默認為 1 秒;如果探針時間超過 1 秒,現有 Pod 定義可能無法滿足。此次修復還添加了一個名為 ExecProbeTimeout 的 feature gate,它能讓集群操作員還原到以前的行為,但在後續發行版中,它將被鎖定並刪除。如果要恢復以前的行為,要將該 feature gate 設置為 false。
其他更新
1、以下特性進入穩定
??RuntimeClass
??內置 API 類型默認值
??添加 Pod-Startup Liveness-Probe 延遲
??在 Windows 上支持 CRI-ContainerD
??SCTP 支持 Service
??將 AppProtocol 添加到 Service 和 Endpoint
2、重要功能更新
??#19 CronJobs:用於執行所有與時間相關的操作,即備份,報告生成等。
吉祥物
對於許多人來說,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