Menu Close

Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

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、Replica Set、DeplicationController、 部署配置或 作业。如果存在与这些对象关联的其他 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 以禁用此策略。