Google Distributed Cloud(GDC)のエアギャップ Kubernetes クラスタを作成すると、指定したノード数とノードタイプによってクラスタの最初のノードプールが作成されます。既存のクラスタで、コンピューティング要件の変更に応じて次のノードプール タスクを実行できます。
新しいノードプールを追加する: クラスタ ワークロードの需要の増加に応じて、新しいノードプールを追加します。
ノードプールを表示する: 既存のノードプールの特性と状態を表示します。
ノードプールのサイズを変更する: ワークロード トラフィックの変動に合わせて、ノードプールを手動でスケールアップまたはスケールダウンします。
ノードプールを削除する: クラスタ ワークロードの需要が減少した場合や、コンテナ オペレーションに適さなくなったマシンタイプを削除する場合は、ノードプールを削除します。
クラスタ内のノードプールの詳細については、ノードについてをご覧ください。
このドキュメントは、組織内の Kubernetes クラスタの管理を担当するアプリケーション オペレーター グループのアプリケーション デベロッパーと、プラットフォーム管理者グループの IT 管理者を対象としています。詳細については、GDC のエアギャップ環境のユーザー グループのドキュメントをご覧ください。
始める前に
このドキュメントのタスクを完了するには、次のリソースとロールが必要です。
共有 Kubernetes クラスタでノードプールを表示して管理するには、組織の IAM 管理者に次のロールの付与を依頼してください。
- ユーザー クラスタ管理者(
user-cluster-admin) - ユーザー クラスタ ノード閲覧者(
user-cluster-node-viewer)
これらのロールは Namespace にバインドされていません。
- ユーザー クラスタ管理者(
標準 Kubernetes クラスタでノードプールを表示して管理するには、組織の IAM 管理者に Standard Cluster 管理者(
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 を使用します。標準クラスタの場合は、クラスタのプロジェクト Namespace を使用します。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 KUBERNETES_CLUSTER_NAMESPACE \ -o json --kubeconfig MANAGEMENT_API_SERVER | \ jq .status.workerNodePoolStatuses次のように置き換えます。
KUBERNETES_CLUSTER_NAME: クラスタの名前。KUBERNETES_CLUSTER_NAMESPACE: クラスタの Namespace。共有クラスタの場合は、platformNamespace を使用します。標準クラスタの場合は、クラスタのプロジェクト 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 を使用します。標準クラスタの場合は、クラスタのプロジェクト 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 を使用します。標準クラスタの場合は、クラスタのプロジェクト 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削除するノードプールのすべてのフィールドを削除してください。
ファイルを保存し、エディタを終了します。