火山引擎容器服务(VKE)严格遵循社区一致性认证。本文介绍容器服务发布 Kubernetes 1.30 版本所做的变更说明。
说明
【公测】:容器服务发布的 Kubernetes 1.30 版本目前处于公测阶段。
表1:核心组件及说明
核心组件 | 当前版本号 | 注意事项 |
---|---|---|
Kubernetes | 1.30.4 | Kubernetes v1.29 和 v1.30 对测试版本 API 进行废弃和移除,使用新版本需进行兼容性检查。详情请参见本文下方:废弃和移除功能 和 API 版本弃用。 |
ETCD | v3.5.9 | 无 |
Containerd Runtime | v1.6.28 | 无 |
CoreDNS | v1.11.1 | 无 |
Ingress-nginx | v1.10.4-vke.1 | 无 |
表2:Kubernetes 版本与容器服务版本对应关系
Kubernetes 版本 | VKE 版本 | 发布说明 |
---|---|---|
v1.30.4 | vke.3 | 强化扩展调度器,支持 mGPU 在线和离线混合部署。 |
传统 ServiceAccount 令牌清理器特性进入 GA 阶段,如果自动生成的传统 ServiceAccount 令牌在特定时间段内(默认为一年)未被使用,且没有被任何 Pod 挂载,会被清理器标记为无效。如果一个无效的令牌在特定时间(默认为一年)依旧未被使用,将会被清理器自动清理。详情请参见:Legacy ServiceAccount token cleaner。
基于 ContainerResource 指标的 Pod 水平自动扩缩容特性进入 GA 阶段,允许 HPA 根据 Pod 中各个容器的资源使用情况来配置自动伸缩,而不仅是 Pod 的整体资源使用情况,便于为在 Pod 中最重要的容器配置扩缩容阈值。详情请参见 Container resource metrics。
Webhook 定义匹配条件进入 GA 阶段,允许对准入 Webhook 支持根据特定的条件进行匹配,更细粒度地控制 Webhook 的触发条件。更多信息,请参见 Dynamic Admission Control。
Pod 调度就绪态进入 GA 阶段,在 Pod 中引入.spec.schedulingGates
字段,控制 Pod 允许调度的时机。详情请参见:Pod Scheduling Readiness。
Pod 拓扑分布中的最小域进入 GA 阶段,允许 Pod 拓扑约束为whenUnsatisfiable: DoNotSchedule
时,通过minDomains
字段限制符合条件的域的最小数量。详情请参见:minDomains。
防止未经授权的卷模式转换进入 GA 阶段,基于 VolumeSnapshot 来创建 PersistentVolumeClaim 时,支持验证制作快照的原始卷模式是否与新创建的卷模式匹配,避免卷模式更改带来的安全问题。详情请参见:KEP-3141、Preventing unauthorized volume mode conversion。
VolumeManager 重构进入 GA 阶段,允许 kubelet 在启动期间带上关于现有卷如何挂载的附加信息。
Service 的负载均衡 IP 模式进入 Beta 阶段,类型为 LoadBalancer 的 Service 新增.status.loadBalancer.ingress.ipMode
字段,用于指定负载均衡器 IP 的运行方式。详情请参见:Load balancer IP address mode。
未使用容器镜像的垃圾收集进入 Beta 阶段,通过imageMaximumGCAge
指定本地镜像未被使用的最长时间,超过该时间的镜像将被 kubelet 执行垃圾回收。详情请参见:Garbage collection for unused container images。
CRDValidationRatcheting 特性进入 Beta 阶段,当 CustomResourceDefinition 添加新的验证后,即使因此导致存量资源在更新后无效,但只要未通过验证的部分没有被更新,API Server 便不会拦截资源的更新,不影响现有的资源和用户。详情请参见:CRD Validation ratcheting。
NodeLogQuery 特性进入 Beta 阶段,允许允许使用/logs
端点来查询节点服务的日志。详情请参见:log-query。
kubelet 新增监控指标image_pull_duration_seconds
,用于跟踪镜像拉取时间。详情请参见:Alpha 阶段的 Kubernetes 指标清单。
JobSuccessPolicy 特性进入 Alpha 阶段,带索引的 Job 支持通过.spec.successPolicy
定义 Job 何时可以被声明为成功。详情请参见:Success policy。
ReadWriteOncePod 访问模式进入 GA 阶段,该访问模式用于限制 PV 被单个节点上的单个 Pod 访问。ReadWriteOnce 模式限制了单节点访问,但并不限制同一个节点上多个 Pod 的同时访问。详情请参见:ReadWriteOncePod。
CSINodeExpandSecret 特性进入 GA 阶段,支持在 NodeExpandVolume 过程中将 secret 凭证传递给 CSI 驱动。详情请参见:KEP-3107、Use Secrets for Node-Driven Expansion of CSI Volumes。
KMS V2 进入 GA 阶段,对 KMS 加密提供程序的性能进行优化,详情请参见:使用 KMS 驱动进行数据加密。
PodReadyToStartContainersCondition 特性进入 Beta 阶段,新增PodReadyToStartContainers
状况表示 Pod 的沙箱创建和网络配置完成情况,详情请参见:Pod network readiness。
原生边车容器进入 Beta 阶段,支持在 Init 容器中配置restartPolicy
字段启用边车容器。边车容器独立于其他 Init 容器以及同一 Pod 内的主应用容器。详情请参见:Sidecar Containers。
基于索引的回退机制进入 Beta 阶段,JobBackoffLimitPerIndex 特性开启时,支持在创建带索引的 Job 中配置.spec.backoffLimitPerIndex
,避免单个索引持续失败达到.spec.backoffLimit
限制而导致整体失败。详情请参见:基于索引的回退限制。
PodHostIPs 特性进入 Beta 阶段,该特性在 Pod 和 downward API 中增加status.hostIPs
字段,用于将节点 IP 地址暴露给工作负载。status.hostIPs
是status.hostIP
的双协议栈版本,第一个 IP 始终与status.hostIP
相同。
Pod 亲和/反亲和支持 matchLabelKeys/mismatchLabelKeys 进入 Alpha 阶段,该特性能够更精细地控制 Pod 亲和/反亲和的范围,解决了调度器在 Deployment 滚动更新期间无法区分新老 Pod 而到调度结果不符合预期的问题。详情请参见:matchLabelKeys/mismatchLabelKeys。
NFTables 代理模式进入 Alpha 阶段,允许 kube-proxy 使用内核 netfilters 子系统的 nftables API 来配置数据包转发规则,详情请参见:nftables proxy mode。
扩展 Service IP 范围进入 Alpha 阶段,允许新增 ServiceCIDR 对象动态配置 Service ClusterIP 地址的分配范围,详情请参见:KEP-1880。
基于运行时类的镜像拉取进入 Alpha 阶段,kubelet 会通过一个元组(image name
, runtime handle
)而不仅仅是镜像名称或镜像摘要来引用容器镜像,详情请参见:Image pull per runtime class。
PodLifecycleSleepAction 特性进入 Alpha 阶段,PreStop 新增 Sleep 回调处理程序,支持将容器暂停一段指定时间,详情请参见:Container Lifecycle Hooks。
KubeletSeparateDiskGC 特性进入 Alpha 阶段,kubelet 能够对部署在不同文件系统上的镜像(只读层)和/或容器(可写层)执行垃圾回收,详情请参见:KEP-4191。
kubectl apply 移除命令行参数--prune-whitelist
,使用--prune-allowlist
代替。
移除了 v1.27 已废弃的准入插件SecurityContextDeny
,建议使用准入插件[PodSecurity](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#podsecurity)
代替。
默认关闭内置的cloud providers
,可通过DisableCloudProviders
以及DisableKubeletCloudCredentialProvider
特性门控开启。详情请参见:Removed In-Tree Cloud Providers。
kube-scheduler 移除了selectorSpread
插件,使用podTopologySpread
代替。
CronJob 不支持配置.spec.schedule
字段为TZ
或CRON_TZ
,使用.spec.timeZone
代替。
在 Kubernetes v1.29,FlowSchema 和 PriorityLevelConfiguration 的flowcontrol.apiserver.k8s.io/v1beta3
API 版本升级至flowcontrol.apiserver.k8s.io/v1
。v1beta3
已废弃,并在 v1.32 中不再支持。
在 Kubernetes v1.29,移除了 KubeSchedulerConfiguration 的kubescheduler.config.k8s.io/v1beta3
API 版本,需迁移至kubescheduler.config.k8s.io/v1
。
在 Kubernetes v1.29,PVC 的.spec.Resource
字段类型由 ResourceRequirements 替换为 VolumeResourceRequirements。
在 Kubernetes v1.29,PodFailurePolicyRule 中OnPodConditions
字段更改为可选字段。
在 Kubernetes v1.29,移除了 alpha API ClusterCIDR。
关于 Kubernetes 1.30 版本的性能和功能演进的更多信息,请参见:
CHANGELOG-1.30.md
CHANGELOG-1.29.md