You need to enable JavaScript to run this app.
导航
容器服务发布 Kubernetes v1.28 版本说明
最近更新时间:2024.11.12 20:14:37首次发布时间:2024.03.21 15:10:32

火山引擎容器服务(VKE)严格遵循社区一致性认证。本文介绍容器服务发布 Kubernetes 1.28 版本所做的变更说明。

版本发布说明

表1:核心组件及说明

核心组件当前版本号注意事项
Kubernetesv1.28.3Kubernetes v1.27 和 v1.28 对测试版本 API 进行废弃和移除,使用新版本需进行兼容性检查。详情请参见本文下方:废弃和移除功能API 版本弃用
ETCDv3.5.9
Containerd Runtime1.6.21
CoreDNS1.10.1
Ingress-nginx1.9.5-vke.1

表2:Kubernetes 版本与容器服务版本对应关系

Kubernetes 版本VKE 版本发布说明

v1.28.3

vke.13

  • 强化扩展调度器,mGPU 跨卡共享功能支持使用全量算力分配策略。
  • 强化扩展调度器,支持感知 vePFS 存储。
v1.28.3vke.12修复扩展调度器插件初始化异常问题。
v1.28.3vke.11优化核心组件发布规范。
v1.28.3vke.10修复 Kubelet 重启导致的容器 Ready 状态变化问题。
v1.28.3vke.9强化扩展调度器,支持 mGPU 抢占调度。
v1.28.3vke.8强化扩展调度器,支持感知 VCI 资源库存。
v1.28.3vke.7强化 API Server 自签名证书。

v1.28.3

vke.6

  • 强化 Kubelet,支持配置容器资源视图。
  • 强化 Kubelet,支持通过 Annotation 配置被驱逐 Pod 的优雅退出时间。
  • 修复扩展调度器负载感知调度异常问题。

Kubernetes 社区版本解读

重大更新

  • 在 Kubernetes v1.28 中,Scheduling Framework 对插件调用进行优化,减少不必要重试。如果集群中使用了自定义调度器插件,建议对扩展插件进行改造以提升整体调度性能。详情请参见:Scheduling Framework 优化
  • 在 Kubernetes v1.28 中,废弃 CephFS 和 RBD 树内存储插件,并计划在 Kubernetes v1.31 中删除,建议转为使用第三方存储驱动 CephFS CSI

增量功能和特性

在 Kubernetes v1.28 版本

  • 控制面和节点的版本兼容偏差从 n-2 变更为 n-3 ,兼容版本数的增加可以减少节点升级带来的中断次数。详情请参见:版本偏差策略
  • 节点非优雅关闭(Non-graceful node shutdown)功能进入 GA 阶段,节点由于断电等故障导致非正常关闭时,有状态应用程序需要及时在正常运行的节点上重新启动,以免影响业务正常运行。详情请参见:节点非优雅关闭
  • 可追溯的默认 StorageClass 功能进入 GA 阶段,用户无需再进行先创建默认的 StorageClass,再创建 PVC 的流程。未分配 StorageClass 的所有 PVC 都将被自动使用默认的 StorageClass。详情请参见:可追溯的默认 StorageClass 赋值
  • 针对 Job 失效处理,新增两项特性:
    • Pod 更换策略:新增 JobPodReplacementPolicy 特性门控,开启后支持在 Pod Spec 中定义podReplacementPolicyFailed。设置该策略后,Pod 只有在到达Failed阶段才会被替换,而不是Terminating时就被替换,以避免出现 2 个 Pod 同时占用索引和节点资源。详情请参见:延迟创建替换 Pod
    • 基于索引的回退机制:新增 JobBackoffLimitPerIndex 特性门控,开启后支持在创建 Indexed Job 时配置.spec.backoffLimitPerIndex,避免单个索引持续失败达到.spec.backoffLimit限制而导致整体失败。详情请参见:基于索引的回退限制
  • NodeSwap 进入 Beta 阶段,开启 NodeSwap 特性门控后,支持为运行的工作负载配置内存交换。详情请参见:在 Linux 上使用交换内存
  • 原生边车容器进入 Alpha 阶段,新增 SidecarContainers 特性门控,开启后支持在 Init 容器中配置restartPolicy字段。详情请参见:原生边车容器
  • podresources API 进入 GA 阶段,它是由 kubelet 提供的节点本地 API,最初为了 监控设备信息 提出,逐步扩大范围,目前可用于查询分配给容器的计算资源。详情请参见:podresource API
  • 针对 CEL 表达式能力新增了多项特性:
    • CRD 使用 CEL 进行 Validate 功能进入 Beta 阶段,通过将 CEL 集成在 CRD 中,可以使开发中在不使用 Webhook 的情况下解决大部分 CR 示例的验证用例。详情请参见:CRD 校验表达式语言
    • 基于 CEL 的准入控制进入 Beta 阶段,支持通过声明式的方式验证资源请求,支持使用 CEL 表达式 编写复杂的验证规则,代替部署 Webhook 准入控制。详情请参见:验证准入策略
  • ServiceNodePortStatic 功能进入 Beta 阶段,允许保留静态端口范围,避免与动态分配端口冲突。详情请参见:为 NodePort Service 分配端口时避免冲突
  • 混合版本代理功能进入 Alpha 阶段,当集群中存在多个不同版本的 kube-apiserver 时,混合版本代理使对资源的 HTTP 请求能够被正确的 kube-apiserver 处理。详情请参见:混合版本代理
  • 缓存一致性读取功能进入 Alpha 阶段,新增 ConsistentListFromCache 特性门控,允许通过监视缓存(Watch cache)实现 List 一致性读取,详情请参见:缓存一致性读取
  • kubelet 支持配置 drop-in 目录功能进入 Alpha 阶段,新增--config-dir配置,允许用户插入指定目录覆盖原始的/etc/kubernetes/kubelet.conf配置。
  • Pod 的 InPlace VPA 功能进入 Beta 阶段。通过对 API Server、Scheduler 和 Kubelet 进行升级改造,支持在不重启 Pod 的情况下修改 CPU 和内存的 Request/Limit 值。详情请参见:调整分配给容器的 CPU 和内存资源

在 Kubernetes v1.27 版本

  • SeccompDefault 功能进入 GA 阶段,支持通过 kubelet 命令行参数--seccomp-default启用 RuntimeDefault 作为所有工作负载的默认 seccomp 配置文件。详情请参见:kubelet 启动参数
  • Pod 拓扑分布约束控制有多项功能进入 Beta 阶段,包括支持设定 Pod 最少分布域、支持拓扑约束调度时考虑亲和性和污点、解决滚动更新时无法约束拓扑分布的问题等。详情请参见:更多细粒度的 Pod 拓扑分布策略
  • StatefulSet 有多项功能进入 Beta 阶段,包括支持 Pod 从非零数作为起始序号、支持指定删除关联创建的 PVC、缩容时自动删除关联创建的 PVC。详情请参见:StatefulSet Start Ordinal Simplifies MigrationStatefulSet PVC Auto-Deletion
  • kubelet 新增maxParallelImagePulls字段配置,限制并行拉取的镜像数量,防止镜像拉取消耗过多的网络带宽或磁盘 I/O。详情请参见:maxParallelImagePulls
  • Job 可变调度指令进入 GA 阶段,支持 Job 在挂起阶段修改 Pod 中的调度部分,包括节点选择器、节点亲和性、反亲和性、容忍度。详情请参见:Job 可变调度指令
  • Downward API HugePages 进入 GA 阶段,支持在 Pod 的spec.resources里通过资源hugepages-2Mi或者hugepages-1Gi来配置 HugePages 限制。如果需要配置多种类型 HugePages,需要配置 HugePages 类型的 Volume。详情请参见:Manage HugePages
  • Pod 调度就绪态进入 Beta 阶段。在 Pod 中引入.spec.schedulingGates字段,表示定义 Pod 是否允许开始调度。
  • ReadWriteOncePod 访问模式进入 Beta 阶段,该访问模式用于限制 PV 被单个节点上的单个 Pod 的访问。ReadWriteOnce 模式限制了单节点访问,但并不限制多个 Pod 同时访问同一个节点。详情请参见:持久卷的单 Pod 访问模式升级到 Beta
  • 快速标记 SELinux 卷标签功能进入 Beta 阶段,优化卷挂载过程中 SELinux 标签的使用,加快容器启动速度,详情请参见:Speed up SELinux volume relabeling using mounts
  • VolumeManager 重构进入 Beta 阶段,允许 kubelet 在启动期间带上关于现有卷如何挂载的附加信息。
  • 服务器端字段校验和 OpenAPI 的最新标准 OpenAPI v3 进入 GA 阶段。详情请参见:服务器端字段校验和 OpenAPI V3 进阶至 GA
  • 控制 StatefulSet 启动顺序功能进入 Beta 阶段,默认允许通过spec.ordinals.start在 StatefulSet 中配置启动序号。详情请参见:StatefulSet 启动序号简化了迁移
  • StatefulSet PVC 自动删除功能进入 Beta 阶段,用户可以配置 whenDeleted 或 whenScaled,触发 Retain 或 Delete 行为。其中 Retain 是默认行为,只有配置了 Delete 策略的 StatefulSet 在被删除时才会触发对应的 PVC 删除动作,详情请参见:KEP-1847PersistentVolumeClaim 保留
  • 磁盘卷组快照功能进入 Alpha 阶段,支持 Pod 维度所有卷的 组快照 功能,无需担心备份不同卷时的时间差。详情请参见:KEP-3476用于磁盘卷组快照的新 API
  • 重构kubectl apply --prune以提升性能,增加kubectl apply --prune --applyset的剪裁方式。详情请参见:使用配置文件对 Kubernetes 对象进行声明式管理
  • 新增 ServiceNodePortStaticSubrange 特性门控,开启后 NodePort Service 会使用不同的端口分配策略。
  • 原地调整 Pod 资源功能进入 Alpha 阶段,新增 InPlacePodVerticalScaling 特性门控,支持在不重启 Pod 和容器的情况下调整 Pod 容器中resources字段下的 CPU 和 Memory,即纵向弹性伸缩。详情请参见:KEP-1287原地调整 Pod 资源
  • KMS V2 进入 Beta 阶段,对 KMS 加密提供程序的性能进行优化。详情请参见:使用 KMS 驱动进行数据加密

废弃和移除功能

在 Kubernetes v1.28 版本

  • 废弃 CephFS 和 RBD 树内存储插件,建议转为使用第三方存储驱动 CephFS CSI
  • kube-scheduler 移除命令行参数--lock-object-namespace--lock-object-name,使用--leader-elect-resource-namespace--leader-elect-resource-name替代。
  • kubectl 移除命令行参数--shortkubectl version的默认输出与kubectl version --short相同。
  • kube-controller-manager 开始废弃命令行参数--volume-host-cidr-denylist--volume-host-allow-local-loopback
  • kubelet 开始废弃命令行参数--azure-container-registry-config参数,使用--image-credential-provider-config--image-credential-provider-bin-dir替代。
  • KMSv1 已经废弃。如果仍需兼容使用 KMSv1,需设置--feature-gates=KMSv1=true特性门控,建议使用 KMSv2。
  • kube-controller-manager 中新增--concurrent-cron-job-syncs参数,用于配置 CronJob 控制器的并发度,新增--concurrent-job-syncs参数,用于配置 Job 控制器的并发度。详情请参见:#117550#117138
  • 移除了如下特性门禁:DelegateFSGroupToCSIDriver、DevicePlugins、KubeletCredentialProviders、MixedProtocolLBService、ServiceInternalTrafficPolicy、ServiceIPStaticSubrange、EndpointSliceTerminatingCondition。

在 Kubernetes v1.27 版本

  • kube-controller-manager 移除命令行参数--pod-eviction-timeout--enable-taint-manager
  • kubelet 移除命令行参数--container-runtime--container-runtime-endpoint--image-service-endpoint
  • kube-apiserver 移除命令行参数--master-service-namespace
  • kube-controller-manager 移除命令行参数--enable-taint-manager--pod-eviction-timeout
  • kubelet 移除命令行参数--container-runtime--master-service-namespace
  • metrics 发生如下变更:node_collector_evictions_number被替代为node_collector_evictions_totalscheduler_e2e_scheduling_duration_seconds被替代为scheduler_scheduling_attempt_duration_seconds
  • 移除如下特性门禁:IPv6DualStack、ExpandCSIVolumes、ExpandInUsePersistentVolumes、ExpandPersistentVolumes、ControllerManagerLeaderMigration、CSI Migration、CSIInlineVolume、EphemeralContainers、LocalStorageCapacityIsolation、NetworkPolicyEndPort、StatefulSetMinReadySeconds、IdentifyPodOS、DaemonSetUpdateSurge。详情请参见:Kubernetes v1.27 Removal

API 版本弃用

  • 从容器服务发布 Kubernetes v1.28 版本起,容器服务集群中扩展调度器使用的 PodGroup CRD APIGroup 发生变化,将使用scheduling.x-k8s.io取代scheduling.sigs.k8s.io。详情请参见 BREAKING CHANGE: switch API group to x-k8s.io
  • 在 Kubernetes v1.28,移除 KubeSchedulerConfiguration 的kubescheduler.config.k8s.io/v1beta2版本 API,建议使用kubescheduler.config.k8s.io/v1。详情请参见:移除 v1beta2 KubeSchedulerConfiguration
  • 在 Kubernetes v1.28,移除 PVC 的.status.resizeStatus字段,替换为 Map 结构字段.status.allocatedResourceStatus,表示调整 PVC 大小时的状态。详情请参见: PersistentVolumeClaimStatus
  • 在 Kubernetes v1.28,移除特性 NetworkPolicyStatus,Network Policy,不再有 Status 属性。
  • 在 Kubernetes v1.27,移除 CSIStorageCapacity 的storage.k8s.io/v1beta1版本 API,建议使用storage.k8s.io/v1

参考链接

关于 Kubernetes v1.28 版本的性能和功能演进的更多信息,请参见: