ノードプールとは、Kubernetes クラスタ内で同じ構成を持つノードのグループのことです。ノードプールは NodePool
仕様を使用します。プール内の各ノードには Kubernetes ノードラベルが付けられており、ラベルの値はノードプールの名前です。デフォルトでは、すべての新しいノードプールがコントロール プレーンと同じバージョンの Kubernetes を実行します。
Kubernetes クラスタを作成すると、指定したノード数とノードタイプでクラスタの最初のノードプールが作成されます。別のサイズやタイプのノードプールをクラスタに追加できます。ノードプール内のノードはすべて同一になります。
カスタム ノードプールは、他より多くのリソース(メモリやローカル ディスク容量など)を必要とする Pod をスケジュールする場合に役立ちます。Pod のスケジューリングをより細かく制御する必要がある場合は、ノード taint を使用できます。
クラスタ全体に影響を与えずに、ノードプールを個別に作成および削除できます。ノードプール内に単一ノードを構成することはできません。構成の変更は、ノードプール内のすべてのノードに影響します。
クラスタ内のノードプールのサイズを変更するには、プールをスケールアップまたはスケールダウンします。ノードプールのスケールダウンは、プールサイズを縮小する自動プロセスです。GDC システムは、任意のノードを自動的にドレインして削除します。ノードプールをスケールダウンするときに、削除する特定のノードを選択することはできません。
始める前に
Kubernetes クラスタのノードプールを表示して管理するには、次のロールが必要です。
- ユーザー クラスタ管理者(
user-cluster-admin
) - ユーザー クラスタ ノード閲覧者(
user-cluster-node-viewer
)
これらのロールは Namespace にバインドされていません。
ノードプールを追加する
GDC コンソールから Kubernetes クラスタを作成するときに、クラスタの作成が初期化される前に、デフォルトのノードプールをカスタマイズして、追加のノードプールを作成できます。既存の Kubernetes クラスタにノードプールを追加する必要がある場合は、次の手順を完了します。
コンソール
- ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
- クラスタリストからクラスタをクリックします。[クラスタの詳細] ページが表示されます。
- [ノードプール > ノードプールを追加] を選択します。
- ノードプールに名前を割り当てます。ノードプールの作成後に名前を変更することはできません。
- ノードプール内に作成するワーカーノードの数を指定します。
- ワークロードの要件に最も適したマシンクラスを選択します。マシンクラスは、次の設定に表示されます。
- マシンタイプ
- vCPU
- メモリ
- [保存] をクリックします。
API
インタラクティブ エディタを使用して、
kubectl
CLI でCluster
カスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
次のように置き換えます。
KUBERNETES_CLUSTER_NAME
: クラスタの名前。MANAGEMENT_API_SERVER
: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。ターゲット ゾーンの API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインをご覧ください。
nodePools
セクションに新しいエントリを追加します。nodePools: ... - machineTypeName: MACHINE_TYPE name: NODE_POOL_NAME nodeCount: NUMBER_OF_WORKER_NODES taints: TAINTS labels: LABELS acceleratorOptions: gpuPartitionScheme: GPU_PARTITION_SCHEME
次のように置き換えます。
MACHINE_TYPE
: ノードプールのワーカーノードのマシンタイプ。構成可能な内容については、使用可能なマシンタイプをご覧ください。NODE_POOL_NAME
: ノードプールの名前。NUMBER_OF_WORKER_NODES
: ノードプールにプロビジョニングするワーカーノードの数。TAINTS
: このノードプールのノードに適用する taint。このフィールドは省略できます。LABELS
: このノードプールのノードに適用するラベル。Key-Value ペアのリストが含まれています。このフィールドは省略可能です。GPU_PARTITION_SCHEME
: GPU ワークロードを実行している場合は、GPU パーティショニング スキーマ。例:mixed-2
このフィールドが設定されていない場合、GPU はパーティショニングされません。利用可能なマルチインスタンス GPU(MIG)プロファイルについては、サポートされている MIG プロファイルをご覧ください。
ファイルを保存し、エディタを終了します。
ノードプールを表示する
Kubernetes クラスタ内の既存のノードプールを表示する手順は次のとおりです。
コンソール
- ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
- クラスタリストからクラスタをクリックします。[クラスタの詳細] ページが表示されます。
- [ノードプール] を選択します。
クラスタで実行されているノードプールのリストが表示されます。このページからクラスタのノードプールを管理できます。
API
特定の Kubernetes クラスタのノードプールを表示します。
kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ -o json --kubeconfig MANAGEMENT_API_SERVER | \ 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 つ以上あることを確認してください。
ノードプールを削除するには、次の操作を行います。
コンソール
ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
削除するノードプールをホストしているクラスタをクリックします。
[ノードプール] を選択します。
削除するノードプールの横にある delete [削除] をクリックします。
API
インタラクティブ エディタを使用して、
kubectl
CLI でCluster
カスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME -n platform \ --kubeconfig MANAGEMENT_API_SERVER
次のように置き換えます。
KUBERNETES_CLUSTER_NAME
: クラスタの名前。MANAGEMENT_API_SERVER
: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。ターゲット ゾーンの API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインをご覧ください。
nodePools
セクションからノードプールのエントリを削除します。たとえば、次のスニペットでは、machineTypeName
、name
、nodeCount
の各フィールドを削除する必要があります。nodePools: ... - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3
削除するノードプールのすべてのフィールドを削除してください。
ファイルを保存し、エディタを終了します。