Kubernetes 1.27發(fā)布,新主題命名為Chill Vibes,這個版本包含60個增強(qiáng)功能。這些增強(qiáng)功能中有18個正在進(jìn)入Alpha版本,29個正在升級到Beta版本,13個正在升級到穩(wěn)定版本。下面一起來看下Kubernetes 1.27主要新增功能有哪些。a
Kubernetes 1.27主要功能介紹:
1、凍結(jié) k8s.gcr.io鏡像倉庫
用 registry.k8s.io 替換舊的鏡像倉庫 k8s.gcr.io,后者已經(jīng)普遍可用了幾個月。Kubernetes 項(xiàng)目創(chuàng)建并運(yùn)行 registry.k8s.io 鏡像倉庫,完全由社區(qū)控制。這意味著舊的鏡像倉庫 k8s.gcr.io 將被凍結(jié),并且不會再發(fā)布 Kubernetes 和相關(guān)子項(xiàng)目的鏡像到舊的鏡像倉庫。
2、SeccompDefault 升級到穩(wěn)定版
要使用默認(rèn)的 seccomp 配置文件,您需在每個要使用它的節(jié)點(diǎn)上使用 –seccomp-default 命令行標(biāo)志運(yùn)行 kubelet。如果啟用,kubelet 將默認(rèn)使用 RuntimeDefault seccomp 配置文件,該配置文件由容器運(yùn)行時定義,而不是使用 Unconfined 模式。默認(rèn)配置文件旨在提供強(qiáng)大的安全默認(rèn)值,同時保留工作負(fù)載的功能。容器運(yùn)行時及其發(fā)布版本之間的默認(rèn)配置文件可能不同。
您可以在相關(guān)的Kubernetes增強(qiáng)提案(KEP)中找到有關(guān)可能的升級和降級策略的詳細(xì)信息
3、Jobs 可變調(diào)度指令 GA
這是在Kubernetes v1.22 中引入的,開始是作為測試版,現(xiàn)在已經(jīng)穩(wěn)定了。在大多數(shù)情況下,并行作業(yè)會希望 Pod 在約束條件下運(yùn)行,例如所有 Pod 在同一區(qū)域內(nèi),或者所有 Pod 都在 GPU model x 或 y 上運(yùn)行,而不是混合運(yùn)行。 suspend 字段是實(shí)現(xiàn)這些語義的第一步。 suspend 允許自定義隊(duì)列控制器決定何時啟動作業(yè)。但是,一旦作業(yè)被取消掛起,自定義隊(duì)列控制器就無法影響作業(yè)的 Pod 實(shí)際放置位置。
該功能特性允許在作業(yè)開始之前更新 Jobs 的調(diào)度指令,這使得自定義隊(duì)列控制器能夠影響 Pod 的放置,同時將實(shí)際的 pod-to-node 的分配卸載給 kube-scheduler。這僅適用于以前從未恢復(fù)過的已掛起 Jobs。
4、DownwardAPIHugePages 升級為穩(wěn)定版
在 Kubernetes v1.20 中,對 requests.hugepages-
5、Pod 調(diào)度進(jìn)入測試階段
創(chuàng)建后,Pods 可以進(jìn)行調(diào)度了。Kubernetes 調(diào)度器會盡力找到節(jié)點(diǎn)來放置所有待定的 Pods。然而,在實(shí)際情況中,一些 Pods 可能會長時間處于缺少必要資源的狀態(tài)。這些 Pod 實(shí)際上是以不必要的方式攪亂了調(diào)度器(以及下游集成器,如 Cluster Autoscaler)。
通過指定 / 刪除 Pod 的 .spec.schedulingGates ,可以控制 Pod 何時可以被考慮進(jìn)行調(diào)度。
6、通過 Kubernetes API 訪問 Node 日志
該功能幫助集群管理員通過允許他們查詢服務(wù)日志來調(diào)試運(yùn)行在節(jié)點(diǎn)上的服務(wù)的問題。要使用此功能,請確保在該節(jié)點(diǎn)上啟用了 NodeLogQuery ,且 kubelet 配置選項(xiàng) enableSystemLogHandler 和 enableSystemLogQuery 均設(shè)置為 true。在 Linux 上,我們假定服務(wù)日志可通過 journald 獲得。在 Windows 上,我們假定服務(wù)日志可在應(yīng)用程序日志提供程序中獲得。您還可以從 Linux 和 Windows 上的 /var/log/ 和 C:\\var\\log 目錄中獲取日志。
7、ReadWriteOncePod PersistentVolume 進(jìn)入測試階段
Kubernetes v1.22 引入了一種新的訪問模式 ReadWriteOncePod,用于 PersistentVolumes(PV)和 PersistentVolumeClaims(PVC)。此訪問模式使你能夠?qū)⒕碓L問限制為集群中的單個 Pod,確保僅有一個 Pod 可以同時寫入該卷。這對于需要對存儲進(jìn)行 single-writer 的有狀態(tài)工作負(fù)載特別有用。
ReadWriteOncePod beta 增加了對使用 ReadWriteOncePod PVC 的 Pod 的調(diào)度程序搶占支持。調(diào)度程序搶占允許更高優(yōu)先級的 Pod 搶占低優(yōu)先級的 Pod。
8、滾動升級后遵循 PodTopologySpread
matchLabelKeys 是一個 Pod 標(biāo)簽鍵的列表。這些鍵用于從 Pod 標(biāo)簽中查找值。這些鍵值標(biāo)簽與 labelSelector 進(jìn)行 AND 運(yùn)算,以選擇現(xiàn)有 Pod 組,計(jì)算傳入 Pod 的分布。在 Pod 標(biāo)簽中不存在的鍵將被忽略??樟斜肀硎緝H匹配 labelSelector 。
使用 matchLabelKeys ,用戶無需在不同版本之間更新 pod.spec ??刂破髦恍铻椴煌姹镜耐?label 鍵設(shè)置不同的值。調(diào)度程序?qū)⒏鶕?jù) matchLabelKeys 自動假定這些值。
9、使用掛載加速 SELinux 卷重新標(biāo)記
在此版本中,應(yīng)用于 Pod 使用的卷的 SELinux 標(biāo)簽的方式將升級為 beta 版本。該功能通過掛載具有正確 SELinux 標(biāo)簽的卷來加快容器啟動速度,而不是遞歸更改卷上的每個文件。支持 SELinux 的 Linux 內(nèi)核允許在第一次掛載卷的時候使用 -o context= 掛載選項(xiàng)在整個卷上設(shè)置 SELinux 標(biāo)簽,從而使所有文件在恒定時間內(nèi)分配給定標(biāo)簽,而無需遞歸地遍歷整個卷。
10、VolumeManager 重構(gòu)進(jìn)入測試階段
這是一個卷管理器重構(gòu),允許 kubelet 在啟動期間填充有關(guān)現(xiàn)有卷如何掛載的其他信息。一般來說,這使得卷清理更加穩(wěn)健。如果在節(jié)點(diǎn)上啟用 NewVolumeManagerReconstruction,你將在 kubelet 啟動期間獲得已掛載卷的增強(qiáng)發(fā)現(xiàn)功能。
在 Kubernetes v1.25 之前,kubelet 在啟動期間發(fā)現(xiàn)已掛載的卷時使用了不同的默認(rèn)行為。如果你禁用此功能(默認(rèn)情況下啟用),則選擇傳統(tǒng)的發(fā)現(xiàn)行為。