# 优先级抢占(Preemption scheduling)策略 Volcano 通过 Priority 插件实现了优先级抢占策略,即 Preemption scheduling 策略。在集群资源有限且多个 Job 等待调度时, 如果使用 Kubernetes 默认调度器,可能会导致具有更多 Pod 数量的 Job 分得更多资源。而 Volcano-scheduler 提供了算法,支持不同的 Job 以 fair-share 的形式共享集群资源。 Priority 插件允许用户自定义 Job 和 Task 的优先级,并根据需求在不同层次上定制调度策略。 例如,对于金融场景、物联网监控场景等需要较高实时性的应用,Priority 插件能够确保其优先得到调度。 ## 使用方式 优先级的决定基于配置的 PriorityClass 中的 Value 值,值越大优先级越高。默认已启用,无需修改。可通过以下命令确认或修改。 ```shell kubectl -n volcano-system edit configmaps volcano-scheduler-configmap ``` ## 使用案例 假设集群中存在两个空闲节点,并有三个优先级不同的工作负载:high-priority、med-priority 和 low-priority。 当 high-priority 工作负载运行并占满集群资源后,再提交 med-priority 和 low-priority 工作负载。 由于集群资源全部被更高优先级的工作负载占用,med-priority 和 low-priority 工作负载将处于 pending 状态。 当 high-priority 工作负载结束后,根据优先级调度原则,med-priority 工作负载将优先被调度。 1. 通过 priority.yaml 创建 3 个优先级定义,分别为:high-priority,med-priority,low-priority。 ```yaml title="查看 priority.yaml" cat <