16.3.3. 创建 Descheduler 策略
您可以将 descheduler 配置为从违反了 YAML 策略文件中 策略 定义的规则的节点中删除 pod。然后,您可以创建一个 包含策略文件路径的配置映射 以及使用该配置映射应用特定取消调度策略的作业规格。
descheduler 策略文件示例
apiVersion: "descheduler/v1alpha1" kind: "DeschedulerPolicy" strategies: "RemoveDuplicates": enabled: false "LowNodeUtilization": enabled: true params: nodeResourceUtilizationThresholds: thresholds: "cpu" : 20 "memory": 20 "pods": 20 targetThresholds: "cpu" : 50 "memory": 50 "pods": 50 numberOfNodes: 3 "RemovePodsViolatingInterPodAntiAffinity": enabled: true "RemovePodsViolatingNodeAffinity": enabled: true params: nodeAffinityType: - "requiredDuringSchedulingIgnoredDuringExecution"
有三个可与 descheduler 一起使用的默认策略:
您可以根据需要配置和禁用与策略关联的参数。
16.3.3.1. 删除重复的 Pod
RemoveDuplicates
策略确保了在运行的同一个节点上只有一个 pod 与 Replica Set, Replication Controller, Deployment Configuration, 或 Job 相关联。如果存在与这些对象关联的其他 pod,则重复的 pod 会被驱除。删除重复的 pod 会导致在集群中更好地分散 pod。
例如,如果某个节点失败并且节点上的 pod 移到另一个节点,导致多个与 Replica Set 或 Replication Controller 关联的 pod,在同一节点上运行,可能会出现重复的 pod。当出现故障的节点再次就绪后,此策略可用于驱除这些重复的 pod。
没有与此策略关联的参数。
apiVersion: "descheduler/v1alpha1"
kind: "DeschedulerPolicy"
strategies:
"RemoveDuplicates":
enabled: false 1
- 1
- 将此值设为
enabled: true
以使用此策略。设置为false
以禁用此策略。