全部產品
Search
文件中心

Container Compute Service:ACK發布Kubernetes 1.28版本說明

更新時間:Dec 11, 2024

阿里雲Container Service for Kubernetes嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.28版本的主要變更說明,包括升級注意事項、重大變更、功能特性、棄用功能和API、特性門控等。

組件版本說明

下表為ACS叢集核心組件版本的支援情況。

核心組件

版本號碼

Kubernetes

v1.28.3-aliyunacs.2

etcd

v3.5.9

CoreDNS

v1.9.3.10-7dfca203-aliyun

CRI

containerd 1.6.22.1-20240524143336

CSI

v1.30.1-1.acs-685ce77-aliyun

CNI

Terway和TerwayControlplane v1.5.0及以上

升級注意事項

組件

注意事項

CephFS和Ceph RBD儲存卷外掛程式

如果叢集使用了CephFS和RBD卷外掛程式,需檢查是否已經不再依賴Kubernetes自身提供的外掛程式驅動,改用樹外驅動(Off-Tree Driver)並評估相關相容性、穩定性或效能方面的風險。

相關概念

瞭解Kubernetes版本的功能變更和棄用資源前,您可能需要瞭解相關概念。

特性門控(Feature Gates)

特性門控(Feature Gates)用於描述一個特性的多個階段。一般有三個階段:

  • Alpha階段:預設禁用。

  • Beta階段:通常預設啟用。

  • GA階段:一直預設啟用,且不能禁用,不再需要相應的特性門控。

重大變更

  • 針對調度器,Kubernetes v1.28版本最佳化了調度邏輯,減少無效的重試,從而提高調度器的整體效能。

    如叢集中使用了自訂調度器外掛程式,建議對調度器外掛程式進行改造和升級,以提升調度器效能。更多資訊,請參見調度架構變化

  • 針對CSI遷移,Kubernetes社區一直推動將儲存相關外掛程式從源碼中移除,改用實現了CSI標準介面的樹外驅動,並已經於v1.25完成GA,於v1.27移除了APIstorage.k8s.io/v1beta1和EBS儲存外掛程式,於v1.28移除了CephFS卷外掛程式相關代碼並廢棄了kubernetes.io/rbd,轉為使用CephFS CSI驅動。此外,v1.28不再支援將Ceph RBD卷遷移到樹外CSI儲存驅動外掛程式。

  • 在1.28.9-aliyun.1版本修複了以下CVE漏洞:

    • CVE-2023-45288

    • CVE-2024-3177

    • CVE-2024-24786

功能特性

在Kubernetes 1.28版本

  • 節點非體面關閉(Non-graceful node shutdown)進入GA。節點由於斷電等故障導致非正常關閉時,有狀態應用程式需要及時在正常啟動並執行節點上重新啟動,以免影響業務正常運行。

  • NodeOutOfServiceVolumeDetach特性門控進入GA,允許異常節點上被終止的Pod立即進行卷分離操作,以支援Pod在其他節點上快速恢複。

  • 可追溯的預設StorageClass賦值進入GA。此前,當未配置storageClassName的PVC先於預設StorageClass存在時,PVC將永遠處於pending狀態。更新後,預設的StorageClass出現後,未配置storageClassName的PVC會自動更新使用預設的StorageClass。

  • 針對Job失效處理,引入2個新特性。

    • JobPodReplacementPolicy(Alpha特性門控)控制只有Pod達到Failed階段status.phase: Failed才被替換,而不是有deletionTimestamp處於終止過程中,以避免出現2個Pod同時佔用索引和節點資源。

    • JobBackoffLimitPerIndex (Alpha特性門控)通過配置.spec.backoffLimitPerIndex以限制Indexed Job一些索引的失敗重試次數,避免單個索引持續失敗達到.spec.backoffLimit限制而導致整體失敗。

  • Indexed Job如果設定超過10萬完成數(completion)和超過1萬並發度(parallelism),當大量Pod失敗時,可能無法追蹤Job的終止狀態。因此,在建立Job時,如果參數設定過大,將提示警告資訊。

  • 在CRD校正規則中添加reasonfieldPath欄位後,允許校正失敗時返回指定原因和欄位路徑。更多資訊,請參見CRD校正運算式語言

  • Webhook過濾請求新增支援CEL運算式,最多支援定義64個匹配條件。更多資訊,請參見動態准入控制匹配條件。

  • 新增SidecarContainers特性門控,支援Sidecar容器,最佳化容器啟動順序。例如,日誌收集Sidecar容器可以在其他容器之前啟動,以提高日誌收集的可靠性。更多資訊,請參見介紹原生Sidecar容器。該特性在v1.28處於Alpha階段,預設關閉。

  • PVC的.status.resizeStatus欄位替換為.status.allocatedResourceStatusMap結構欄位,表示調整PVC大小時的狀態。更多資訊,請參見PersistentVolumeClaimStatus

  • Indexed Job類型和StatefulSet類型的Pod都在Label上添加了Pod索引(序號)。

  • 驗證准入策略(ValidatingAdmissionPolicy)(Beta階段)提供聲明式的方式驗證資源請求,代替部署驗證准入Webhook,並支援使用CEL運算式編寫複雜的驗證規則。API Server會驗證資源請求是否符合CEL運算式,評估通過後才視為通過。

  • Kube Controller Manager新增--concurrent-cron-job-syncs配置CronJob控制器的並發度,新增--concurrent-job-syncs配置Job控制器的並發度。更多資訊,請參見--concurrent-cron-job-syncs--concurrent-job-syncs

  • API Server最佳化包括:

    • 改進了在緩衝上執行GetList時的記憶體消耗。更多資訊,請參見GetList測試資料

    • 修複僅剩一個API Server副本時Kubernetes Service的Endpoint沒有摘除的問題,確保優雅終止時能夠及時摘除Endpoint。

    • OpenAPI v2控制器設定為惰性彙總CRD資訊,並且大幅減少OpenAPI v2規範。在沒有用戶端請求OpenAPI v2時,減少API Server的CPU和記憶體消耗,同時提升大量CRD安裝時的效能(但用戶端首次請求會變慢)。建議將用戶端升級至支援使用OpenAPI v3。

    • 新增Consistent Reads from Cache特性門控,允許通過監視緩衝(Watch cache)實現List一致性讀取。

    • 豐富監控指標,支援通過訪問metrics介面擷取。

棄用功能

在Kubernetes 1.28版本

  • CephFS卷外掛程式代碼已經從樹內移除。

    建議使用CephFS CSI驅動代替。

  • 廢棄對Ceph RBD卷遷移到樹外CSI儲存驅動外掛程式的支援,將在後續版本徹底移除。

    建議在移除樹內代碼前完成遷移。

  • RBD卷外掛程式(kubernetes.io/rbd)被廢棄,將在後續版本移除。

    建議使用CephFS CSI驅動代替。

  • KMSv1被廢棄。如果還要相容使用KMSv1,需設定--feature-gates=KMSv1=true。更多資訊,請參見廢棄KMSv1

    建議使用KMSv2。

  • KCM廢棄啟動命令--volume-host-cidr-denylist--volume-host-allow-local-loopback

  • kubelet廢棄--azure-container-registry-config

    建議使用image-credential-provider-config--image-credential-provider-bin-dir

  • 不再支援建立Windows節點池。

棄用API

CSIStorageCapacity API可以暴露當前可用的儲存容量,確保Pod調度到有足夠儲存容量的節點上。CSIStorageCapacity的storage.k8s.io/v1beta1API版本在v1.24中被廢棄,在v1.27中被移除。

建議使用storage.k8s.io/v1,該API自v1.24起可用。更多資訊,請參見Storage Capacity Constraints for Pod Scheduling KEP

特性門控

本小節僅列舉部分主要變化,更多資訊請參見Feature Gates

在Kubernetes 1.28版本

  • NodeOutOfServiceVolumeDetach使用node.kubernetes.io/out-of-service汙點將節點標記為停止服務時,節點上不能容忍這個汙點的Pod將被強制移除,並將立即進行卷分離操作。該特性門控在v1.28進入GA,預設一直啟用。

  • AdmissionWebhookMatchCondition預設啟用允許Webhook使用CEL運算式編寫匹配條件。

  • UnknownVersionInteroperabilityProxy進入Alpha,支援在存在多個版本的API Server時將請求代理到正確的API Server。更多資訊,請參見混合版本代理

  • IPTablesOwnershipCleanup進入GA,不再建立KUBE-MARK-DROP和KUBE-MARK-MASQ iptables鏈。

  • ConsistentListFromCache進入Alpha,允許API Server通過監視緩衝(Watch cache)實現List一致性讀取。

  • ProbeTerminationGracePeriod進入GA,預設啟用支援設定探針層級的terminationGracePeriodSeconds

  • 移除部分已經GA的特性門控,包括DelegateFSGroupToCSIDriverDevicePluginsKubeletCredentialProvidersMixedProtocolLBServiceServiceInternalTrafficPolicyServiceIPStaticSubrangeEndpointSliceTerminatingCondition

參考連結

關於Kubernetes 1.27和1.28完整的變更記錄,請參見CHANGELOG-1.27CHANGELOG-1.28