Karmada v1.13 发布,新增应用优先级调度能力


Karmada 是开放的多云多集群容器编排引擎,旨在帮助用户在多云环境下部署和运维业务应用。凭借兼容 Kubernetes 原生 API 的能力,Karmada 可以平滑迁移单集群工作负载,并且仍可保持与 Kubernetes 周边生态工具链协同。

Karmada v1.13 版本现已发布,本版本包含下列新增特性:

  • 新增应用优先级调度功能,可用于保证关键作业时效性
  • 新增应用调度暂停与恢复功能,可用于构建多集群队列系统
  • Karmada Operator 功能持续演进
  • Karmada 控制器性能优化提升
  • Karmada Dashboard 首个版本发布!开启多云编排可视化新篇章

应用优先级调度

当前,Karmada 调度器调度负载时遵循 FIFO 策略,按照负载进入调度队列的次序依次调度。但在某些场景,比如AI训练类作业平台,用户希望工作负载能够按照优先级进行调度。这样当高优先级、紧急任务进入调度队列时,可以实现“插队”的效果,从而确保关键业务的时效性与服务质量。

从 v1.13.0 版本起,用户使用 PropagationPolicy 分发负载时可以指定调度优先级(.spec.SchedulePriority字段)。SchedulePriority 会指向用户事先配置的优先级类,Karmada 解析该优先级类并获取对应的优先级数值,值越大,调度优先级越高。

例如,需要在环境中部署 A,B 两种应用,应用A 负责在线交易这类对实时性要求高的业务,而应用B 负责定期日志清理等非紧急且对时间不敏感的业务。为确保在资源紧张时,应用A 能优先被调度,可以给应用A 配置较大的优先级类。

应用A 的优先级类和 PropagationPolicy 配置:

apiVersion:scheduling.k8s.io/v1
kind:PriorityClass
metadata:
   name:high-priority
value:1000000

---
apiVersion:policy.karmada.io/v1alpha1
kind:PropagationPolicy
metadata:
   name:propagation-a
spec:
 schedulePriority:
    priorityClassSource:KubePriorityClass
    priorityClassName:high-priority
placement:
   clusterAffinity:
     clusterNames:
     -member1
resourceSelectors:
-apiVersion:apps/v1
   kind:Deployment
   name:application-a

应用B 的优先级类和 PropagationPolicy 配置:

apiVersion: scheduling.k8s.io/v1
kind:PriorityClass
metadata:
 name:low-priority
value:1

---
apiVersion:policy.karmada.io/v1alpha1
kind:PropagationPolicy
metadata:
 name:propagation-b
spec:
 schedulePriority:
   priorityClassSource:KubePriorityClass
   priorityClassName:low-priority
placement:
   clusterAffinity:
     clusterNames:
     -member1
resourceSelectors:
-apiVersion:apps/v1
   kind:Deployment
   name:application-b

通过上述配置,当调度队列同时存在应用A 和 应用B 的工作负载时,应用A 会被优先调度,即便应用B 先进入队列。

应用调度暂停与恢复

在 v1.13.0 版本,Karmada 正式引入了应用调度环节的暂停与恢复。

社区在字段 ResourceBinding.Spec.Suspension 中新增了字段 Scheduling,用于控制应用调度的暂停与恢复。当 Suspension.Scheduling 为 true 时,应用调度暂停。当 Suspension.Scheduling 为 false 时,应用调度恢复。此功能可以与第三方系统集成,通过控制 ResourceBinding 的 Suspension.Scheduling 的字段值,实现对应用调度过程的精准控制。例如,在创建 ResourceBinding 时,可通过 webhook 将 Suspension.Scheduling 设置为 true 以暂停调度;随后,可对应用进行优先级排序、容量规划等操作;待相关操作完成后,设置 Suspension.Scheduling 为 false 即可恢复调度,最终实现有序调度/资源配额管理等高级能力

Karmada Operator 功能持续演进

本版本持续增强 Karmada Operator,新增以下功能:

  • 支持配置 API Server 边车容器:用户可通过此功能为 Karmada API Server 配置边车容器,从而集成辅助服务。例如,可集成 KMS 插件,实现静态数据加密。

  • 支持配置组件优先级类:用户可通过自定义 Karmada CR 为控制平面组件指定优先级类,确保关键组件以适当的优先级进行调度,从而提升 Karmada 系统的可靠性和稳定性。

Karmada 控制器性能优化提升

在版本 v1.13.0,Karmada 的性能优化主要集中在控制器,减少大规模数据部署场景下,控制器重启时的性能开销。为了验证性能优化的成效,社区准备了 12C CPU, 28G RAM 的物理机,并部署了 1000 个 Deployments 和 1000个 Configmaps,共生成 2000 个 ResourceBindings。在重启组件 karmada-controller-manager 后,收集 workqueue 的指标,结果如下:

  • 对于 Detector 控制器:队列 Reconcile 时间降低了60%。
  • 对于 binding-controller 控制器:队列 Reconcile 时间降低了25%。

这些指标显示了在版本 v1.13.0,控制器 Detector 和 binding-controller 在重启场景下存量资源重新编排的性能有了显著的提升。


相關推薦

2022-09-08

摘要:最新发布的 1.3 版本中,Karmada 重新设计了应用跨集群故障迁移功能,实现了基于污点的故障驱逐机制,并提供平滑的故障迁移过程,可以有效保障服务迁移过程的连续性(不断服)。 本文分享自华为云社区《Karmada v1.3

2023-11-06

,支持超长等待的任务进行识别和恢复。 TaskPool支持优先级设置及自动扩缩容算法。 高级语言优化编译: 正式定义ArkTS语法规则并新增ArkTS语法检查,在使用DevEco Studio进行代码编译时会对不符合ArkTS语法规则的代码进

2023-12-01

CPU、内存、磁盘、网络等资源,也可以用于限制进程的优先级和 IO 权限。利用其提供的能力,很容易实现类似不公平调度算法(新的 AM 天然支持 Cgroups 的操作),但是还有一些顾虑: 不同于手机操作系统,计算机操作系统

2023-03-25

时段容易被闲置。 如果可以把这些闲置资源暂时出让给优先级低的服务,当在线业务需要使用的时候及时将资源归还,形成在离线服务混部,就可以达到削峰填谷,节约成本#的效果。 字节跳动云原生混部实践 字节跳动业务

2024-07-05

关键数据加载到缓存中,减少首次查询的延迟。 缓存优先级 :3.3.1 推出将 cache select 设置较高的缓存优先级,确保最重要的数据得到优先缓存。 内存优化和可观测性: 缓存的内存优化和可观测性的提升,使得缓存的管理

2022-06-19

器优先抢占Elastic Pod实现缩容。同时调度器也会平衡不同优先级的弹性作业间的资源分配,如支持高优先级作业抢占低优先级作业的弹性副本部分的资源。 设计文档:https://github.com/volcano-sh/volcano/blob/master/docs/design/elastic-schedule

2023-08-03

KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.4.0 正式发布! 让我们先简单回顾下之前三个大版本的主要变化: KubeSphere 3.1.0 新增了“边缘计算”、“计量计费” 等功能,将 Kubernetes 从云端扩展至边缘; KubeSphere 3.2.0 新

2022-10-29

,支持对云平台全局范围内云主机设置高可用模式,生效优先级为:云主机粒度>全局粒度。 全局粒度:对云平台全局范围内云主机设置高可用模式,可选值为:None(默认)、NeverStop。 云主机粒度:云主机单独设置高可

2023-08-23

Volcano 社区 v1.8.0 版本正式发布,此次版本增加了以下新特性: 支持vGPU调度及隔离 支持vGPU和用户自定义资源的抢占能力 新增JobFlow工作流编排引擎 节点负载感知调度与重调度支持多样化的监控系统 优化Volcano对

2023-04-21

我们很高兴向大家宣布,2023年4月14日,Taier 正式发布 1.4 版本。自2022年2月份 Taier 正式开源以来,收到了很多开发者和行业用户的积极评价,在诸多生产环境中已得到充分应用。Taier 1.4版本正是吸收了各类实践经验及大家的建议

2024-06-22

应用沙箱路径。 分布式软总线 BR/BLE连接新增传输优先级控制,提升BLE发现广播成功率。 支持BR/BLE链路复用能力,同时确保复用流程不被业务打断,提升复用成功率。 组网支持多介质组网归一,避免重复认证,提升

2023-04-08

提升约10%。 通过为每个进程分别建立Message和Byte高低优先级队列,确保在消息和字节并发的情况下,优先保障消息队列的数据发送,同时也能保障Byte得到有效传输,避免了在字节数据拥塞的情况下,消息数据不能及时传输。

2023-04-14

od PVC 的 Pod 的调度程序抢占支持。调度程序抢占允许更高优先级的 Pod 抢占低优先级的 Pod。 滚动升级后遵循 PodTopologySpread matchLabelKeys 是一个 Pod 标签键的列表。这些键用于从 Pod 标签中查找值。这些键值标签与 labelSelector 进行

2025-03-25

尤其适用于电池供电的 IoT 终端设备。 b. 提升原子操作优先级,通过 RT_USING_STDC_ATOMIC 优先使用标准库实现,增强多核场景下的数据一致性。 c. 全新 rt_completion 无锁算法,定时器分辨率提升约12%,显著提高并发场景下的响应效