Kubernetes 中的优先级和 QoS 有什么区别?

Moh*_*por 7 qos preemption kubernetes

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

\n\n
\n

Scheduler\xe2\x80\x99s 抢占逻辑在选择抢占目标时不考虑 QoS。抢占会考虑 Pod 优先级并尝试选择一组优先级最低的目标。

\n
\n\n

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

\n

Mar*_* K. 6

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

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

Highest priority (guaranteed)当 Pod 将请求和限制设置为相同值(CPU 和内存)时。

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

启用 Pod 优先级后,调度程序会根据挂起的 Pod 的优先级进行排序,并且挂起的 Pod 会被放置在调度队列中优先级较低的其他挂起的 Pod 之前。如果没有资源满足高优先级节点的节点,它将驱逐优先级较低的 Pod。最高优先级是system-node-critical

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


omr*_*oco 0

如上所述,调度程序将简单地忽略 QoS。抢占只考虑了priorityClassQoS,这里没有作用。