Google Distributed Cloud(GDC)エアギャップ Kubernetes クラスタを作成すると、指定したノード数とノードタイプによって、クラスタの最初のノードプールが作成されます。既存のクラスタのコンピューティング要件が変更された場合は、次のノードプール タスクを実行できます。
新しいノードプールを追加する: クラスタ ワークロードの需要 が増加したら、新しいノードプールを追加します。
ノードプールを表示する: 既存のノードプールの特性と状態 を表示します。
ノードプールのサイズを変更する: ワークロード トラフィックの変動に合わせて、 ノードプールを手動でスケールアップまたはスケールダウンします。
ノードプールを削除する: クラスタ ワークロードの需要が減少した場合や、コンテナ オペレーションに適していないマシンタイプを削除する場合は、ノードプールを削除します。
クラスタ内のノードプールの詳細については、 ノードについてをご覧ください。
このドキュメントは、組織内の Kubernetes クラスタの管理を担当する、アプリケーション オペレータ グループのアプリケーション デベロッパーと、プラットフォーム管理者グループの IT 管理者を対象としています。詳細については、 GDC エアギャップ ドキュメントの対象読者をご覧ください。
始める前に
このドキュメントの手順を完了するには、次のリソースとロールが必要です。
共有 Kubernetes クラスタ内のノードプールを表示して管理するには、組織 IAM 管理者に次のロールの付与を依頼してください。
- ユーザー クラスタ管理者(
user-cluster-admin) - ユーザー クラスタ ノード閲覧者(
user-cluster-node-viewer)
これらのロールは Namespace にバインドされていません。
- ユーザー クラスタ管理者(
Standard Kubernetes クラスタ内のノードプールを表示して管理するには、組織 IAM 管理者に Standard クラスタ管理者(
standard-cluster-admin)ロールの付与を依頼してください。このロールは、プロジェクト Namespace にバインドされています。Kubernetes クラスタに対してコマンドを実行するには、次のリソースが必要です。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。
ログインして生成 Kubernetes クラスタの kubeconfig ファイルがない場合は、します。
Kubernetes クラスタの kubeconfig パスを使用して、この手順の
KUBERNETES_CLUSTER_KUBECONFIGを置き換えます。
ノードプールを追加する
既存の Kubernetes クラスタにノードプールを追加する手順は次のとおりです。
コンソール
- ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
- クラスタリストでクラスタをクリックします。[クラスタの詳細] ページが表示されます。
- [ノードプール] > [ノードプールを追加] を選択します。
- ノードプールの名前を割り当てます。ノードプールの作成後に名前を変更することはできません。
- ノードプールに作成するワーカーノードの数を指定します。
- ワークロードの要件に最も適したマシンクラスを選択します。マシンクラスは次の設定で表示されます。
- マシンタイプ
- vCPU
- メモリ
- [保存] をクリックします。
API
インタラクティブ エディタを使用して、
kubectlCLI でClusterカスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER次のように置き換えます。
KUBERNETES_CLUSTER_NAME: クラスタの名前。KUBERNETES_CLUSTER_NAMESPACE: クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。MANAGEMENT_API_SERVER: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。ターゲット ゾーンの API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインをご覧ください。
nodePoolsセクションに新しいエントリを追加します。nodePools: # Several lines of code are omitted here. - 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 KUBERNETES_CLUSTER_NAMESPACE \ -o json --kubeconfig MANAGEMENT_API_SERVER | \ jq .status.workerNodePoolStatuses次のように置き換えます。
KUBERNETES_CLUSTER_NAME: クラスタの名前。KUBERNETES_CLUSTER_NAMESPACE: クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。
出力は次のようになります。
[ { "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 } ]
ノードプールのサイズを変更する
Kubernetes クラスタ内のノードプールのサイズは、プールをスケールアップまたはスケールダウンすることで手動で変更できます。ノードプールをスケールダウンするときに、削除する特定のノードを選択することはできません。
既存のクラスタでノードプールをスケーリングする手順は次のとおりです。
コンソール
- ダッシュボードで、編集するクラスタが存在するプロジェクトを選択します。
- ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
- ノードプールが関連付けられているクラスタ名を選択します。[クラスタの詳細] ページが表示されます。
- [ノードプール] タブをクリックします。
- サイズを変更するノード プールのedit 編集アイコンを選択します。[ノードプールの編集] プロンプトが表示されます。
[ノード数] フィールドを更新して、ノードプールに必要な新しいノード数を反映させます。ワークロードの要件に合わせてノード数を増減できます。
[保存] をクリックします。
クラスタの [ノードプール] タブに戻り、サイズ変更されたノードプールのステータスが
Readyで、ノード数が正しいことを確認します。ノードプールが指定したサイズにスケーリングされるまでに数分かかることがあります。
API
インタラクティブ エディタを使用して、kubectl CLI で
Clusterカスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER次のように置き換えます。
KUBERNETES_CLUSTER_NAME: ノードプールをホストするクラスタの名前。KUBERNETES_CLUSTER_NAMESPACE: クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。MANAGEMENT_API_SERVER: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。ターゲット ゾーンの API サーバーの kubeconfig ファイルを生成していない場合は、 ゾーン Management API サーバーのリソースをご覧ください。
サイズを変更するノードプールの
nodeCountフィールドを更新します。nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: NUMBER_OF_WORKER_NODESNUMBER_OF_WORKER_NODESを、ノードプールにプロビジョニングするワーカーノードの更新後の数に置き換えます。ファイルを保存し、エディタを終了します。
ノードプールの構成を確認して、ノードのスケーリングが完了したことを確認します。
kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE -o json \ --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatusesreadyNodesの数が、ノードプールに設定したノード数を反映していることを確認します。ノードプールが指定したサイズにスケーリングされるまでに数分かかることがあります。
ノードプールを削除する
ノードプールを削除すると、ノードとそのノードへのルートが削除されます。これらのノードは、実行中の Pod を強制排除して再スケジュールします。Pod に特定のノードセレクタが設定されており、クラスタ内の他のノードが条件を満たさない場合、その Pod はスケジュールできない状態のままになることがあります。
ノードプールを削除する前に、クラスタに 3 つ以上のワーカーノードがあることを確認してください。これにより、クラスタに十分なコンピューティング スペースを確保して効率的に実行できます。
ノードプールを削除する手順は次のとおりです。
コンソール
ナビゲーション メニューで、[Kubernetes Engine] > [クラスタ] を選択します。
削除するノードプールをホストしているクラスタをクリックします。
[ノードプール] を選択します。
削除するノード プールの横にある delete [削除] をクリックします。
API
インタラクティブ エディタを使用して、kubectl CLI で
Clusterカスタム リソース仕様を開きます。kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \ -n KUBERNETES_CLUSTER_NAMESPACE \ --kubeconfig MANAGEMENT_API_SERVER次のように置き換えます。
KUBERNETES_CLUSTER_NAME: クラスタの名前。KUBERNETES_CLUSTER_NAMESPACE: クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。Standard クラスタの場合は、クラスタのプロジェクト Namespace を使用します。MANAGEMENT_API_SERVER: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。ターゲット ゾーンの API サーバーの kubeconfig ファイルを生成していない場合は、 ゾーン Management API サーバーのリソースをご覧ください。
nodePoolsセクションからノードプール エントリを削除します。たとえば、次のスニペットでは、machineTypeName、name、nodeCountフィールドを削除する必要があります。nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3削除するノードプールのすべてのフィールドを削除してください。
ファイルを保存し、エディタを終了します。