Karmada v1.13 版本发布!新增应用优先级调度能力
· 阅读需要 1 分钟
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 先进入队列。
更多有关应用优先级调度的资料请参考:应用优先级调度