第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 を制限します。 -
tolerationsとpostgres_tolerationsを使用すると、Automation Controller Pod を taint が一致するノードにスケジュールできます。詳細は、Kubernetes ドキュメントの taint と toleration 参照してください。
以下の表は、YAML の Automation Controller の仕様セクションで (または Openshift UI フォームを使用して) 設定できる設定とフィールドを示しています。
| 名前 | 説明 | デフォルト |
|---|---|---|
|
| プルするイメージのパス | postgres |
|
| プルするイメージのバージョン | 13 |
|
| AutomationController Pod の nodeSelector | “”’’ |
|
| AutomationController Pod の topologySpreadConstraints | “”’’ |
|
| AutomationController Pod の toleration | “”’’ |
|
| AutomationController Pod のアノテーション | “”’’ |
|
| Postgres Pod の nodeSelector | “”’’ |
|
| 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"