阿里云容器服务 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版本的功能变更和弃用资源前,您可能需要了解相关概念。
重大变更
针对调度器,Kubernetes v1.28版本优化了调度逻辑,减少无效的重试,从而提高调度器的整体性能。
如集群中使用了自定义调度器插件,建议对调度器插件进行改造和升级,以提升调度器性能。更多信息,请参见调度框架变化。
针对CSI迁移,Kubernetes社区一直推动将存储相关插件从源码中移除,改用实现了CSI标准接口的树外驱动,并已经于v1.25完成GA,于v1.27移除了API
storage.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校验规则中添加
reason
和fieldPath
字段后,允许校验失败时返回指定原因和字段路径。更多信息,请参见CRD校验表达式语言。Webhook过滤请求新增支持CEL表达式,最多支持定义64个匹配条件。更多信息,请参见动态准入控制匹配条件。
新增SidecarContainers特性门控,支持Sidecar容器,优化容器启动顺序。例如,日志收集Sidecar容器可以在其他容器之前启动,以提高日志收集的可靠性。更多信息,请参见介绍原生Sidecar容器。该特性在v1.28处于Alpha阶段,默认关闭。
PVC的
.status.resizeStatus
字段替换为.status.allocatedResourceStatus
Map结构字段,表示调整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/v1beta1
API版本在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的特性门控,包括
DelegateFSGroupToCSIDriver
、DevicePlugins
、KubeletCredentialProviders
、MixedProtocolLBService
、ServiceInternalTrafficPolicy
、ServiceIPStaticSubrange
、EndpointSliceTerminatingCondition
。
参考链接
关于Kubernetes 1.27和1.28完整的变更记录,请参见CHANGELOG-1.27、CHANGELOG-1.28。