阿里雲Container Service for Kubernetes嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.35版本的主要變更說明,包括升級注意事項、重大變更、功能特性、棄用功能和API、特性門控等。
組件版本說明
下表為ACK叢集核心組件版本的支援情況。
核心組件 | 版本號碼 |
Kubernetes | 1.35.1-aliyun.1、1.35.2-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.5 |
CoreDNS | v1.12.1.2 |
CSI | 升級至組件當前支援的最新版本。詳細資料,請參見組件變更記錄csi-plugin、csi-provisioner。 |
CNI | Flannel v0.28.0.6 |
Terway和TerwayControlplane為v1.15.0及以上 |
重大變化
功能變更
Service 的
trafficDistribution欄位新增的PreferSameNode選項進入穩定階段(GA)。此選項使流量優先路由到本節點上的端點,僅在節點上無可用端點時回退到其他節點。該功能的特性門控
PreferSameTrafficDistribution自 1.34 起預設啟用,同時支援PreferSameNode和PreferSameZone。原有的PreferClose選項已重新命名為PreferSameZone。PodObservedGenerationTracking進入穩定階段。當 Pod 的spec更新時,其.metadata.generation會遞增。Kubelet 會在 Pod 的.status.observedGeneration欄位中記錄其已處理的spec版本。 這有助於控制器和 Operator 準確判斷 Pod 的變更(例如原地擴縮容)是否已在節點上生效,從而避免因狀態更新延遲而引發的問題。節點拓撲管理器策略選項
max-allowable-numa-nodes(max-allowable-numa-nodes)進入穩定階段,拓撲管理器可在超過 8 個 NUMA 節點的伺服器上正確計算親和性。Downward API 現已支援將節點的拓撲標籤(如
topology.kubernetes.io/zone、topology.kubernetes.io/region)注入到 Pod 中。StorageVersionMigrator進階至Beta,預設關閉,將儲存版本遷移(Storage Version Migration)能力從外部工具遷移至 Kubernetes 內部實現。詳見Move Storage Version Migrator in-tree。MutableCSINodeAllocatableCount預設啟用,允許 CSI 驅動定期更新節點上可分配卷的數量資訊。這有助於解決節點可分配卷容量資訊更新不及時的問題,此問題可能導致 Pod 被調度到卷容量不足的節點上,並卡在ContainerCreating狀態。通過引入Opportunistic batching,調度器可以緩衝調度中間結果,從而顯著提升相似 Pod 的調度輸送量。
MaxUnavailableStatefulSet進階至 Beta 並預設啟用。該功能允許為 StatefulSet 的變換原則設定maxUnavailable欄位,用於指定更新過程中不可用 Pod 數量的上限。Pod Certificates 進階至 Beta,預設禁用。該功能支援為 Pod 產生認證用於和 kube-apiserver 進行雙向認證訪問,並支援認證的自動輪轉,提供了比傳統 ServiceAccount 令牌更安全的認證方式。詳見KEP-4317: Pod Certificates。
Kubectl 支援使用 KYAML 格式。KYAML 是為 Kubernetes 設計的 YAML 子集,旨在解決標準 YAML 在解析時的一些歧義和安全問題。可通過設定環境變數
KUBECTL_KYAML=false來禁用此功能。詳見Introducing KYAML。HorizontalPodAutoscaler (HPA) 的
behavior欄位現已支援配置容忍度閾值。此前,擴縮容決策依賴於一個固定的全域 10% 容忍度,現可按需靈活配置。使用者命名空間(User Namespaces)進階至 Beta 。此功能允許 Pod 在一個與主機隔離的使用者命名空間中運行。容器進程可以在其命名空間內以 root (UID 0) 身份運行,但在主機上會被映射為一個無特權的非零使用者識別碼,降低因容器逃逸而導致許可權提升的安全風險。
ImageVolume預設啟用,允許在 Pod 中使用image類型的卷。這種卷可以將容器鏡像的內容作為唯讀卷掛載到 Pod 中。使用此功能時,containerd 需為 v2.1 或更高版本。KubeletEnsureSecretPulledImages進階至 Beta 並預設啟用。此功能通過強制對使用imagePullPolicy: IfNotPresent的 Pod 進行憑據校正,提升多租戶叢集的安全性。它能有效防止以下情境:一個有憑據的 Pod 將私人鏡像拉取到節點上後,同一節點上其他無憑據的 Pod 能夠利用本機快取訪問該敏感鏡像。ContainerRestartRules進階至 Beta 並預設啟用,實現了更細粒度的容器級重啟策略配置。支援通過為容器指定restartPolicy和restartPolicyRules來覆蓋 Pod 層級的重啟策略。詳見Individual container restart policy and rules。CSI 驅動支援將
CSIDriver對象中的spec.serviceAccountTokenInSecrets欄位設定為true,以通過 Secret 掛載 ServiceAccount 令牌,而不是將其直接放在volume context中。這有助於防止憑據在日誌和錯誤資訊中被意外泄露。詳見CSI driver opt-in for service account tokens via secrets field。Deployment 新增
terminatingReplicas欄位,用於記錄已設定刪除時間戳記但尚未從系統中完全移除的 Pod 數量。在1.35.2-aliyun.1中修複 CVE-2025-61732和CVE-2025-68121。
棄用說明
自 1.35 版本起,kube-proxy 的
ipvs模式已被標記為棄用,並計劃在未來版本中移除。官方推薦切換至 nftables模式 (自 v1.33 起穩定)。考慮到nftables模式相對較新,ACK 建立新叢集時仍預設使用ipvs模式,並計劃在後續版本中提供nftables模式的支援。建議使用完全不依賴 kube-proxy 的 Terway Datapath V2。
1.35 是最後一個支援 containerd 1.x 的版本。在升級至 1.36 及以上版本前,需將 containerd 升級至 2.x 版本。ACK叢集自 1.33 版本起已預設使用 containerd 2.x。詳見containerd 2.1介紹。
參考連結
關於Kubernetes 1.35完整的變更記錄,請參見CHANGELOG-1.35、Kubernetes v1.35: Timbernetes (The World Tree Release)。