volcano.sh/volcano@v1.9.0/docs/design/node-priority.md (about)

     1  ## Node Priority in Kube-Batch
     2  
     3  This feature allows `kube-batch` to schedule workloads based on the priority of the Nodes, Workloads will be scheduled on Nodes with higher priority and these priorities will be calculated based on different parameters like `ImageLocality`, `Most/Least Requested Nodes`...etc.
     4  A basic flow for the Node priority functions is depicted below.
     5  
     6  ![Node Priority Flow](./images/Node-Priority.png)
     7  
     8  Currently in kube-batch `Session` is opened every 1 sec and the workloads which are there in Queue goes through `Predicate` to find a suitable set of Nodes where workloads can be scheduled and after that it goes through `Allocate` function to assign the Pods to the Nodes and then goes to `Preempt` if applicable.
     9  
    10  Node Priority can be introduced in the current flow for `Allocate` and `Preempt` function. Once we have set of Nodes where we can scheduled the workloads then flow will go through `Prioritize` function which will do the following things :
    11  
    12   - Run all the priority functions on all the list Nodes which is given by `Predicate` function in a parallel go-routine.
    13   - Score the Node based on whether the `Priority Rule` satisfies the Workload scheduling criteria.
    14   - Once the scores are returned from all the `PriorityFn` then aggregate the scoring and identify the Node with highest scoring.
    15   - Delegate this selected Node in last step to `AllocateFn` to Bind the workload to the Node.
    16  
    17  Currently there are multiple `PriorityFn` available with default Scheduler of Kubernetes. Going forward with each release we will implement all the priority functions in kube-batch based on their importance to batch scheduling.
    18