全部產品
Search
文件中心

Container Service for Kubernetes:ACK發布Kubernetes 1.26版本說明

更新時間:Aug 28, 2024

阿里雲Container ServiceKubernetes版(ACK)嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.26版本所做的變更說明。

索引

版本升級說明

ACK針對Kubernetes 1.26版本提供組件的升級和最佳化。

核心組件

版本號碼

升級注意事項

Kubernetes

1.26.15-aliyun.1、1.26.3-aliyun.1

  • Kubernetes 1.26版本做了大量最佳化,升級前請仔細閱讀版本解讀

  • Kubernetes 1.25和Kubernetes 1.26版本棄用了大量Beta版本的API,在使用新版本叢集之前,需要先檢查與Beta版本API互動的控制器或應用是否已經改造升級成使用推薦版本API。關於廢棄API資訊,請參見廢棄的API資訊

  • Kubernetes 1.26版本,將不支援CRI v1alpha2,且容器運行時必須支援CRI v1,因此Kubernetes 1.26最低要求使用Containerd 1.6。升級叢集時,需先將Containerd升級到1.6.0及以上版本後,才能將節點升級到Kubernetes 1.26。

  • Kubernetes在1.21版本中棄用PodSecurityPolicy,在Kubernetes 1.25版本中徹底移除。PodSecurityPolicy使用方式複雜,容易授權比預期更大的許可權,存在嚴重的可用性問題。請參見版本解讀使用新的方案代替PodSecurityPolicy。

  • 1.26及以上版本的ACK叢集不再預設開放kubelet容器監控唯讀連接埠(10255),統一使用鑒權安全連接埠(10250)。更多資訊,請參見【產品變更】遷移低版本ACK叢集監控連接埠至鑒權連接埠

etcd

v3.5.4

CoreDNS

1.9.3.10-7dfca203-aliyun

CRI

Containerd 1.6.20

僅支援Kubernetes 1.24.0及以上版本。

CSI

1.24.10-7ae4421-aliyun

CNI

Flannel v0.15.1.22-20a397e6-aliyun

Terway & TerwayControlplanev1.5.0 +

NVIDIA Container Runtime

v3.13.0

僅Kubernetes 1.26支援v3.13.0,其餘版本仍然使用v3.7.0。

Ingress Controller

v1.6.4-aliyun.1

版本解讀

重大變化

  • Kubernetes 1.25和Kubernetes 1.26版本棄用了大量測試版本的API,在使用新版本叢集之前,需要先檢查與測試版本API互動的控制器或應用是否已經改造升級成使用正式版本API的控制器或應用。更多資訊,請參見廢棄的API資訊

  • Kubernetes 1.26版本將不支援CRI v1alpha2,且要求容器運行時必須支援CRI v1,因此Kubernetes 1.26不支援Containerd 1.5及更早的版本,最低要求使用Containerd 1.6。升級叢集時,需先將Containerd升級到1.6.0及以上版本後,才能將節點升級到Kubernetes 1.26。

  • Kubernetes 1.21版本棄用了PodSecurityPolicy,在Kubernetes 1.25版本中徹底移除,是因為PodSecurityPolicy使用方式複雜,容易授權比預期更大的許可權,存在嚴重的可用性問題。詳細資料,請參見 PodSecurityPolicy 歷史背景

    對於已經在使用PodSecurityPolicy功能的叢集,請使用以下任意一種方式執行限制後,再將叢集升級到更高版本。

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

    • CVE-2023-45288

    • CVE-2024-3177

    • CVE-2024-24786

新增功能

  • 臨時容器在Kubernetes 1.23中為測試版本,在Kubernetes 1.25版本成為Stable版本。當需要檢查一個已經崩潰或者缺乏調試工具不能使用kubectl exec的容器時,支援在現有Pod中運行臨時容器來檢查其狀態並運行任意命令。更多資訊,請參見臨時容器

  • 在Kubernetes 1.25版本,Kubernetes對cgroups v2的支援進入Stable階段,cgroups v2相較於cgroups v1做出了諸多改進。更多資訊,請參見 cgroups v2文檔

  • 在Kubernetes 1.25版本,繼續最佳化Kubernetes對Windows系統的支援,例如,支援單元測試一致性測試為Windows Operational Readiness建立新的倉庫

  • 在Kubernetes 1.25版本,容器鏡像倉庫k8s.gcr.io遷移到registry.k8s.io,流量也將重新導向到registry.k8s.io。更多資訊,請參見k8s.gcr.io Redirect to registry.k8s.io

  • 在Kubernetes 1.25版本,網路原則中的EndPort欄位處於GA階段。如果網路原則提供者支援EndPort欄位,可以在編寫NetworkPolicy時使用該欄位指定一個連接埠範圍;如果網路原則提供者不支援EndPort,則只會建立出單連接埠的網路原則。更多資訊,請參見網路原則

  • 在Kubernetes 1.25版本,本地臨時容器儲存容量隔離迎來GA(正式發布)版本, 它提供了對Pod之間本地臨時儲存容量隔離的支援,例如EmptyDir, 因此,如果一個Pod對本地臨時儲存容量的消耗超過該限制,就可以通過驅逐Pod來硬性限制其對共用資源的消耗。更多資訊,請參見本地臨時容器儲存容量隔離

  • 在Kubernetes 1.25版本,CSI臨時資料卷升級為穩定版本,在臨時使用的情況下,CSI臨時資料卷不允許通過PV/PVC在Pod裡直接指定CSI資料卷。更多資訊,請參見CSI臨時資料卷

  • 在Kubernetes 1.25版本,引入KMS v2 alpha1 API以提升效能,實現輪替與可觀察性改進。 此API使用AES-GCM替代了AES-CBC,通過DEK實現待用資料加密(Kubernetes Secrets),此過程中無需您額外操作,且支援通過AES-GCM和AES-CBC進行讀取。 更多資訊,請參考使用 KMS provider進行資料加密指南

  • 在Kubernetes 1.25版本,Kubernetes對使用Object Storage Service制定了一個新的標準介面,即容器物件儲存介面(COSI),旨在標準化Object Storage Service的使用,目前尚處於alpha(內測)階段。

  • 在Kubernetes 1.25版本,如果在Pod的status欄位中將PodHasNetwork狀態設定為True,表示Pod運行時沙箱被成功初始化建立,並已配置了網路。因為PodHasNetwork設定為True後Kubelet才開始拉取鏡像啟動容器,所以這個欄位可以用於反應Pod初始化延遲的指標(不包含拉取鏡像快慢和應用負載等特徵),利用PodHasNetwork可以準確產生服務水平指標(SLI)。由於PodHasNetwork尚處於內測階段,如需使用需要在Kubelet上啟動PodHasNetworkCondition特性門控。更多資訊,請參見關於PodHasNetwork和Initialized區別

  • 在Kubernetes 1.25版本,StatefulSet的minReadySeconds進入穩定階段,允許每個Pod等待一段預期時間來減緩StatefulSet的滾動上線。更多資訊,請參見minReadySeconds

  • 在Kubernetes 1.25版本中,DaemonSet的maxSurge進入穩定階段,允許DaemonSet工作負載在滾動上線期間在一個節點上運行同一 Pod的多個執行個體,有助於將DaemonSet的停機時間降到最低。DaemonSet不允許maxSurge和hostPort同時使用,因為兩個活躍的Pod無法共用同一節點的相同連接埠。更多資訊,請參見DaemonSet工作負載滾動上線

  • 在Kubernetes 1.25版本, 對使用user namespace運行Pod提供alpha支援,將Pod內的root使用者映射到容器外的非零ID,使得從容器角度看是root身份運行,而從主機角度看是常規的非特權使用者。目前尚處於內測階段,需要開啟特性門控UserNamespacesStatelessPodsSupport, 且要求容器運行時必須能夠支援此功能。更多資訊,請參見對使用user namespace運行Pod提供alpha支援

  • 在Kubernetes 1.25版本,新增一個特性門控RetroactiveDefaultStorageClass更改預設StorageClass被分配到PersistentVolumeClaim的方式。原本需要先建立StorageClass再建立PVC才會分配預設StorageClass,否則PVC的StorageClass會一直為nil,啟用此特性後,未分配StorageClass的PVC不需要刪除重建就可以自動更新分配預設的StorageClass。該特性在1.26進入Beta階段,預設開啟此功能。

  • 在Kubernetes 1.25版本,新增了JobPodFailurePolicy特性,允許配置Job根據容器退出碼和Pod狀況來指定Pod失效的處理方法,該特性在1.26進入Beta階段。在Job定義podFailurePolicy欄位配置Pod失效策略,為了避免不必要的Pod重試和忽略Pod驅逐。更多資訊,請參見Pod失效策略

  • 在Kubernetes 1.25版本,修複PodTopologySpread功能在變換期間出現Pod分布不均,不符合約束的情況。minDomains欄位處於Beta版本。

  • 在Kubernetes 1.25版本,kube-proxy對於規模較大的叢集提升了效能。例如叢集有1000個Endpoints,不使用的Iptables規則會保留一段時間,保留的最長時間為Iptables規則的最大同步周期,因此不必每次同步都掃描舊的規則。對於較小規模的叢集,不使用的Iptables規則仍然會立即刪除。

  • 在Kubernetes 1.26版本,新增動態資源分派功能,用於Pod之間和Pod內部容器之間請求和共用資源,支援使用者提供參數初始化資源。該功能尚處於alpha階段,需要啟用DynamicResourceAllocation特性門控和resource.k8s.io/v1alpha1 API組,需要為要管理的特定資源安裝驅動程式。更多資訊,請參見Alpha API For Dynamic Resource Allocation

  • 在Kubernetes 1.26版本,節點非體面關閉進入Beta階段。當節點故障時,故障節點上的Pod會一直處於Terminating(停止)狀態,也無法刪除VolumeAttachments。如果是StatefulSet類型的Pod,因為Pod不允許同名,所以也不會在新節點上啟動Pod。相比Kubelet檢測節點關閉事件對節點體面關閉,節點非體面關閉要求手動給Node添加out-of-service汙點觸發,將Pod移動到新的運行節點,待節點恢複後還須手動移除汙點。

  • 在Kubernetes 1.26版本,支援在掛載時將Pod fsGroup傳遞給CSI驅動程式,取代Kubelet去更改卷中檔案和目錄的許可權,此功能對使用者基本透明,如果您是CSI驅動程式開發人員,請參見CSI 驅動程式 fsGroup 支援

  • 在Kubernetes 1.26版本,新增Pod調度門控功能,負責通知調度器何時可以開始調度Pod。當大量Pod因為外來事件阻塞導致長時間無法被調度的時候,會影響調度器的效能,調度門控允許聲明新建立的Pod尚未準備好進行調度來解決這個問題。當Pod設定spec.schedulingGates時,調取程式會忽略該Pod,避免進行不必要的調度嘗試。此功能需要一個外部的控制器負責確定Pod何時可以調度並清理門控。更多資訊,請參見Pod調度門控

  • 在Kubernetes 1.26版本,CPU Manager達到GA狀態,此功能早在Kubernetes v1.10就已經是Beta階段,它屬於Kubelet的一部分,負責實現給容器分配獨佔CPU。CPU Manager支援三個不同的策略選項。更多資訊,請參見控制節點上的 CPU 管理原則

  • 在Kubernetes 1.26版本,對跨名字空間儲存資料來源的Alpha提供支援,允許在來源資料屬於不同的名字空間時,為PersistentVolumeClaim指定資料來源。更多資訊,請參見跨名字空間儲存資料來源

  • 在Kubernetes 1.26版本,允許PodDisruptionBudget配置不健康Pod的驅逐策略,通過設定.spec.unhealthyPodEvictionPolicy=AlwaysAllow來驅逐不健康Pod的行為不受PDB的幹擾。目前處於Alpha階段,使用該功能需要啟用PDBUnhealthyPodEvictionPolicy特性門控。更多資訊,請參見不健康Pod的驅逐策略

  • 在Kubernetes 1.26版本中,容器preStop和postStart生命週期函數httpGet遵循schemeheaders欄位配置,可以與探針行為保持一致,設定自訂的Headers和使用HTTPS。如果本應該使用HTTP而使用了HTTPS,會出現錯誤提示,並在與之前保持邏輯相容的同時自動回退使用HTTP。您可以通過Kubelet設定--feature-gates=ConsistentHTTPGetHandlers=false關閉該擴充功能。

  • 在Kubernetes 1.26版本,APF(API Priority and Fairness)支援從其他優先順序借用一些席位,.spec.limited新增兩個欄位,其中lendablePercent標識可租借出去的百分比,borrowingLimitPercent標識可以從其他優先順序層級中借多少資源。

  • 在Kubernetes 1.26版本,kube-controller-manager組件支援設定--concurrent-horizontal-pod-autoscaler-syncs來設定HPA(Horizontal Pod Autoscaler)控制器的Workers數。

  • 在Kubernetes 1.26版本,為HPA增加一個標籤選取器校正,當多個HPA指向同一個Pod集或者同一個部署,這些HPA將不起作用,並提示事件AmbiguousSelector。

  • 在Kubernetes 1.26版本,當多個StorageClass被設定為預設值(通過storageclass.kubernetes.io/is-default-classAnnotation設定),會選擇最新的一個StorageClass作為預設值,而不是拋出異常。

棄用功能

  • 儲存驅動的棄用和移除

    • 在Kubernetes 1.25版本,針對儲存整合移除in-tree卷外掛程式,CSI遷移是SIG Storage在之前多個版本中做出的持續努力,目標是將in-tree卷外掛程式代碼轉移到out-of-tree的CSI (容器儲存介面)驅動程式。 在Kubernetes 1.25版本,核心CSI遷移為穩定版。

    • 在Kubernetes 1.25版本,棄用GlusterFS Portworx in-tree卷外掛程式,移除 FlockerQuobyteStorageOS in-tree卷外掛程式。In-tree vSphere 卷驅動將不支援任何早於7.0u2的vSphere版本。

    • 在Kubernetes 1.26版本,移除GlusterFS in-tree驅動,移除已棄用的 OpenStack in-tree儲存整合(Cinder卷類型)。

  • 清理iptables鏈的所有權

    Kubernetes通常建立Iptables鏈來確保這些網路資料包到達, 這些Iptables鏈及其名稱屬於Kubernetes內部實現的細節,僅供內部使用情境,目前有些組件依賴於這些內部實現細節,Kubernetes總體上不希望支援某些工具依賴這些內部實現細節。詳細資料,請參見Kubernetes 的IPtables鏈不是API

    在Kubernetes 1.25版本後,Kubelet通過IPTablesCleanup特性門控分階段完成遷移,是為了不在NAT表中建立Iptables鏈,例如KUBE-MARK-DROP、KUBE-MARK-MASQ、KUBE-POSTROUTING。

    關於清理IPTables鏈所有權的資訊,請參見清理IPTables鏈的所有權

  • 移除樹內憑證管理代碼

    在Kubernetes 1.26版本後,原本內嵌的特定供應商Azure和Google Cloud身分識別驗證代碼將從client-go和kubectl中移除,可以選擇使用身分識別驗證外掛程式機制替代。更多資訊,請參見身分識別驗證外掛程式機制

  • kube-proxy移除部分

    • 在Kubernetes 1.26版本,Userspace代理模式已被移除,已棄用的Userspace代理模式不再受Linux或Windows支援。Linux使用者應使用Iptables或IPVS,Windows使用者應使用Kernelspace,現在使用--mode userspace會失敗。

    • Windows winkernel kube-proxy不再支援Windows HNS v1 APIs。

  • Kubectl棄用--prune-whitelist標誌

    在Kubernetes 1.26版本,為了支援 Inclusive Naming Initiative--prune-whitelist標誌將被棄用,並替換為--prune-allowlist,該標誌在未來將徹底移除。

  • 移除動態Kubelet配置

    DynamicKubeletConfig特性門控移除,通過API動態更新節點上的Kubelet配置。在Kubernetes 1.24版本中從Kubelet移除相關代碼,在Kubernetes 1.26版本從APIServer移除相關代碼,移除該邏輯有助於簡化代碼提升可靠性,推薦方式是修改Kubelet設定檔然後重啟Kubelet。更多資訊,請參見在Kubernetes 1.26版本從APIServer移除相關代碼

  • 移除命令列參數

    • 在Kubernetes 1.25版本, kubeadm UnversionedKubeletConfigMap已經GA,預設使用kube-system或kubelet-config代替kube-system或kubelet-config-x.yy。

    • 在Kubernetes 1.25版本,kubeadm不會再給controlplane節點打上node-role.kubernetes.io/master:NoSchedule標籤,且使用kubeadm upgrade apply的時候還會移除這個標籤。

    • 在Kubernetes 1.25版本,不再支援Seccomp annotations seccomp.security.alpha.kubernetes.io/podcontainer.seccomp.security.alpha.kubernetes.io,建議使用SeccompProfile 代替。更多資訊,請參見使用 seccomp 限制容器的系統調用

    • 在Kubernetes 1.25和Kubernetes 1.26版本,kube-controller-manager廢棄和移除部分啟動參數。

      • 移除了deleting-pods-qps、deleting-pods-burst、register-retry-count。

      • 廢棄了experimental-cluster-signing-duration和pod-eviction-timeout,使用cluster-signing-duration替代。

      • 在Kubernetes 1.27版本,pod-eviction-timeout和enable-taint-manager將一起被移除。

    • 在Kubernetes 1.26版本,將移除一些與日誌相關的命令列參數,這些參數在之前的版本已被棄用

    • 在Kubernetes 1.26版本,正式標記棄用 --master-service-namespace 命令列參數,它對APIServer沒有任何效果。

    • 在Kubernetes 1.26版本,kubectl run未使用的幾個子命令將被標記為棄用,並在未來某個版本移除,包括--cascade--filename--force--grace-period--kustomize--recursive--timeout--wait等這些子命令。

廢棄的API資訊

在Kubernetes 1.25和Kubernetes 1.26版本廢棄了部分API,如下所示。更多資訊,請參見已廢棄API

  • CronJob

    在Kubernetes 1.25版本後,開始不再提供batch/v1beta1 API版本的CronJob(定時任務),但可以使用batch/v1 API版本,此API從Kubernetes 1.21版本開始可用。

  • EndpointSlice

    在Kubernetes 1.25版本後,開始不再提供discovery.k8s.io/v1beta1 API版本的EndpointSlice(端點切片),但可以使用discovery.k8s.io/v1 API版本,此API從Kubernetes 1.21版本開始可用。

    discovery.k8s.io/v1中值得注意的變更如下所示。

    • 使用每個Endpoint的NodeName欄位,而不是已被棄用的topology["kubernetes.io/hostname"]欄位。

    • 使用每個Endpoint的Zone欄位,而不是已被棄用的topology["kubernetes.io/zone"]欄位。

    • Topology欄位被替換為deprecatedTopology欄位,並且在API的v1版本中不可寫入。

    重要

    叢集升級後,請檢查CoreDNS Pod是否出現failed to list *v1beta1.EndpointSlice報錯。如有,請立即重啟或升級CoreDNS組件。更多資訊,請參見為什麼CoreDNS正在使用廢棄的API?

  • Event

    在Kubernetes 1.25版本後,開始不再提供events.k8s.io/v1beta1 API版本的Event,但可以使用events.k8s.io/v1 API版本,此API從Kubernetes v1.19版本開始可用。

    events.k8s.io/v1中值得注意的變更如下所示。

    • type欄位只能設定為Normal或Warning。

    • involvedObject欄位被更名為regarding。

    • 在建立新的events.k8s.io/v1版本Event時,action、reason、reportingController和reportingInstance都是必需的欄位。

    • 使用eventTime欄位而不是已被棄用的firstTimestamp欄位。firstTimestamp欄位已被更名為deprecatedFirstTimestamp,且不允許出現在新的events.k8s.io/v1 Event對象中。

    • 使用series.lastObservedTime欄位而不是已被棄用的lastTimestamp欄位。lastTimestamp欄位已被更名為deprecatedLastTimestamp,並且不允許出現在新的events.k8s.io/v1 Event對象中。

    • 使用series.count欄位而不是已被棄用的count欄位。count欄位已被更名為deprecatedCount,且不允許出現在新的events.k8s.io/v1 Event對象中。

    • 使用reportingController欄位而不是已被棄用的source.component欄位。source.component欄位已被更名為 deprecatedSource.component,且不允許出現在新的events.k8s.io/v1 Event對象中。

    • 使用reportingInstance欄位而不是已被棄用的source.host欄位。 source.host欄位已被更名為deprecatedSource.host,且不允許出現在新的events.k8s.io/v1 Event對象中。

  • PodDisruptionBudget

    在Kubernetes 1.25版本後,開始不再提供policy/v1beta1 API版本的PodDisruptionBudget(Pod中斷預算),但可以使用policy/v1 API版本,此API從Kubernetes 1.21版本開始可用。

    policy/v1中值得注意的變更是:在policy/v1版本的PodDisruptionBudget中將spec.selector設定為空白({})時,會選擇名字空間中的所有 Pods,即在policy/v1beta1版本中,空的spec.selector不會選擇任何Pods。如果spec.selector未設定,則在兩個API版本下都不會選擇任何 Pods。

  • PodSecurityPolicy

    在Kubernetes 1.25版本後,開始不再提供policy/v1beta1 API版本中的PodSecurityPolicy(Pod安全性原則),並且PodSecurityPolicy准入控制器也會被刪除,請將PodSecurityPolicy遷移到Pod Security Admission或第三方准入Webhook。

    有關遷移指南的更多資訊,請參見從PodSecurityPolicy遷移到內建PodSecurity准入控制器。 有關棄用的更多資訊,請參見PodSecurityPolicy棄用:過去、現在和未來

  • RuntimeClass

    在Kubernetes 1.25版本後,開始不再提供node.k8s.io/v1beta1 API版本中的RuntimeClass(運行時類),但可以使用node.k8s.io/v1 API版本,此API從Kubernetes 1.20版本開始可用。

  • HorizontalPodAutoscaler

    • 在Kubernetes 1.25版本後,開始不再提供autoscaling/v2beta1 API版本的HorizontalPodAutoscaler(Pod水平自動調整)。

    • 在Kubernetes 1.26版本後,開始不再提供autoscaling/v2beta2 API版本的HorizontalPodAutoscaler,但可以使用autoscaling/v2 API版本, 此API從Kubernetes 1.23版本開始可用。

  • Flow control resources

    在Kubernetes 1.26版本後,開始不再提供flowcontrol.apiserver.k8s.io/v1beta1 API版本的FlowSchema和PriorityLevelConfiguration,但此API從Kubernetes 1.23版本開始,可以使用flowcontrol.apiserver.k8s.io/v1beta2;從Kubernetes 1.26版本開始,可以使用flowcontrol.apiserver.k8s.io/v1beta3。

特性門控

關於特性門控一般有三個階段,Alpha階段預設禁用、Beta階段一般預設啟用、GA階段將一直預設啟用,且不能禁用(會在後續版本中刪除這個開關功能),以下列舉部分主要變化。更多資訊,請參見Feature Gates

  • 在Kubernetes 1.25版本,SeccompDefault升級為Beta狀態。關於如何使用SeccompDefault,請參見使用seccomp限制容器的系統調用

  • 在Kubernetes 1.25版本,CRD驗證運算式語言升級為Beta狀態,CustomResourceValidationExpressions預設啟用。使用通用運算式語言(CEL)驗證自訂資源比使用Webhook更加方便高效。更多資訊,請參見驗證規則指導

  • 在Kubernetes 1.25版本,ServerSideFieldValidation特性門控已升級為Beta狀態,預設開啟ServerSideFieldValidation。APIServer支援對未知欄位的驗證,使得後續考慮移除Kubectl上的該功能。更多資訊,請參見APIServer支援對未知欄位的驗證

  • 在Kubernetes 1.25版本,新增ContainerCheckpoint Alpha特效,啟動Kubelet Checkpoint API。更多資訊,請參見Kubelet Checkpoint API

  • 在Kubernetes 1.25版本,新增PodHasNetworkCondition Alpha特性,使得Kubelet能給對Pod標記PodHasNetwork的狀況。更多資訊,請參見PodHasNetwork

  • 在Kubernetes 1.25版本,新增UserNamespacesStatelessPodsSupport Alpha特性,為無狀態的Pod啟用使用者名稱字空間的支援。

  • 在Kubernetes 1.25版本,新增JobPodFailurePolicy Alpha特性,允許配置Job根據容器退出碼和Pod狀況來指定Pod失效的處理方法,該特性在Kubernetes 1.26版本進入Beta階段。

  • 在Kubernetes 1.25版本,新增了MultiCIDRRangeAllocator Alpha特性,啟動NodeIPAM支援多個ClusterCIDRs,kube-controller-manager通過配置--cidr-allocator-type=MultiCIDRRangeAllocator來啟動控制器支援。

  • 在Kubernetes 1.25版本中,StatefulSetMinReadySeconds進入GA狀態,StatefulSet預設支援minReadySeconds欄位,且不能禁用。

  • 在Kubernetes 1.25版本,CronJobTimeZone進入Beta階段,預設啟用CronJob可使用TimeZone欄位,且不能禁用。

  • 在Kubernetes 1.25版本,DaemonSetUpdateSurge進入GA階段,預設可使用DaemonSet MaxSurge欄位,且不能禁用。

  • 在Kubernetes 1.25版本,IdentifyPodOS進入GA階段,預設啟用spec.podOS欄位,且不能禁用。

  • 在Kubernetes 1.25版本,CSIInlineVolume進入GA階段,預設啟用支援CSI內聯卷支援,且不能禁用。

  • 在Kubernetes 1.25版本,EphemeralContainers進入GA階段,預設啟用支援臨時容器,且不能禁用。

  • 在Kubernetes 1.25版本,新增CSINodeExpandSecret特性,允許在添加節點時將Secret驗證資料傳遞到CSI驅動以供後者使用。

  • 在Kubernetes 1.25版本,CSIMigration進入GA階段,預設啟用該特性,不能禁用。

  • 在Kubernetes 1.25版本,CSIMigrationPortworx進入Beta階段。

  • 在Kubernetes 1.25版本,ProbeTerminationGracePeriod依然處於Beta階段, 但是預設值變為True。更多資訊,請參見探針層面的terminationGracePeriodSeconds

  • 在Kubernetes 1.26版本,JobTrackingWithFinalizers處於GA階段,預設啟動Job完成情況追蹤代替計算剩餘Pod來判定Job完成情況。更多資訊,請參見使用Finalizers追蹤Job

  • 在Kubernetes 1.26版本,新增了PDBUnhealthyPodEvictionPolicy Alpha特性,支援PodDisruptionBudget指定不健康的Pod驅逐策略。

  • 在Kubernetes 1.26版本,啟動動態資源分派API支援,對具有自訂參數和獨立於Pod生命週期的資源,提供管理和使用的支援。

  • 在Kubernetes 1.26版本,新增StatefulSetStartOrdinal Alpha特性,支援配置StatefulSet啟始序號。

  • 在Kubernetes 1.26版本,ServiceInternalTrafficPolicy處於GA階段,允許Service使用internalTrafficPolicy欄位佈建服務內部流量策略。預設啟用該特性,不能禁用。更多資訊,請參見服務內部流量策略

  • 在Kubernetes 1.26版本,新增ValidatingAdmissionPolicy Alpha特性,通過CEL運算式實現可擴充的准入控制器。

  • 在Kubernetes 1.26版本,MixedProtocolLBService處於GA階段,允許在同一LoadBalancer類型的Service執行個體中使用不同的協議。

  • 在Kubernetes 1.26版本,EndpointSliceTerminatingCondition處於GA階段,允許使用EndpointSlice的Terminating和Serving狀況欄位,不能禁用。

  • 在Kubernetes 1.26版本,APIServerIdentity進入Beta階段,預設啟用在kube-system下,為每個活躍的APIServer建立Lease。

  • 在Kubernetes 1.26版本,DelegateFSGroupToCSIDriver處於GA階段,不能禁用。

  • 在Kubernetes 1.26版本,NodeOutOfServiceVolumeDetach進入Beta階段,預設啟用該特性。當使用node.kubernetes.io/out-of-service汙點將節點標記為停止服務時,不能容忍該汙點的Pod將被強制移除,並且該在節點上被終止的Pod將立即進行卷分離操作。

  • 在Kubernetes 1.26版本,ServiceIPStaticSubrange處於GA階段,啟用服務ClusterIP分配策略,從而細分ClusterIP的範圍。

  • 在Kubernetes 1.26版本,CPUManager和DevicePlugins處於GA階段,預設啟用該特性,不能禁用。

  • 在Kubernetes 1.26版本,新增ComponentSLIs Alpha特性,在kubelet、kube-scheduler、kube-proxy、kube-controller-manager、cloud-controller-manager等Kubernetes組件上啟用/metrics/slis端點,從而允許抓取健全狀態檢查指標。

  • 在Kubernetes 1.26版本,WindowsHostProcessContainers處於GA階段,預設啟用對Windows HostProcess容器的支援。

  • 在Kubernetes 1.26版本,ExpandedDNSConfig進入Beta階段,允許使用更多的DNS搜尋域和搜尋域列表,需要運行時支援。

  • 在Kubernetes 1.26版本,LegacyServiceAccountTokenNoAutoGeneration處於GA階段,停止基於Secret自動產生服務帳號令牌。預設啟用該特性,不能禁用。

  • 在Kubernetes 1.26版本,ProxyTerminatingEndpoints進入Beta階段,預設啟用該特性,當ExternalTrafficPolicy=Local時, 允許kube-proxy來處理終止過程中的端點。

  • 在Kubernetes 1.26版本,新增LegacyServiceAccountTokenTracking Alpha特性,預設關閉該特性,Secret serviceaccount token添加一個標籤kubernetes.io/legacy-token-last-used顯示到期時間。

  • 在Kubernetes 1.26版本,PodDisruptionConditions特性進入Beta階段且預設啟用。您可以為Pod Status添加一個DisruptionTarget Condition,表明Pod因為發生幹擾而被刪除,並在reason欄位中進一步查詢Pod終止的原因。更多資訊,請參見Pod disruption conditions

ACK對Kubernetes 1.26版本的增強

安全增強

ACK進一步加固了節點上下列Kubernetes相關敏感檔案的存取權限。

檔案路徑

加固後的存取權限

/etc/kubernetes/admin.conf

600

/etc/kubernetes/kube.conf

600

/etc/kubernetes/controller-manager.conf

600

/etc/kubernetes/kubelet.conf

600

/etc/kubernetes/scheduler.conf

600

/etc/kubernetes/manifests/*.yaml

600

/etc/kubernetes/pki/*.key

600

/etc/kubernetes/pki/*.crt

600

/etc/kubernetes/pki/dashboard/*.crt

600

/etc/kubernetes/pki/etcd/*.pem

600

/var/lib/etcd/cert/*.pem

600

/var/lib/etcd/cert/*.csr

600

/var/lib/kubelet/pki/*.crt

600

/var/lib/kubelet/config.yaml

600

/usr/lib/systemd/system/etcd.service

600

/etc/systemd/system/kubelet.service

600

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

600

參考連結