阿里雲Container Service for Kubernetes嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.34版本的主要變更說明,包括升級注意事項、重大變更、功能特性、棄用功能和API、特性門控等。
組件版本說明
下表為ACK叢集核心組件版本的支援情況。
核心組件 | 版本號碼 |
Kubernetes | 1.34.1-aliyun.1、1.34.3-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.3 |
CoreDNS | v1.11.3.5-5321daf49-aliyun |
CSI | 升級至組件當前支援的最新版本。詳細資料,請參見組件變更記錄csi-plugin、csi-provisioner。 |
CNI | Flannel v0.15.1.23-33d25c1-aliyun |
Terway和TerwayControlplane為v1.15.0及以上 |
重大變化
自 1.34 版本起,建立節點池不指定OS鏡像時,預設使用Alibaba Cloud Linux 3 容器最佳化版。
自 1.34 版本起,建立叢集時選擇Terway網路外掛程式且勾選DataPath V2(通過 eBPF 加速共用 ENI 模式的網路訪問)時,Terway啟動並執行節點上將不再運行kube-proxy容器。
此變更僅對建立叢集生效。
自 1.34 版本起,在ACK託管叢集Pro版中建立普通節點池和託管節點池時,預設啟用
serverTLSBootstrap參數及RotateKubeletServerCertificate特性門控。啟用該配置後,節點池中各節點的 kubelet 服務端認證支援自動輪轉,同時支援使用叢集 CA 驗證 kubelet 服務端認證,協助提升叢集節點安全能力。
自 1.34 版本起,kubelet 服務端將不再支援
TLS_RSA_WITH_AES_256_GCM_SHA384和TLS_RSA_WITH_AES_128_GCM_SHA256TLS加密套件。存量叢集升級至1.34後,建立的節點將自動應用此變更。從 1.34 版本起,不再支援在節點註冊時將其標記為
unschedulable,節點池配置設定為不可調度也不再生效。詳情請參見kubelet: remove --register-schedulable flag #122384。建議使用節點汙點(Taints)作為替代方案,避免 Pod 調度到新註冊的節點上。配置汙點時,請勿使用
node.kubernetes.io/unschedulable作為Key。
功能變更
動態資源分派Dynamic Resource Allocation(DRA)的核心功能進階至GA,預設啟用。基於DRA,工作負載可以通過指定所需的裝置屬性來請求資源。調度器負責完成實際的裝置分配,並將 Pod 放置在可以訪問所分配裝置的節點上。隨後,由裝置驅動程式和 kubelet 負責完成裝置配置以及 Pod 訪問裝置的許可權授予。
還有部分DRA相關特性進階至Beta,預設啟用。這包括:支援管理員使用有限許可權訪問他人已在使用的裝置以進行監控和診斷;支援在請求時配置一個可選的、滿足需求的裝置分配方案列表;以及 kubelet 會監控並上報節點上 Pod 已指派的 DRA 資源情況。
kubelet支援使用短期憑證向容器鏡像倉庫進行身分識別驗證,避免使用長期憑證的潛在風險,提高安全性。詳情請參見Service Account Token Integration for Image Pulls Graduates to Beta。
Job 的 Pod 替換策略進階至GA,旨在最佳化 Pod 的替換時機。預設情況下,替換 Pod 在舊 Pod 開始終止時便會立即建立,可能導致資源衝突。通過配置
.spec.podReplacementPolicy欄位,可以將替換行為延遲至舊 Pod 完全終止之後,從而避免因資源競爭或不必要的節點擴容而產生問題。RecoverVolumeExpansionFailure進階至GA。當因在 PVC 中請求的卷擴充容量過大而導致失敗時,允許通過調小 PVC 的容量請求來實現恢複。Volume Attributes Classes進階至GA,預設啟用。允許將卷的通用參數定義在
VolumeAttributesClass對象中。PVC 只需引用該對象即可應用這些參數。當Static Pod 所引用的 Secret、ConfigMap、PVC 或 ServiceAccount 等 API 對象不存在時,kubelet 會拒絕啟動其容器,防止 Pod 因缺少必要依賴而進入不確定的運行狀態。
最佳化kube-apiserver的穩定性和效能:
從緩衝完成讀請求,減少透傳etcd,降低kube-apiserver記憶體壓力。1.31支援一致性讀請求Consistent Reads from Cache,1.34支援快照緩衝歷史版本資料Snapshottable API server cache。
針對
LIST請求,支援以流式方式返回資料,使得服務端在處理請求時僅需佔用恒定的較小記憶體,有效避免了因用戶端拉取大量資料而導致的服務端記憶體激增問題。詳情請參見Streaming Encoding for LIST Responses。
在1.34.3-aliyun.1中解決使用 DRA 方式申請資源的 Pod 在刪除時卡在
Terminating狀態的問題,詳見#133920。
功能特性
PodLevelResources進階至Beta。與傳統的容器級資源定義不同,該特性允許在 Pod 層級設定總的資源請求與限制,以確保 Pod 內所有容器的資源消耗不會超過 Pod 自身限制。詳情請參見Pod Level Resource Specifications。
暫不支援 Windows 節點。
kubectl 預設支援通過
.kuberc檔案定義使用者喜好設定。與包含認證憑證的kubeconfig不同,該檔案專門用於存放非敏感的用戶端配置。詳情請參見Introduce kuberc。ExternalServiceAccountTokenSigner進階至Beta。該特性引入一個外部簽名的ExternalJWTSignergRPC服務,通過外部金鑰管理解決方案來為ServiceAccount令牌簽名,從而代替本地靜態密鑰簽名方式。SchedulerAsyncAPICalls進階至Beta,預設啟用kube-scheduler非同步呼叫API功能。此特性旨在解決 kube-scheduler 在調度周期中因阻塞式 API 呼叫而產生的效能瓶頸。通過將這些調用改為非同步處理,可有效降低調度延遲,防止調度器線程因 API 響應緩慢而被阻塞,並為不可調度 Pod 提供更快的重試機會。詳情請參見Asynchronous API calls during scheduling。
WindowsGracefulNodeShutdown進階至Beta,支援Windows節點優雅關閉。PreferSameTrafficDistribution進階至Beta。允許通過設定 Service 的
.spec.trafficDistribution欄位為PreferSameZone或PreferSameNode,來優先將流量路由至同一可用性區域或同一節點內的端點。相應的,原有的PreferClose選項已被廢棄。詳情請參見Traffic Distribution。kubeletPSI進階至Beta,允許kubelet在Summary API 和 Prometheus 指標中使用Pressure Stall Information (PSI) 指標。詳情請參見PSI Metrics for Kubernetes Graduates to Beta。
CPU管理器的靜態策略支援
prefer-align-cpus-by-uncorecache,最佳化運行在具有分離的非核心緩衝架構處理器上的工作負載效能。詳情請參見Introducing CPU Manager Static Policy Option for Uncore Cache Alignment。
參考連結
關於Kubernetes 1.34完整的變更記錄,請參見CHANGELOG-1.34、Kubernetes v1.34: Of Wind & Will (O' WaW)。