Kubernetes 中的 Priority Class 和 QoS 有什么区别?



在Kubernetes中,我们可以根据请求和限制将pod的优先级设置为GuaranteedBurstableBest-Effort。在Kubernetes中分配优先级的另一种方法是定义priorityClass对象并将priorityClassName分配给pod。这些方法有何不同?当我们不得不选择一种方法而不是另一种方法时?根据https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#interactions-pod优先级和qos:

调度程序的抢占逻辑在选择抢占目标时不考虑QoS。抢占会考虑Pod的优先级,并尝试选择一组优先级最低的目标。

因此,如果Kubernetes必须在具有GuaranteedQoS的pod(其"priorityClass"值低于Burstablepod(之间进行选择,它是否会将Guaranteedpod置于抢占状态?

Quality of Service确定pod的调度和驱逐优先级。当一个pod没有得到任何资源请求/限制时,它被认为是low-priority pod (best effort)。如果节点资源不足,它将是第一个被逐出的pod。

当pod指定了任何资源/限制(不满足保证类要求(时,Medium priority (burstable)

当pod的请求和限制设置为相同值(CPU和内存(时,Highest priority (guaranteed)

PriorityClass用于在驱逐时确定pod优先级。有时,您可能希望一个吊舱在另一个吊舱之前被驱逐。优先级在其value字段中由整数描述,值越高,优先级越高。

当Pod优先级被启用时,调度程序根据其优先级对未决Pod进行排序,并且在调度队列中,一个未决Pod被放置在优先级较低的其他未决Pod之前。如果没有资源满足高优先级节点的节点,它将驱逐优先级较低的pod。最高优先级为system-node-critical

  • QoS用于控制和管理豆荚。当上没有可用资源时,会发生QoS逐出节点
  • 调度器在QoS之前考虑Pod的CCD_ 17。它不会试图驱逐Pod,除非需要调度优先级更高的Pod,并且节点没有足够的空间容纳它们
  • PriorityClass-当吊舱被抢占时,PriorityClass尊重优雅的终止期,但不保证吊舱中断预算得到遵守

调度程序会忽略前面提到的QoS。抢占仅考虑priorityClass,QoS在此不起作用。

最新更新