使用 Pod 优先级和抢占调度 Pod

使用 Pod 优先级和抢占调度 Pod #

Pod 优先级和抢占调度策略可以在 KWOK 集群中应用。对于此特定场景,集群将限制在特定资源范围内,然后使用 Pod 优先级和抢占策略策略驱逐低优先级 Pod。

此图像显示了在测试此场景时应看到的内容。您可以在看到此内容后按照分步指南进行操作。

先决条件 #

创建集群 #

kwokctl create cluster

查看集群 #

这可确保成功创建集群。

kwokctl get clusters

创建节点 #

kwokctl scale node --replicas 1 --param '.allocatable.cpu="4000m"'

创建优先级类(低和高)#

kubectl apply -f priority-classes.yaml

部署低优先级 Pod #

这允许与该优先级类匹配的任何 Pod 消耗节点的3 个 CPU

kubectl apply -f low-priority-pod.yaml

部署高优先级 Pod #

这允许与该优先级类匹配的任何 Pod 消耗节点的3 个 CPU。由于节点最多有4 个 CPU,因此消耗超过1 个 CPU的低优先级类 Pod 将被抢占。

kubectl apply -f high-priority-pod.yaml

观察抢占 #

现在,观察抢占过程。由于资源有限,较高优先级的 Pod 将抢占较低优先级的 Pod。

kubectl get pods

NAME                READY   STATUS    RESTARTS   AGE
high-priority-pod   1/1     Running   0          5s

您应该看到低优先级 Pod 已终止,而高优先级 Pod 已调度。

查看有关抢占事件的更多详细信息 #

kubectl describe pod high-priority-pod | awk '/Events:/,/pod to node/'

Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  11m   default-scheduler  0/1 nodes are available: 1 Insufficient cpu.
  Normal   Scheduled         11m   default-scheduler  Successfully assigned default/high-priority-pod to node-000000

事件日志表明,高优先级 Pod 由于其较高优先级而抢占了另一个 Pod。

删除集群 #

kwokctl delete cluster

结论 #

此示例演示了如何使用 KWOK 根据设置优先级和抢占策略来模拟调度场景。