ノードプールとは、Kubernetes クラスタ内で同じ構成を持つノードのグループのことです。ノードプールは NodePool 仕様を使用します。プール内の各ノードには Kubernetes ノードラベルが付けられており、ラベルの値はノードプールの名前です。デフォルトでは、すべての新しいノードプールがコントロール プレーンと同じバージョンの Kubernetes を実行します。
ユーザー クラスタを作成すると、指定したノード数とノードタイプでクラスタの最初のノードプールが作成されます。別のサイズやタイプのノードプールをクラスタに追加できます。ノードプール内のノードはすべて同一になります。
カスタム ノードプールは、他より多くのリソース(メモリやローカル ディスク容量など)を必要とする Pod をスケジュールする場合に役立ちます。Pod のスケジューリングをより細かく制御する必要がある場合は、ノード taint を使用できます。
クラスタ全体に影響を与えずに、ノードプールを個別に作成および削除できます。ノードプール内に単一ノードを構成することはできません。構成の変更は、ノードプール内のすべてのノードに影響します。
クラスタ内のノードプールのサイズを変更するには、プールをスケールアップまたはスケールダウンします。ノードプールのスケールダウンは、プールサイズを縮小する自動プロセスです。GDC システムは、任意のノードを自動的にドレインして削除します。ノードプールをスケールダウンするときに、削除する特定のノードを選択することはできません。
始める前に
ユーザー クラスタのノードプールを管理するには、ユーザー クラスタ管理者ロール(user-cluster-admin ロール)が必要です。
ノードプールを追加する
GDC コンソールからユーザー クラスタを作成する場合は、クラスタの作成が初期化される前に、デフォルトのノードプールをカスタマイズして追加のノードプールを作成できます。既存のユーザー クラスタにノードプールを追加する必要がある場合は、次の手順を完了します。
コンソール
- ナビゲーション メニューで [クラスタ] を選択します。
- クラスタリストからクラスタをクリックします。[クラスタの詳細] ページが表示されます。
- [ノードプール] > [ノードプールを追加] を選択します。
- ノードプールに名前を割り当てます。ノードプールの作成後に名前を変更することはできません。
- ノードプール内に作成するワーカーノードの数を指定します。
- ワークロードの要件に最も適したマシンクラスを選択します。マシンクラスは、次の設定に表示されます。
- マシンタイプ
- vCPU
- メモリ
- 省略可: Kubernetes の Key-Value ペアのラベルを追加して、ノードプールのリソースを整理します。
- [保存] をクリックします。
API
インタラクティブ エディタを使用して、
kubectlCLI でClusterカスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG次のように置き換えます。
USER_CLUSTER_NAME: ユーザー クラスタの名前。ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。
nodePoolsセクションに新しいエントリを追加します。nodePools: ... - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS次のように置き換えます。
MACHINE_TYPE: ノードプールのワーカーノードのマシンタイプ。構成可能な内容については、使用可能なマシンタイプをご覧ください。NODE_POOL_NAME: ノードプールの名前。NUMBER_OF_WORKER_NODES: ノードプールにプロビジョニングするワーカーノードの数。TAINTS: このノードプールのノードに適用する taint。このフィールドは省略できます。LABELS: このノードプールのノードに適用するラベル。Key-Value ペアのリストが含まれています。このフィールドは省略可能です。
ファイルを保存し、エディタを終了します。
ノードプールを表示する
ユーザー クラスタ内の既存のノードプールを表示する手順は次のとおりです。
コンソール
- ナビゲーション メニューで [クラスタ] を選択します。
- クラスタリストからクラスタをクリックします。[クラスタの詳細] ページが表示されます。
- [ノードプール] を選択します。
クラスタで実行されているノードプールのリストが表示されます。このページからクラスタのノードプールを管理できます。
API
特定のユーザー クラスタのノードプールを表示します。
kubectl get clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ -o json --kubeconfig ADMIN_CLUSTER_KUBECONFIG | \ jq .status.workerNodePoolStatuses出力は次のようになります。
[ { "conditions": [ { "lastTransitionTime": "2023-08-31T22:16:17Z", "message": "", "observedGeneration": 2, "reason": "NodepoolReady", "status": "True", "type": "Ready" }, { "lastTransitionTime": "2023-08-31T22:16:17Z", "message": "", "observedGeneration": 2, "reason": "ReconciliationCompleted", "status": "False", "type": "Reconciling" } ], "name": "worker-node-pool", "readyNodes": 3, "readyTimestamp": "2023-08-31T18:59:46Z", "reconcilingNodes": 0, "stalledNodes": 0, "unknownNodes": 0 } ]
ノードプールの削除
ノードプールを削除すると、ノードとそのノードへのルートが削除されます。これらのノードは、実行中の Pod を強制排除して再スケジュールします。Pod に特定のノードセレクタが設定されており、クラスタ内の他のノードが条件を満たさない場合、その Pod はスケジュールできない状態のままになることがあります。
ノードプールを削除する前に、クラスタに効果的に実行するための十分なコンピューティング スペースがあることを確認するために、ワーカーノードが 3 つ以上あることを確認してください。
ノードプールを削除するには、次の操作を行います。
コンソール
ナビゲーション メニューで [クラスタ] を選択します。
削除するノードプールをホストしているクラスタをクリックします。
[ノードプール] を選択します。
削除するノードプールの横にある delete [削除] をクリックします。
API
インタラクティブ エディタを使用して、
kubectlCLI でClusterカスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG次のように置き換えます。
USER_CLUSTER_NAME: ユーザー クラスタの名前。ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。
nodePoolsセクションからノードプールのエントリを削除します。たとえば、次のスニペットでは、machineTypeName、name、nodeCountの各フィールドを削除する必要があります。nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3削除するノードプールのすべてのフィールドを削除してください。
ファイルを保存し、エディタを終了します。
ワーカーノードのマシンタイプ
Google Distributed Cloud(GDC)エアギャップ アプライアンスでユーザー クラスタを作成すると、クラスタでコンテナ ワークロードを実行するノードプールが作成されます。コンテナ ワークロードの要件に基づいてノードをプロビジョニングし、要件の変更に応じて更新できます。
GDC には、ノードプールを追加するときに選択できるワーカーノードの事前定義マシンタイプが用意されています。
使用可能なマシンタイプ
GDC は、CPU、メモリ、GPU などのユーザー クラスタノードのパラメータを使用してマシンタイプを定義します。GDC には、さまざまな目的に応じたさまざまなマシンタイプがあります。たとえば、ユーザー クラスタは汎用コンテナ ワークロードに n2-standard-2-gdc を使用します。n2-highcpu-8-gdc など、メモリ最適化用のマシンタイプもあります。ディープ ラーニング コンテナを実行する場合は、a2-highgpu-1g-gdc などの GPU マシンをプロビジョニングする必要があります。
ユーザー クラスタのワーカーノードで使用可能なすべての GDC 事前定義マシンタイプの一覧は次のとおりです。
| 名前 | vCPU | メモリ | GPU 数 |
|---|---|---|---|
| n2-standard-2-gdc | 2 | 8G | なし |
| n2-standard-4-gdc | 4 | 16G | なし |
| n2-highmem-4-gdc | 4 | 32G | なし |
| n2-highcpu-8-gdc | 8 | 8G | なし |
| n2-standard-8-gdc | 8 | 32G | なし |
| n2-highmem-8-gdc | 8 | 64G | なし |
| a2-highgpu-1g-gdc | 12 | 85G | 1 |
| a2-ultragpu-1g-gdc | 12 | 170G | 1 |