ノードプールを管理する

ノードプールとは、Kubernetes クラスタ内で同じ構成を持つノードのグループのことです。ノードプールは NodePool 仕様を使用します。プール内の各ノードには Kubernetes ノードラベルが付けられており、ラベルの値はノードプールの名前です。デフォルトでは、すべての新しいノードプールがコントロール プレーンと同じバージョンの Kubernetes を実行します。

ユーザー クラスタを作成すると、指定したノード数とノードタイプでクラスタの最初のノードプールが作成されます。別のサイズやタイプのノードプールをクラスタに追加できます。ノードプール内のノードはすべて同一になります。

カスタム ノードプールは、他より多くのリソース(メモリやローカル ディスク容量など)を必要とする Pod をスケジュールする場合に役立ちます。Pod のスケジューリングをより細かく制御する必要がある場合は、ノード taint を使用できます。

クラスタ全体に影響を与えずに、ノードプールを個別に作成および削除できます。ノードプール内に単一ノードを構成することはできません。構成の変更は、ノードプール内のすべてのノードに影響します。

クラスタ内のノードプールのサイズを変更するには、プールをスケールアップまたはスケールダウンします。ノードプールのスケールダウンは、プールサイズを縮小する自動プロセスです。GDC システムは、任意のノードを自動的にドレインして削除します。ノードプールをスケールダウンするときに、削除する特定のノードを選択することはできません。

始める前に

ユーザー クラスタのノードプールを管理するには、ユーザー クラスタ管理者ロール(user-cluster-admin ロール)が必要です。

ノードプールを追加する

GDC コンソールからユーザー クラスタを作成する場合は、クラスタの作成が初期化される前に、デフォルトのノードプールをカスタマイズして追加のノードプールを作成できます。既存のユーザー クラスタにノードプールを追加する必要がある場合は、次の手順を完了します。

コンソール

  1. ナビゲーション メニューで [クラスタ] を選択します。
  2. クラスタリストからクラスタをクリックします。[クラスタの詳細] ページが表示されます。
  3. [ノードプール] > [ノードプールを追加] を選択します。
  4. ノードプールに名前を割り当てます。ノードプールの作成後に名前を変更することはできません。
  5. ノードプール内に作成するワーカーノードの数を指定します。
  6. ワークロードの要件に最も適したマシンクラスを選択します。マシンクラスは、次の設定に表示されます。
    • マシンタイプ
    • vCPU
    • メモリ
  7. 省略可: Kubernetes の Key-Value ペアのラベルを追加して、ノードプールのリソースを整理します。
  8. [保存] をクリックします。

API

  1. インタラクティブ エディタを使用して、kubectl CLI で Cluster カスタム リソース仕様を開きます。

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    次のように置き換えます。

    • USER_CLUSTER_NAME: ユーザー クラスタの名前。
    • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。
  2. 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 ペアのリストが含まれています。このフィールドは省略可能です。
  3. ファイルを保存し、エディタを終了します。

ノードプールを表示する

ユーザー クラスタ内の既存のノードプールを表示する手順は次のとおりです。

コンソール

  1. ナビゲーション メニューで [クラスタ] を選択します。
  2. クラスタリストからクラスタをクリックします。[クラスタの詳細] ページが表示されます。
  3. [ノードプール] を選択します。

クラスタで実行されているノードプールのリストが表示されます。このページからクラスタのノードプールを管理できます。

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 つ以上あることを確認してください。

ノードプールを削除するには、次の操作を行います。

コンソール

  1. ナビゲーション メニューで [クラスタ] を選択します。

  2. 削除するノードプールをホストしているクラスタをクリックします。

  3. [ノードプール] を選択します。

  4. 削除するノードプールの横にある [削除] をクリックします。

API

  1. インタラクティブ エディタを使用して、kubectl CLI で Cluster カスタム リソース仕様を開きます。

    kubectl edit clusters.cluster.gdc.goog/USER_CLUSTER_NAME -n platform \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    次のように置き換えます。

    • USER_CLUSTER_NAME: ユーザー クラスタの名前。
    • ADMIN_CLUSTER_KUBECONFIG: 管理クラスタの kubeconfig ファイルのパス。
  2. nodePools セクションからノードプールのエントリを削除します。たとえば、次のスニペットでは、machineTypeNamenamenodeCount の各フィールドを削除する必要があります。

    nodePools:
    ...
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    削除するノードプールのすべてのフィールドを削除してください。

  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