このページでは、Google Kubernetes Engine(GKE)で Compute Engine の単一テナントノードを使用する方法について説明します。
単一テナントノードは、特定のプロジェクトの VM を実行する専用の物理サーバーです。単一テナントノードを使用すると、VM を他のプロジェクトの VM から物理的に分離することや、同じホスト ハードウェア上に VM をグループ化することが可能です。
始める前に
作業を始める前に、次のことを確認してください。
- Google Kubernetes Engine API が有効になっていることを確認します。 Google Kubernetes Engine API の有効化
- Google Cloud CLI がインストールされていることを確認します。
- 次のいずれかの方法で、プロジェクトにデフォルトの Google Cloud CLI 設定をセットアップします。
- プロジェクトのデフォルトの設定全般を確認する場合は、
gcloud init
を使用します。 gcloud config
を使用して、プロジェクト ID、ゾーン、リージョンを個別に設定します。-
gcloud init
を実行して、次の操作を行います。gcloud init
リモート サーバーで SSH を使用している場合は、
--console-only
フラグを指定して、コマンドがブラウザを起動しないようにします。gcloud init --console-only
- Google Cloud アカウントを使用できるように、gcloud CLI の承認手順を行います。
- 新しい構成を作成するか、既存の構成を選択します。
- Google Cloud プロジェクトを選択します。
- デフォルトの Compute Engine ゾーンを選択します。
- デフォルトの Compute Engine リージョンを選択します。
- デフォルトのプロジェクト ID を設定します。
gcloud config set project PROJECT_ID
- デフォルトの Compute Engine リージョン(例:
us-central1
)を設定します。gcloud config set compute/region COMPUTE_REGION
- デフォルトの Compute Engine ゾーン(例:
us-central1-c
)を設定します。gcloud config set compute/zone COMPUTE_ZONE
gcloud
を最新バージョンに更新します。gcloud components update
gcloud init
gcloud config
デフォルトの場所を設定することで、gcloud CLI のエラー(One of [--zone, --region] must be supplied: Please specify location
など)を防止できます。
追加の割り当てをリクエストする
単一テナントノードは規模が大きく(例: 96 個の vCPU と 624 GB のメモリ)、デフォルトのプロジェクト割り当てでは過少なため処理できません。
単一テナントノードを作成するには、割り当てページで Compute Engine API CPU の割り当ての引き上げをリクエストする必要があります。引き上げのリクエストの詳細については、割り当てをご覧ください。
必要な CPU の数は、次の条件によって異なります。
- 現在の CPU 割り当て使用量。
- ノードグループのサイズ。
- ノード テンプレート。
単一テナントノードのコア数を確認し、少なくともその量の CPU 上限をリクエストします(好ましくは追加 CPU 10 個のヘッドルームと併せて)。
単一テナントノード テンプレートを作成する
単一テナントノード テンプレートは、ノードグループの作成時にすべてのノードでプロパティを定義し、適用するリージョン リソースです。詳細については、ノードタイプをご覧ください。
Console
Cloud Console の [単一テナントノード] ページに移動します。
[ノード テンプレートを作成] をクリックします。
ノード テンプレートの [名前] と [リージョン] を指定します。
ノードタイプを選択します。
必要に応じて、1 つ以上のノード アフィニティ ラベルを追加します。
[作成] をクリックして、テンプレートを作成します。
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=COMPUTE_REGION
次のように置き換えます。
TEMPLATE_NAME
: 新しいノード テンプレートの名前。NODE_TYPE
: このテンプレートに基づいて作成された単一テナントノードのノードタイプ。gcloud compute sole-tenancy node-types list
コマンドを使用して、各ゾーンで使用可能なノードタイプのリストを取得します。AFFINITY_LABELS
: アフィニティ ラベルの Key-Value([KEY=VALUE,...]
)。アフィニティ ラベルを使用すると、ノードとノードグループを論理的にグループ化できます。後で VM をプロビジョニングする際、VM にアフィニティ ラベルを指定して、特定のノードまたはノードグループのセットに VM をスケジュールできます。詳細については、ノード アフィニティとアンチアフィニティをご覧ください。COMPUTE_REGION
: ノード テンプレートを作成するリージョン。指定したリージョンの任意のゾーンで、このノード テンプレートを使用してノードグループを作成できます。
出力は次のようになります。
Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].
単一テナントノード グループを作成する
ノードグループは、同じ単一テナントノード テンプレートからの特定のゾーン内の単一テナントノードのセットです。複数のゾーンで使用できるリージョン クラスタとノードプールの場合は、各ゾーンで同じ名前のノードグループを作成する必要があります。
Console
単一テナントノード グループを作成するには、次の手順を行います。
Cloud Console の [単一テナントノード] ページに移動します。
[ノードグループを作成] をクリックします。
ノード テンプレートの [名前] を指定します。
ノード テンプレートを作成したリージョンを選択し、そのリージョンのゾーンを選択します。
ノード テンプレートを選択します。
必要に応じて、自動スケーリング モードを有効にします。
グループに含めるノードの数を指定します。
必要に応じて、メンテナンス ポリシーを変更します。
[作成] をクリックして、ノードグループを作成します。
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/projects/my-project/zones/us-central1-a/nodeGroups/group-name].
GKE 単一テナントノード プールを作成する
Compute Engine での単一テナントノード グループの作成が完了したため、単一テナントノード プールを作成できます。
すでに GKE クラスタを使用している場合は、そのクラスタに単一テナント ノードプールを追加できます。そうでない場合は、gcloud container clusters create
を使用したクラスタを作成します。
リージョン クラスタを使用している場合、または複数のゾーンでノードプールが使用可能な場合は、各ゾーンに同じ名前のノードグループを作成する必要があります。各ゾーンでその名前を再利用できない場合は、ゾーンごとに個別のノードプールを作成します。
指定したノードグループで、新しいノードプールを作成します。
ゾーンのノードプールの場合:
gcloud container node-pools create NODE_POOL_NAME \ --node-group GROUP_NAME --cluster CLUSTER_NAME \ --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \ --node-locations=COMPUTE_ZONE,COMPUTE_ZONE1
リージョンのノードプールの場合:
gcloud container node-pools create NODE_POOL_NAME \ --node-group GROUP_NAME --cluster CLUSTER_NAME \ --region COMPUTE_REGION --machine-type=MACHINE_TYPE \ --node-locations=COMPUTE_ZONE,COMPUTE_ZONE1
次のように置き換えます。
NODE_POOL_NAME
: 新しいノードプールの名前。GROUP_NAME
: 使用する既存の単一テナントノード グループの名前。CLUSTER_NAME
: ノードプールを作成するクラスタの名前。COMPUTE_REGION
: クラスタと同じリージョン。MACHINE_TYPE
: ノードプールのマシンタイプ。COMPUTE_ZONE
、COMPUTE_ZONE1,[...]
: 単一テナントノード グループのゾーン。
ノードプールが作成されたことを確認します。
kubectl get nodes
作成したノードプール内の Ready
状態にあるノードのリストが表示されます。単一テナントノードは、[単一テナントノード] ページでも確認できます。
クリーンアップ
上記の例で作成したリソースを削除するには、次の手順を行います。
単一テナントノード プールを削除します。
gcloud container node-pools delete NODE_POOL_NAME
単一テナントノード グループを削除します。
gcloud compute sole-tenancy node-groups delete GROUP_NAME \ --zone COMPUTE_ZONE
単一テナントノード テンプレートを削除します。
gcloud compute sole-tenancy node-templates delete TEMPLATE_NAME \ --region COMPUTE_REGION