阿里雲Container Service for Kubernetes嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.33版本的主要變更說明,包括升級注意事項、重大變更、功能特性、棄用功能和API、特性門控等。
組件版本說明
下表為ACK叢集核心組件版本的支援情況。
核心組件 | 版本號碼 |
Kubernetes | 1.33.1-aliyun.1、1.33.3-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.1 |
CoreDNS | v1.11.3.5-5321daf49-aliyun |
CSI | 升級至組件當前支援的最新版本。詳細資料,請參見組件變更記錄csi-plugin、csi-provisioner。 |
CNI | Flannel v0.15.1.22-20a397e6-aliyun |
Terway和TerwayControlplane為v1.14.0及以上 |
升級注意事項
如果叢集中存在1.20及以下版本建立的Pod,且這些Pod從未發生過容器重啟或更新,那麼當叢集升級至1.33版本時,這些Pod將進行一次容器重啟。
重大變化
自 1.33 版本起,ACK預設使用 containerd 2.1。針對存量叢集,ACK會在節點升級過程中同步升級容器運行時至 containerd 2.1 版本。詳情請參見containerd 2.1介紹。
從 1.33 版本開始,新建立的ACK託管叢集預設安裝最新版本的ack-ram-authenticator託管組件。詳情請參見【產品公告】關於ACK託管叢集自1.33版本起預設安裝ack-ram-authenticator組件的公告。
功能變更
原地調整Pod資源進階至Beta,預設啟用。該功能允許在不重啟Pod的前提下動態修改容器的 CPU和記憶體資源配置。
kubectl支援通過
--subresources命令對資源的特定子資源進行調整,例如通過kubectl edit pod <pod-name> --subresource resize動態調整Pod資源大小。1.33版本支援的Subresource包括status、scale和resize。EndpointSlice TopologyAwareHints進階至GA。Beta版的Annotation
service.kubernetes.io/topology-mode已棄用。建議使用spec.trafficDistribution欄位定義拓撲策略。例如,通過配置trafficDistribution為PreferClose,可將流量優先路由至與用戶端位於同一Zone的端點。詳情請參見Traffic distribution。Pod的
.status.resize欄位已廢棄且不支援設定,新增兩個Condition欄位PodResizeInProgress和PodResizePending。DisableNodeKubeProxyVersion預設啟用,且不允許禁用。kubelet不會再設定節點的
status.kubeProxyVersion欄位。StatefulSets的
.spec.serviceName欄位變為可選,強化了對其欄位合法性的校正,必須符合DNS1123標準校正。如果存量StatefulSet的.spec.serviceName欄位未通過校正,將無法建立新的Pod,需手動移除該欄位。此更新將原本在Pod建立階段進行的DNS校正前置到StatefulSet資源設定階段,減少StatefulSet Controller的失敗重試。Git-Repo卷外掛程式預設禁用。如需保留,可手動開啟
GitRepoVolumeDriver特性門控。在1.33.3-aliyun.1中修複了漏洞CVE-2025-4563。
功能特性
Sidecar Containers進階至GA,預設啟用。Sidecar Container作為一種特殊的Init Container,可通過
restartPolicy: Always確保其在Pod生命週期中始終運行,支援探針配置。OrderedNamespaceDeletion進階至 Beta。該特性最佳化了命名空間資源釋放流程:刪除命名空間時,將優先刪除工作負載Pod,隨後依次清理NetworkPolicy、儲存資源等依賴項,避免關鍵安全資源移除後Pod仍舊殘留的風險。
SupplementalGroupsPolicy進階至Beta,預設啟用,支援通過
.spec.securityContext.supplementalGroupsPolicy欄位為Pod配置細粒度的SupplementalGroups控制,以實現對儲存卷存取權限更精細化的控制。詳情請參見Configure fine-grained SupplementalGroups control for a Pod。MultiCIDRServiceAllocator進階至GA,預設啟用,引入ServiceCIDR和IPAddress資源來記錄Service的ClusterIP分配情況,支援通過ServiceCIDR來動態增加ClusterIP的可分配範圍。
JobBackoffLimitPerIndex進階至GA,允許為索引作業中的每個索引指定Pod的最大重試次數。
JobSuccessPolicy進階至GA,允許自訂Job的成功策略,例如通過指定某些索引是否成功和成功的索引數量來判斷Job是否完成,請參見Job's SuccessPolicy Goes GA。
ImageVolume進階至Beta,預設禁用,需要手動開啟apiserver和kubelet的featureGates以支援允許在Pod中使用
image卷源,將容器鏡像作為唯讀卷掛載到Pod中。UserNamespacesSupport進階至Beta,預設啟用,允許Pod使用Linux使用者命名空間(User Namespaces)以增強容器安全性。該能力不影響現有Pod。如需使用,可手動指定
pod.spec.hostUsers。詳情請參見User Namespaces enabled by default。RelaxedDNSSearchValidation進階為Beta,預設啟用,允許在 Pod 的
.spec.dnsConfig.searches欄位中使用特殊字元,例如.、_,提升DNS配置靈活性。kube-apiserver預設禁用WatchList機制,轉而採用流式編碼機制(包括StreamingCollectionEncodingToJSON和StreamingCollectionEncodingToProtobuf)。該改進通過串流大規模資源清單請求,最佳化了List操作的效能表現。對於包含大量資源的List請求,可有效降低記憶體佔用並提升系統穩定性,請參見Streaming List responses。
kube-controller-manager不再主動啟用WatchListClient特性。
CPUManagerPolicyOptions進階至GA,預設啟用,允許微調CPU Manager的資源分派策略:
Pod需獨佔CPU時,強制進行SMT對齊,確保分配的 CPU 獨佔完整的物理核心,請參見cpu manager extension to reject non SMT-aligned workload。
CPU需跨NUMA節點分配資源時,可確保CPU資源在NUMA節點間均勻分布,請參見Add CPUManager policy option to distribute CPUs across NUMA nodes instead of packing them。
MatchLabelKeysInPodAffinity進階至GA,預設啟用,在Pod親和性規則中增加了
matchLabelKeys和mismatchLabelKeys,更精準地控制Pod的共存範圍。NodeInclusionPolicyInPodTopologySpread進階至於GA,預設啟用,允許在Pod拓撲分布約束使用
nodeAffinityPolicy和nodeTaintsPolicy動態篩選可調度節點。nodeAffinityPolicy:預設為Honor,僅將匹配 Pod 的nodeSelector或nodeAffinity的節點納入拓撲分布計算。nodeTaintsPolicy:預設為Ignore,忽略nodeAffinity和nodeSelector規則,將所有節點納入拓撲分布計算。
HonorPVReclaimPolicy 進階至GA,預設啟用,用於確保當PV的
reclaimPolicy設定為Delete時,無論 PV 或 PVC 的刪除順序如何,都會嚴格按照策略刪除底層儲存資源,避免儲存資源流失。ProcMountType進階至Beta,允許通過 Pod 的
securityContext.procMount欄位自訂容器中 /proc 檔案系統的掛載類型,以精細化控制/proc檔案系統的訪問,提升Pod安全性和隔離性。此功能適用於需要在使用者命名空間(User Namespaces)中運行非特權容器的情境,通過放寬對/proc 的限制,可增強相容性與靈活性。PodLifecycleSleepActionAllowZero進階至Beta,允許在容器生命週期回調
preStop中設定sleep操作的等待時間為0。允許使用
ResourceQuota限制特定Volume Attributes Class關聯的PVC數量。調度器效能最佳化:
新增SchedulerPopFromBackoffQ特性,預設啟用,通過最佳化調度隊列的處理邏輯,允許activeQ為空白時,直接從backoffQ中彈出Pod,顯著減少Pod的調度延遲。
SchedulerAsyncPreemption進階至Beta,預設啟用,允許將搶佔調度轉換為非同步執行。搶佔行為開銷較大,轉為非同步後可以有效降低調度延遲。
最佳化使用拓撲分布約束的Pod的調度效能。
棄用API
1.33預設使用containerd 2.1,containerd 2.1不再支援CRI v1alpha2 API。如依賴該版本API,需切換至CRI v1版本API以確保相容性。
v1版本的Endpoints API正式廢棄,推薦使用EndpointsSlice API代替。EndpointSlice API自1.21起已進入穩定點,引入了雙棧網路支援等特性。但v1版本的Endpoints API目前不會刪除。詳情請參見Continuing the transition from Endpoints to EndpointSlices。
apidiscovery.k8s.io/v2beta1 API組禁用,該 API 用於用戶端查詢叢集中所有登入的 API 資源資訊。建議遷移至v2穩定版本。舊版用戶端可通過回退機制自動使用未彙總的 v1 版本 API 實現服務發現功能,用戶端不會立即報錯。但若用戶端未適配 v2 版本,未彙總的資料需要多次調用 API 來擷取完整資訊,可能出現請求量增加和延遲上升。
參考連結
關於Kubernetes 1.33完整的變更記錄,請參見CHANGELOG-1.33、Kubernetes v1.33: Octarine。