第3章 専用ノードの指定

kubernetes クラスターは、複数の仮想マシンまたはノード (通常は 2 - 20 ノード) で実行します。Pod は、これらのノードのいずれかでスケジュールできます。新しい Pod を作成またはスケジュールするときは、topology_spread_constraints 設定を使用して、スケジュールまたは作成時に新しい Pod を基になるノードに分散する方法を設定します。

単一ノードで Pod をスケジュールしないでください。そのノードに障害が発生すると、それらの Pod が提供するサービスも失敗します。

自動化ジョブ Pod とは異なるノードで実行するようにコントロールプレーンノードをスケジュールします。コントロールプレーン Pod がジョブ Pod とノードを共有する場合は、コントロールプレーンがリソース不足になり、アプリケーション全体のパフォーマンスが低下する可能性があります。

3.1. 特定のノードへの Pod の割り当て

Operator が作成した Automation ControllerPod を、特定のサブセットのノードで実行するように制限できます。

  • node_selector および postgres_selector は、指定されたすべてのキー、値、またはそのペアに一致するノードでのみ実行されるように Automation Controller Pod を制限します。
  • tolerationspostgres_tolerations を使用すると、Automation Controller Pod を taint が一致するノードにスケジュールできます。詳細は、Kubernetes ドキュメントの taint と toleration 参照してください。

以下の表は、YAML の Automation Controller の仕様セクションで (または Openshift UI フォームを使用して) 設定できる設定とフィールドを示しています。

名前説明デフォルト

postgres_image

プルするイメージのパス

postgres

postgres_image_version

プルするイメージのバージョン

13

node_selector

AutomationController Pod の nodeSelector

“”’’

topology_spread_constraints

AutomationController Pod の topologySpreadConstraints

“”’’

Toleration

AutomationController Pod の toleration

“”’’

annotations

AutomationController Pod のアノテーション

“”’’

postgres_selector

Postgres Pod の nodeSelector

“”’’

postgres_tolerations

Postgres Pod の toleration

“”’’

topology_spread_constraints は、ノードセレクターに一致するコンピュートノード全体にコントロールプレーン Pod を分散するのに役立ちます。たとえば、このオプションの maxSkew パラメーターを 100 に設定すると、使用可能なノード全体に最大限分散することを意味します。したがって、一致する 3 つのコンピュートノードと 3 つの Pod がある場合は、各コンピュートノードに 1 つの Pod が割り当てられます。このパラメーターは、コントロールプレーン Pod が互いにリソースをめぐって競合するのを防ぐのに役立ちます。

コントローラー Pod を特定のノードに制限するカスタム設定の例

spec:
  ...
  node_selector: |
    disktype: ssd
    kubernetes.io/arch: amd64
    kubernetes.io/os: linux
  topology_spread_constraints: |
    - maxSkew: 100
      topologyKey: "topology.kubernetes.io/zone"
      whenUnsatisfiable: "ScheduleAnyway"
      labelSelector:
        matchLabels:
          app.kubernetes.io/name: "<resourcename>"
  tolerations: |
    - key: "dedicated"
      operator: "Equal"
      value: "AutomationController"
      effect: "NoSchedule"
  postgres_selector: |
    disktype: ssd
    kubernetes.io/arch: amd64
    kubernetes.io/os: linux
  postgres_tolerations: |
    - key: "dedicated"
      operator: "Equal"
      value: "AutomationController"
      effect: "NoSchedule"