3.10.5. namespace を使用した Pod のフィルター

Pod が namespace に基づいてエビクション対象として考慮されるかどうかを設定できます。以下の Descheduler ストラテジーのみが namespace のフィルターをサポートします。

  • PodLifeTime
  • RemovePodsHavingTooManyRestarts
  • RemovePodsViolatingInterPodAntiAffinity
  • RemovePodsViolatingNodeAffinity
  • RemovePodsViolatingNodeTaints

IncludeNamespaces パラメーターを使用して、Descheduler ストラテジーを実行する必要のある namespace を指定したり、ExcludeNamespaces パラメーターを使用して Descheduler ストラテジーを実行できない namespace を指定したりできます。

前提条件

  • クラスター管理者の権限。

手順

  1. KubeDescheduler オブジェクトを編集します。

    $ oc edit kubedeschedulers.operator.openshift.io cluster -n openshift-kube-descheduler-operator
  2. IncludeNamespaces または ExcludeNamespaces パラメーターのいずれかを 1 つ以上のストラテジーに追加します。

    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
    複数の namespace はコンマで区切ります。
  3. 変更を適用するためにファイルを保存します。