3.10.5. 按命名空间过滤 pod

您可以根据其命名空间来配置 pod 是否被视为驱除。只有 descheduler 策略支持命名空间过滤:

  • PodLifeTime
  • RemovePodsHavingTooManyRestarts
  • RemovePodsViolatingInterPodAntiAffinity
  • RemovePodsViolatingNodeAffinity
  • RemovePodsViolatingNodeTaints

您可以使用 IncludeNamespaces 参数指定应运行 descheduler 策略的命名空间,或使用 ExcludeNamespaces 参数指定不应运行 descheduler 策略的命名空间。

先决条件

  • 必须具有集群管理员权限。

流程

  1. 编辑 KubeDescheduler 对象:

    $ oc edit kubedeschedulers.operator.openshift.io cluster -n openshift-kube-descheduler-operator
  2. 在一个或多个策略中添加 IncludeNamespacesExcludeNamespaces 参数:

    apiVersion: operator.openshift.io/v1beta1
    kind: KubeDescheduler
    metadata:
    ...
    spec:
      deschedulingIntervalSeconds: 3600
      strategies:
      - name: "RemovePodsHavingTooManyRestarts"
        params:
        - name: "PodRestartThreshold"
          value: "10"
        - name: "IncludingInitContainers"
          value: "false"
        - name: "IncludeNamespaces" 1
          value: "my-project" 2
      - name: "PodLifeTime"
        params:
        - name: "MaxPodLifeTimeSeconds"
          value: "86400"
        - name: "ExcludeNamespaces" 3
          value: "my-other-project" 4
    1 3
    您不能为相同的策略同时指定 IncludeNamespacesExcludeNamespaces
    2 4
    使用逗号分隔多个命名空间。
  3. 保存文件以使改变生效。