GKE での Compute Engine 単一テナントノードの使用

このページでは、Google Kubernetes Engine(GKE)で Compute Engine の単一テナントノードを使用する方法について説明します。

単一テナントノードは、特定のプロジェクトの VM を実行する専用の物理サーバーです。単一テナントノードを使用すると、VM を他のプロジェクトの VM から物理的に分離することや、同じホスト ハードウェア上に VM をグループ化することが可能です。

始める前に

作業を始める前に、次のことを確認してください。

次のいずれかの方法で gcloud のデフォルトの設定を指定します。

  • gcloud init。デフォルトの設定全般を確認する場合に使用します。
  • gcloud config。プロジェクト ID、ゾーン、リージョンを個別に設定する場合に使用します。

gcloud init の使用

エラー One of [--zone, --region] must be supplied: Please specify location を受信した場合は、このセクションの内容を実施します。

  1. gcloud init を実行して、次の操作を行います。

    gcloud init

    リモート サーバーで SSH を使用している場合は、--console-only フラグを指定して、コマンドがブラウザを起動しないようにします。

    gcloud init --console-only
  2. 手順に従って gcloud を承認し、Google Cloud アカウントを使用します。
  3. 新しい構成を作成するか、既存の構成を選択します。
  4. Google Cloud プロジェクトを選択します。
  5. デフォルトの Compute Engine ゾーンを選択します。

gcloud config の使用

  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project project-id
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone compute-zone
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region compute-region
  • gcloud を最新バージョンに更新します。
    gcloud components update

追加の割り当てをリクエストする

単一テナントノードは大きく(96 vCPU と 624 GB メモリなど)、デフォルトのプロジェクト割り当てでは少なすぎて処理できません。

単一テナントノードを作成するには、割り当てページで Compute Engine API CPU の割り当ての引き上げをリクエストする必要があります。引き上げのリクエストの詳細については、割り当てをご覧ください。

必要な CPU の数は、次の条件によって異なります。

  • 現在の CPU 割り当て使用量。
  • ノードグループのサイズ。
  • ノード テンプレート。

単一テナントノードのコア数を確認し、少なくともその量の CPU 上限をリクエストします(好ましくは追加 CPU 10 個のヘッドルームと併せて)。

単一テナントノード テンプレートを作成する

単一テナントのノード テンプレートは、ノードグループの作成時に、すべてのノードにプロパティを定義して適用するリージョン リソースです。詳細については、ノードタイプをご覧ください。

Console

  1. 単一テナントノードのページに移動します。

    [単一テナントノード] ページに移動

  2. [ノード テンプレートを作成] をクリックします。

  3. ノード テンプレートの [名前] と [リージョン] を指定します。

  4. ノードタイプを選択します。

  5. 必要に応じて、1 つ以上のノード アフィニティ ラベルを追加します。

  6. [作成] をクリックして、ノード テンプレートを作成します。

gcloud

gcloud compute sole-tenancy node-templates create コマンドを使用してノード テンプレートを作成します。

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
  --node-type=NODE_TYPE \
  --node-affinity-labels=AFFINITY_LABELS \
  --region=REGION

以下を置き換えます。

  • TEMPLATE_NAME: 新しいノード テンプレートの名前。

  • NODE_TYPE: このテンプレートに基づいて作成された単一テナントノードのノードタイプ。gcloud compute sole-tenancy node-types list コマンドを使用して、各ゾーンで使用可能なノードタイプのリストを取得します。

  • AFFINITY_LABELS: アフィニティ ラベルの Key-Value([KEY=VALUE,...])。アフィニティ ラベルを使用すると、ノードとノードグループを論理的にグループ化できます。後で VM をプロビジョニングする際、VM にアフィニティ ラベルを指定して、特定のノードまたはノードグループのセットに VM をスケジュールできます。詳細については、ノード アフィニティとアンチアフィニティをご覧ください。

  • REGION: ノード テンプレートを作成するリージョン。指定したリージョンの任意のゾーンで、このノード テンプレートを使用してノードグループを作成できます。

出力は次のようになります。

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

単一テナントノード グループを作成する

ノードグループとは、同じ単一テナントノード テンプレートに基づく、特定のゾーンにある単一テナントノードのセットです。複数のゾーンで使用可能なリージョン クラスタとノードプールでは、各ゾーンに同じ名前のノードグループを作成する必要があります。

Console

単一テナントノード グループを作成するには、次の手順に従います。

  1. 単一テナントノードのページに移動します。

    [単一テナントノード] ページに移動

  2. [ノードグループを作成] をクリックします。

  3. ノード テンプレートの [名前] を指定します。

  4. ノード テンプレートを作成したリージョンを選択し、そのリージョンゾーンを選択します。

  5. ノード テンプレートを選択します。

  6. 必要に応じて、自動スケーリング モードを有効にします。

  7. グループに含めるノードの数を指定します。

  8. 必要に応じて、メンテナンス ポリシーを変更します。

  9. [作成] をクリックして、ノードグループを作成します。

gcloud

テンプレートからノードグループを作成します。

gcloud compute sole-tenancy node-groups create group-name --zone compute-zone \
  --node-template template-name --target-size target-size

以下を置き換えます。

  • group-name: 新しいノードグループに付ける名前。
  • compute-zone: このノードグループが存在するゾーン。このゾーンは、使用しているノード テンプレートと同じリージョンに存在する必要があります。
  • template-name: 使用しているノード テンプレートの名前。
  • target-size: グループに作成するノードの数。

出力は次のようになります。

Created [https://www.googleapis.com/compute/beta/projects/my-project/zones/us-central1-a/nodeGroups/group-name].

GKE 単一テナントノード プールを作成する

Compute Engine で単一テナントノード グループが作成されたので、単一テナントノード プールを作成できます。

すでに GKE クラスタがある場合は、そのクラスタに単一テナントノードを追加できます。GKE クラスタがサポートされていない場合は、[gcloud container clusters create](/sdk/gcloud/reference/continaer/clusters/create)を使用してクラスタを作成します。

リージョン クラスタを使用している場合、または複数のゾーンでノードプールが使用可能な場合は、各ゾーンに同じ名前のノードグループを作成する必要があります。各ゾーンで名前を再利用できない場合は、ゾーンごとに個別のノードプールを作成します。

  1. 指定したノードグループで、新しいノードプールを作成します。

    ゾーンのノードプールの場合:

     gcloud container node-pools create node-pool-name \
       --node-group group-name --cluster cluster-name \
       --zone compute-zone --machine-type=node-group-machine-type \
       --node-locations=node-group-zone
    

    リージョンのノードプールの場合:

      gcloud container node-pools create node-pool-name \
        --node-group group-name --cluster cluster-name \
        --region compute-region --machine-type=node-group-machine-type \
        --node-locations=node-group-zone,[node-group-zone,…]
    

    以下を置き換えます。

    • node-pool-name: 新しいノードプールの名前。
    • group-name: 使用する既存の単一テナントノード グループの名前。
    • cluster-name: ノードプールを作成するクラスタの名前。
    • compute-zone: クラスタと同じゾーン。
    • compute-region: クラスタと同じリージョン。
    • machine-type: ノードプールのマシンタイプ。
    • node-group-zone: 単一テナンシー ノード グループのゾーン。

  2. ノードプールが作成されたことを確認します。

      kubectl get nodes
    

作成したノードプールに、Ready 状態のノードのリストが表示されます。単一テナントノードは、[単一テナントノード] ページでも確認できます。

クリーンアップ

上記の例で作成したリソースを削除するには、次の手順を実行します。

  1. 単一テナントノード プールを削除します。

    gcloud  container node-pools delete node-pool-name
    
  2. 単一テナントノード グループを削除します。

    gcloud beta compute sole-tenant node-groups delete group-name --zone compute-zone
    
  3. 単一テナントノード テンプレートを削除します。

    gcloud beta compute sole-tenancy node-templates delete template-name \
        --region compute-region
    

次のステップ