1、先到先得,简单,公平 2、优先级策略(Priority),符合公司业务特点 # PodPriority 优先级调度配置 1、创建PriorityClass 2、为各个pod配置上不同的priorityClassName ``` apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high value: 1000 globalDefault: false ``` ``` apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: low value: 10 globalDefault: false ``` 为pod1配置上high,为pod2配置上low ``` ... spec: priorityClassName: high # 或者low ... ``` # 一些内置的优先级设置 ### 内置的默认优先级 ``` DefaultPriorityWhenNoDefaultClassExists=0 如果未设置优先级,那么默认优先级都为0 ``` ### 用户可配置的最大优先级限制 ``` HighestUserDefinablePriority=10亿 ``` ### 系统级别优先级 ``` SystemCriticalPriority=20亿 ``` ### 内置系统级别优先级 ``` system-cluster-critical system-node-critical ``` # 抢占调度 1、优先选择打破pdb最少的节点(Pod Disruption Budget,Pod中断预算) 2、选择待抢占的pods中最大优先级最小的节点 3、选择待抢占的pod优先级加和最小的节点 4、接下来选择待抢占pod数量最小的节点 5、最后选择拥有最晚启动pod的节点