使用 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 根据设置优先级和抢占策略来模拟调度场景。