Arm ノードを使用して Standard クラスタとノードプールを作成する


このページでは、Arm ノードを含む GKE Standard クラスタまたはノードプールを作成し、Google Kubernetes Engine(GKE)で Arm ワークロードを実行できるようにする方法について説明します。Autopilot クラスタに Arm ワークロードをデプロイする方法については、Arm アーキテクチャに Autopilot ワークロードをデプロイするをご覧ください。

C4A マシンシリーズまたは Tau T2A マシンシリーズを使用して、Arm ノードを含むクラスタを作成できます。Arm の利点とワークロードに最適なマシンシリーズの選択については、Compute での Arm VM をご覧ください。

GKE では、1 つのアーキテクチャ タイプ(Arm など)または複数のアーキテクチャ タイプ(Arm と x86 など)を含むノードプールを持つクラスタを作成できます。複数のアーキテクチャ タイプを持つノードを実行する場合は、アーキテクチャ間でワークロードを同じクラスタにデプロイできます。

GKE クラスタで Arm ノードを使用する方法については、GKE での Arm ワークロードをご覧ください。

準備

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

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。

GKE の IAM サービス アカウントを設定する

GKE は、ノードに接続されている IAM サービス アカウントを使用して、ロギングやモニタリングなどのシステムタスクを実行します。少なくとも、これらのノード サービス アカウントには、プロジェクトに対する Kubernetes Engine デフォルト ノード サービス アカウントroles/container.defaultNodeServiceAccount)ロールが必要です。デフォルトでは、GKE はプロジェクトで自動的に作成される Compute Engine のデフォルトのサービス アカウントをノード サービス アカウントとして使用します。

Compute Engine のデフォルト サービス アカウントに roles/container.defaultNodeServiceAccount ロールを付与する手順は次のとおりです。

console

  1. [ようこそ] ページに移動します。

    [ようこそ] に移動

  2. [プロジェクト番号] フィールドで、 [クリップボードにコピー] をクリックします。
  3. [IAM] ページに移動します。

    [IAM] に移動

  4. [ アクセスを許可] をクリックします。
  5. [新しいプリンシパル] フィールドに次の値を指定します。
    PROJECT_NUMBER-compute@developer.gserviceaccount.com
    PROJECT_NUMBER は、コピーしたプロジェクト番号に置き換えます。
  6. [ロールを選択] メニューで、[Kubernetes Engine のデフォルト ノード サービス アカウント] ロールを選択します。
  7. [保存] をクリックします。

gcloud

  1. Google Cloud プロジェクト番号を確認します。
    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"

    PROJECT_ID を実際のプロジェクト ID に置き換えます。

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

    12345678901
    
  2. Compute Engine のデフォルト サービス アカウントに roles/container.defaultNodeServiceAccount ロールを付与します。
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
        --role="roles/container.defaultNodeServiceAccount"

    PROJECT_NUMBER は、前の手順で取得したプロジェクト番号に置き換えます。

Arm ノードプールを使用してクラスタを作成する

次の手順では、C4A マシンシリーズまたは Tau T2A マシンシリーズから Arm ノードを実行するノードプールを含む新しいクラスタを作成する方法について説明します。

gcloud CLI、Google Cloud コンソール、または Terraform を使用してクラスタを作成できます。

gcloud

Arm ノードを使用して、デフォルトのノードプールがある新しいゾーンクラスタを作成します。

gcloud container clusters create CLUSTER_NAME \
    --zone ZONE  \
    --node-locations NODE_LOCATIONS \
    --machine-type ARM_MACHINE_TYPE \
    --num-nodes NUM_NODES

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

  • CLUSTER_NAME: Arm ノードプールがある新しいクラスタの名前。
  • ZONE: クラスタのゾーン(us-central1-a など)。このゾーンは、選択した Arm マシンシリーズの使用可能なゾーンのいずれかである必要があります。リージョン クラスタを作成するには、--region=REGION フラグを使用します。リージョンは、選択した Arm マシンシリーズの使用可能なリージョンのいずれかである必要があります。
  • NODE_LOCATIONS: ノードプールのゾーン(us-central1-a など)。Arm マシンシリーズの使用可能なゾーンから選択する必要があります。このように選択しないと、ノードプールの作成が失敗する場合があります。
  • ARM_MACHINE_TYPE: 使用可能な C4A マシンシェイプまたは T2A マシンシェイプのいずれか(c4a-standard-8t2a-standard-16 など)。
  • NUM_NODES: Arm ノードプールのノード数。

Compute Engine のデフォルトのサービス アカウントの代わりに、ノードで使用できる最小権限の IAM サービス アカウントを指定することを強くおすすめします。最小権限のサービス アカウントを作成する方法については、最小権限のサービス アカウントを使用するをご覧ください。

gcloud CLI でカスタム サービス アカウントを指定するには、コマンドに次のフラグを追加します。

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

SERVICE_ACCOUNT_NAME は、最小権限のサービス アカウントの名前に置き換えます。

クラスタに追加設定を行う場合は、gcloud container clusters create リファレンスを参照して、クラスタ作成時に利用可能な設定の完全なリストをご覧ください。

Console

  1. Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。

    Google Kubernetes Engine に移動

  2. [ 作成] をクリックします。

  3. クラスタを構成します。詳細については、ゾーンクラスタを作成するまたはリージョン クラスタの作成の手順をご覧ください。

  4. Arm ノードを使用できるロケーションを選択します。

    1. [クラスタの基本] セクションの [ロケーション タイプ] で、[ゾーン] または [リージョン] を選択します。
    2. プルダウン メニューで、Arm ノードを使用できるゾーンまたはリージョンを選択します。
    3. [デフォルトのノードのロケーションを指定する] チェックボックスをオンにします。Arm ノードを使用できるゾーンを選択します。
  5. Arm マシンタイプを選択するには、[ノード] サブセクションの [ノード設定の構成 > マシン構成 > マシン ファミリー] で [汎用] を選択します。[シリーズ] プルダウン メニューで、C4A または T2A を選択します。[マシンタイプ] プルダウン メニューで、使用可能なオプションのいずれかを選択します。

  6. 必要に応じて、ノードにカスタム IAM サービス アカウントを指定します。
    1. [詳細設定] ページで、[セキュリティ] セクションを開きます。
    2. [サービス アカウント] メニューで、目的のサービス アカウントを選択します。

    Compute Engine のデフォルトのサービス アカウントの代わりに、ノードで使用できる最小権限の IAM サービス アカウントを指定することを強くおすすめします。最小権限のサービス アカウントを作成する方法については、最小権限のサービス アカウントを使用するをご覧ください。

  7. [作成] をクリックします。

Terraform

Terraform を使用して Arm ノードを使用するデフォルト ノードプールを持つゾーンクラスタを作成するには、次の例をご覧ください。

resource "google_container_cluster" "default" {
  name               = "gke-standard-zonal-arm-cluster"
  location           = "us-central1-a"
  node_locations     = ["us-central1-b", "us-central1-f"]
  initial_node_count = 2

  node_config {
    machine_type    = "t2a-standard-1"
    service_account = google_service_account.default.email
  }

  # Set `deletion_protection` to `true` will ensure that one cannot
  # accidentally delete this instance by use of Terraform.
  deletion_protection = false
}

Terraform の使用方法の詳細については、GKE での Terraform のサポートをご覧ください。

GKE クラスタに Arm ノードプールを追加する

新しいノードプールを GKE Standard クラスタに追加するには、gcloud CLI、Google Cloud コンソール、または Terraform を使用します。

任意のタイプのノードを使用する GKE クラスタを作成するためのベスト プラクティスとして、Compute Engine のデフォルトのサービス アカウントではなく、使用するノードプール用に最小権限の Identity and Access Management(IAM)サービス アカウントを作成して使用することをおすすめします。最小権限のサービス アカウントを作成する手順については、クラスタのセキュリティの強化をご覧ください。

gcloud

Arm ノードプールを既存のクラスタに追加します。

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone ZONE \
    --node-locations NODE_LOCATIONS \
    --machine-type ARM_MACHINE_TYPE \
    --num-nodes NUM_NODES \
    --service-account SERVICE_ACCOUNT

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

  • NODE_POOL_NAME: 既存のクラスタの新しい Arm ノードプールの名前。
  • ZONE: 既存のクラスタのゾーン。リージョン クラスタの場合は、クラスタのリージョンを指定した --region=REGION フラグを使用します。
  • CLUSTER_NAME: Arm ノードプールを追加するクラスタの名前。
  • NODE_LOCATIONS: ノードプールのゾーン(us-central1-a など)。Arm マシンシリーズの使用可能なゾーンから選択する必要があります。このように選択しないと、ノードプールの作成が失敗する場合があります。
  • ARM_MACHINE_TYPE: 使用可能な C4A マシンシェイプまたは T2A マシンシェイプのいずれか(c4a-standard-8t2a-standard-16 など)。
  • NUM_NODES: Arm ノードプールのノード数。

Compute Engine のデフォルトのサービス アカウントの代わりに、ノードで使用できる最小権限の IAM サービス アカウントを指定することを強くおすすめします。最小権限のサービス アカウントを作成する方法については、最小権限のサービス アカウントを使用するをご覧ください。

gcloud CLI でカスタム サービス アカウントを指定するには、コマンドに次のフラグを追加します。

--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

SERVICE_ACCOUNT_NAME は、最小権限のサービス アカウントの名前に置き換えます。

ノードプールに追加設定を行う場合は、gcloud container node-pools create リファレンスでノードプールの作成時に使用可能な設定の完全なリストをご覧ください。

Console

Arm ノードプールを既存のクラスタに追加するには、次の手順を実行します。

  1. Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。

    Google Kubernetes Engine に移動

  2. クラスタのリストで、変更するクラスタの名前をクリックします。

  3. [ ノードプールを追加] をクリックします。

  4. ノードプールを構成します。

  5. Arm ノードを使用できるノードのロケーションを選択します。

    1. [ノードプールの詳細] セクションで、[ノード ロケーションを指定する] チェックボックスをオンにします。
    2. Arm ノードを使用できるゾーンを選択します。
  6. Arm マシンタイプを選択するには、[ノード] サブセクションの [ノード設定の構成 > マシン構成 > マシン ファミリー] で [汎用] を選択します。[シリーズ] プルダウン メニューで、C4A または T2A を選択します。[マシンタイプ] プルダウン メニューで、使用可能なオプションのいずれかを選択します。

  7. ナビゲーション メニューで [セキュリティ] をクリックします。

  8. 必要に応じて、ノードにカスタム IAM サービス アカウントを指定します。
    1. [詳細設定] ページで、[セキュリティ] セクションを開きます。
    2. [サービス アカウント] メニューで、目的のサービス アカウントを選択します。

    Compute Engine のデフォルトのサービス アカウントの代わりに、ノードで使用できる最小権限の IAM サービス アカウントを指定することを強くおすすめします。最小権限のサービス アカウントを作成する方法については、最小権限のサービス アカウントを使用するをご覧ください。

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

Terraform

Terraform を使用して Arm ノードを使用するノードプールを既存のクラスタに追加するには、次の例をご覧ください。

resource "google_container_node_pool" "default" {
  name           = "gke-standard-zonal-arm-node-pool"
  cluster        = google_container_cluster.default.id
  node_locations = ["us-central1-a"]
  node_count     = 1

  node_config {
    machine_type = "t2a-standard-1"

    service_account = google_service_account.default.email
  }
}

google_container_cluster.default.id は、使用するクラスタの名前に置き換えます。

Terraform の使用方法の詳細については、GKE での Terraform のサポートをご覧ください。

次のステップ