阿里雲Container ServiceKubernetes版(ACK)嚴格遵循社區一致性認證。本文介紹ACK發布Kubernetes 1.26版本所做的變更說明。
索引
版本升級說明
ACK針對Kubernetes 1.26版本提供組件的升級和最佳化。
核心組件 | 版本號碼 | 升級注意事項 |
Kubernetes | 1.26.15-aliyun.1、1.26.3-aliyun.1 |
|
etcd | v3.5.4 | 無 |
CoreDNS | 1.9.3.10-7dfca203-aliyun | 無 |
CRI | Containerd 1.6.20 | 僅支援Kubernetes 1.24.0及以上版本。 |
CSI | 升級至組件當前支援的最新版本。詳細資料,請參見組件變更記錄csi-plugin、csi-provisioner。 | 無 |
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功能的叢集,請使用以下任意一種方式執行限制後,再將叢集升級到更高版本。
使用ACK提供的策略管理功能。ACK能夠提供更多符合Kubernetes應用情境的策略規則,在規則配置上也更加靈活簡單。更多資訊,請參見配置容器安全性原則(新版)。
使用內建的Pod Security Admission,使用方式更加友好,更多資訊,請參見Pod Security Admission。關於如何從PodSecurityPolicy遷移到內建的PodSecurity准入控制器,請參見從PodSecurityPolicy遷移到內建的PodSecurity准入控制器。
自行部署和配置使用第三方的准入外掛程式。
在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
遵循scheme
和headers
欄位配置,可以與探針行為保持一致,設定自訂的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-class
Annotation設定),會選擇最新的一個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卷外掛程式,移除 Flocker、 Quobyte和StorageOS 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/pod
和container.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版本,正式標記棄用 --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 |