Google Distributed Cloud(GDC)エアギャップ Kubernetes クラスタを作成すると、指定したノード数とノードタイプによって、クラスタの最初のノードプールが作成されます。既存のクラスタのコンピューティング要件が変更された場合は、次のノードプール タスクを実行できます。
新しいノードプールを追加する: クラスタ ワークロードの需要 が増加したら、新しいノードプールを追加します。
ノードプールを表示する: 既存のノードプールの特性と状態 を表示します。
ノードプールのサイズを変更する: ワークロード トラフィックの変動に合わせて、 ノードプールを手動でスケールアップまたはスケールダウンします。
ノードプールを削除する: クラスタ ワークロードの需要が減少した場合や、コンテナ オペレーションに適していないマシンタイプを削除する場合は、ノードプールを削除します。
クラスタ内のノードプールの詳細については、 ノードについてをご覧ください。
このドキュメントは、組織内の Kubernetes クラスタの管理を担当する、アプリケーション オペレータ グループのアプリケーション デベロッパーと、プラットフォーム管理者グループの IT 管理者を対象としています。詳細については、 GDC エアギャップ ドキュメントの対象読者をご覧ください。
始める前に
このドキュメントの手順を完了するには、必要な権限をリクエストして環境を準備する必要があります。
IAM ロールをリクエストする
Kubernetes クラスタ内のノードプールを管理するために必要な権限を取得するには、特定のロールが必要です。必要なロールは、組織スコープの共有クラスタまたはプロジェクト スコープの Standard クラスタのどちらを使用しているかによって異なります。詳細については、 Kubernetes クラスタの構成をご覧ください。
共有クラスタのロール
共有クラスタのノードプールを作成、削除、編集、表示するには、組織 IAM 管理者に連絡してユーザー クラスタ管理者
(user-cluster-admin)ロールをリクエストしてください。このロールは名前空間にバインドされていません。
Standard クラスタのロール
プロジェクト IAM 管理者に連絡して、次のロールをリクエストしてください。
Standard クラスタ管理者 (
standard-cluster-admin): Standard クラスタのノードプールを作成、削除、編集、表示します。クラスタ デベロッパー (
cluster-developer): Standard クラスタを作成、削除、編集、表示します。このロールは、GDC コンソールからクラスタのノードプールの詳細を表示するために必要です。
これらのロールは、プロジェクトの名前空間にバインドされています。
環境を準備する
API を使用して Kubernetes クラスタ に対してコマンドを実行するには、次のリソースが必要です。
Kubernetes クラスタ名を確認するか、プラットフォーム管理者グループのメンバーにクラスタ名を確認します。
Kubernetes クラスタ名を使用して、この手順の
KUBERNETES_CLUSTER_NAMEを置き換えます。ログインして生成 Kubernetes クラスタの管理 API サーバー kubeconfig ファイル。
管理 API サーバーの kubeconfig パスを使用して、この手順の
MANAGEMENT_API_SERVERを置き換えます。
ノードプールを追加する
既存の Kubernetes クラスタにノードプールを追加する手順は次のとおりです。
コンソール
プロジェクト選択ツールで、プロジェクトまたは組織を選択します。
Standard クラスタはプロジェクト スコープ、共有クラスタは組織スコープです。適切なスコープを選択して、適切な 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: クラスタの名前空間。共有クラスタの場合は、platform名前空間を使用します。Standard クラスタの場合は、クラスタのプロジェクトの名前空間を使用します。MANAGEMENT_API_SERVER: Kubernetes クラスタがホストされているゾーン 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 クラスタ内の既存のノードプールを表示する手順は次のとおりです。
コンソール
プロジェクト選択ツールで、プロジェクトまたは組織を選択します。
Standard クラスタはプロジェクト スコープ、共有クラスタは組織スコープです。適切なスコープを選択して、適切な 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: クラスタの名前空間。共有クラスタの場合は、platform名前空間を使用します。Standard クラスタの場合は、クラスタのプロジェクトの名前空間を使用します。
出力は次のようになります。
[ { "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 クラスタ内のノードプールのサイズを手動で変更できます。ノードプールをスケールダウンするときに、削除する特定のノードを選択することはできません。
既存のクラスタでノードプールをスケーリングする手順は次のとおりです。
コンソール
プロジェクト選択ツールで、プロジェクトまたは組織を選択します。
Standard クラスタはプロジェクト スコープ、共有クラスタは組織スコープです。適切なスコープを選択して、適切な 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: クラスタの名前空間。共有クラスタの場合は、platform名前空間を使用します。Standard クラスタの場合は、クラスタのプロジェクトの名前空間を使用します。MANAGEMENT_API_SERVER: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。
サイズを変更するノードプールの
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の数が、ノードプールに設定したノード数を反映していることを確認します。ノードプールが指定したサイズにスケーリングされるまでに数分かかることがあります。
ノードプールを削除する
ノードプールを削除すると、ノードとそのノードへのルートが削除されます。これらのノードは、実行中のポッドを強制排除して再スケジュールします。ポッドに特定のノードセレクタが設定されており、クラスタ内の他のノードが条件を満たさない場合、そのポッドはスケジュールできない状態のままになることがあります。
ノードプールを削除する前に、クラスタに 3 つ以上のワーカーノードがあることを確認してください。これにより、クラスタに十分なコンピューティング スペースを確保して効果的に実行できます。
ノードプールを削除する手順は次のとおりです。
コンソール
プロジェクト選択ツールで、プロジェクトまたは組織を選択します。
Standard クラスタはプロジェクト スコープ、共有クラスタは組織スコープです。適切なスコープを選択して、適切な Kubernetes クラスタタイプを表示します。
ナビゲーション メニューで、[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: クラスタの名前空間。共有クラスタの場合は、platform名前空間を使用します。Standard クラスタの場合は、クラスタのプロジェクトの名前空間を使用します。MANAGEMENT_API_SERVER: Kubernetes クラスタがホストされているゾーン API サーバーの kubeconfig パス。
nodePoolsセクションからノードプール エントリを削除します。たとえば、次のスニペットでは、machineTypeName、name、nodeCountフィールドを削除する必要があります。nodePools: # Several lines of code are omitted here. - machineTypeName: n2-standard-2-gdc name: nodepool-1 nodeCount: 3削除するノードプールのすべてのフィールドを削除してください。
ファイルを保存し、エディタを終了します。