リージョン クラスタを作成する


このドキュメントでは、Standard リージョン クラスタを作成することにより、クラスタのアップグレード、自動メンテナンス、ゾーン停止の間の、クラスタのコントロール プレーンとワークロードの可用性を高める方法について説明します。

GKE Autopilot クラスタは常にリージョン クラスタです。

概要

ゾーンクラスタではなくリージョン クラスタを作成すると、クラスタのコントロール プレーンは特定のリージョン内の複数のゾーンにわたって複製されます。リージョン クラスタ内のノードプールの場合は、ノードプールを実行するゾーンを手動で指定することも、デフォルト構成を使用して各ノードプールをコントロール プレーンのリージョンの 3 つのゾーンにわたって複製することもできます。すべてのゾーンは、クラスタのコントロール プレーンと同じリージョン内に存在する必要があります。

リージョン クラスタは複数のゾーンにわたってリソースを複製し、追加の割り当てを消費します。

クラスタの可用性のタイプについては、クラスタ構成の選択についてをご覧ください。

以降のセクションでは、次の方法について説明します。

リージョン クラスタを作成した後は、そのクラスタをゾーンクラスタに変換することはできません。

新しいリージョン クラスタを作成するときに指定する必要がある最小情報は、名前、プロジェクト(通常は現在のプロジェクト)、リージョン(通常はコマンドライン ツールのデフォルトのロケーション)です。他のすべての値にはデフォルト設定を使用します。ただし、構成設定には他にも多くのオプションがあります。このガイドではその一部のみを説明します。また、クラスタの作成後に変更できない設定もあります。クラスタの作成後に変更できない設定を理解し、クラスタを再度作成する必要がないように、クラスタの作成時に適切な設定を選択してください。

クラスタ構成オプションの概要については、クラスタ構成の選択についてをご覧ください。使用可能なオプションの一覧については、gcloud container clusters create と Terraform google_container_cluster リファレンス ガイドをご覧ください。

始める前に

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

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。
  • クラスタを作成するための適切な権限があることを確認します。少なくとも、Kubernetes Engine Cluster 管理者である必要があります。
  • 新しいクラスタをフリートに登録する場合は、必要な API と権限があることを確認してください。

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 は、前の手順で取得したプロジェクト番号に置き換えます。

シングルゾーンのノードプールを持つリージョン クラスタを作成する

次の手順では、リージョン内の単一のゾーンで動作するノードプールを持つリージョン クラスタを作成する方法を説明します。クラスタのコントロール プレーンは、指定されたリージョンの複数のゾーンにわたって複製されますが、ノードは単一のゾーンに配置され、他のゾーンには複製されません。

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

Cloud Code for VS Code を使用して GKE アプリケーションを開発している場合は、Cloud Code でクラスタを作成してみてください。

gcloud

gcloud CLI でリージョン クラスタを作成するには、以下のいずれかのコマンドを使用します。変数は次のように置き換えます。

  • CLUSTER_NAME: 新しいリージョン クラスタの名前。
  • COMPUTE_REGION: クラスタのリージョンus-central1 など)。
  • COMPUTE_ZONE: ノードプールのゾーンus-central1-a など)。このゾーンは、クラスタ コントロール プレーンと同じリージョンに存在する必要があります。
  • CHANNEL: リリース チャネルのタイプ。rapidregularstableNone のいずれかに指定できます。少なくとも --cluster-version--release-channel--no-enable-autoupgrade、および --no-enable-autorepair のいずれかのフラグが指定されていない限り、デフォルトではクラスタは、デフォルトで regular リリース チャネルに登録されます。
  • VERSION: クラスタに指定するバージョン

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

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

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

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

特定のリリース チャネルを使用する場合:

特定のリリース チャネルを使用して新しいクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create CLUSTER_NAME \
    --region COMPUTE_REGION \
    --node-locations COMPUTE_ZONE \
    --release-channel CHANNEL

特定のバージョンを使用する場合:

特定のクラスタ バージョンを使用して新しいクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create CLUSTER_NAME \
    --region COMPUTE_REGION \
    --node-locations COMPUTE_ZONE \
    --cluster-version VERSION

リリース チャンネルに登録されていないクラスタにデフォルト バージョンを使用する場合:

リリース チャンネルに登録されていないクラスタのデフォルト バージョンを使用して新しいクラスタを作成する場合、クラスタ バージョンを指定する必要はありませんが、リリース チャンネルを None に設定する必要があります。

gcloud container clusters create CLUSTER_NAME \
    --region COMPUTE_REGION \
    --node-locations COMPUTE_ZONE \
    --release-channel None

次のコマンドは、us-west1-c ゾーンに 3 つのノード(デフォルト)を持つ、regular リリース チャンネル(デフォルト)に登録されたリージョン クラスタを作成します。

gcloud container clusters create my-regional-cluster \
    --region us-west1 \
    --node-locations us-west1-c

次のコマンドは、us-west1-c ゾーンに 2 つのノード(デフォルト)を持つ、regular リリース チャンネル(デフォルト)に登録されたリージョン クラスタを作成します。

gcloud container clusters create my-regional-cluster \
    --region us-west1 \
    --node-locations us-west1-c \
    --num-nodes 2

Console

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

    Google Kubernetes Engine に移動

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

  3. [クラスタの基本] セクションで、次の操作を行います。

    1. クラスタの名前を [名前] に入力します。
    2. [ロケーション タイプ] で [リージョン] を選択し、クラスタに使用する目的のリージョンを選択します。
    3. デフォルトのノードのロケーションをオーバーライドするには(たとえば、シングルゾーンで実行する場合)、[デフォルトのノードのロケーションを指定する] チェックボックスをオンにして、ノードプールを実行するゾーンを選択します。

    4. リリース チャンネルを選択します。必要に応じて、プルダウン リストから [チャンネルなし] を選択できます。ただし、このオプションを選択する前に、リリース チャンネルに登録されているクラスタと登録されていないクラスタの比較を確認することをおすすめします。GKE は、リリース チャンネルにないクラスタを、Stable チャンネルのバージョンで自動的にアップグレードします。

    5. 省略可: [バージョン] プルダウン リストからコントロール プレーンのバージョンを指定します。

  4. 省略可(GKE Enterprise で利用可能): 新しいクラスタをフリートに登録する場合は、[フリート登録] セクションに移動し、Google Cloud コンソールで新しいクラスタを作成して登録するの手順に沿ってクラスタの登録を完了します。

  5. ナビゲーション ペインの [ノードプール] で [default-pool] をクリックします。

  6. [ノードプールの詳細] セクションで、次の操作を行います。

    1. [名前] に、デフォルトのノードプールの名前を入力します。
    2. 省略可: ノードのバージョンを選択します。
    3. [ノード数] に、クラスタ内に作成するノードの数を入力します。ノードとそのリソース(ファイアウォール ルートなど)に使用できるリソース割り当てが必要です。
    4. 省略可: ノードの自動アップグレードを無効にすることもできますが、このオプションを選択する前に、ノードの自動アップグレードを無効にする際の考慮事項を確認することをおすすめします。
  7. ナビゲーション パネルで、[ノードプール] の下の [ノード] をクリックします。

  8. [イメージの種類] プルダウン リストから、ノードイメージを選択します。

  9. インスタンスに使用するデフォルトのマシンの構成を選択します。マシンタイプごとに課金方法は異なります。デフォルトのマシンタイプは e2-medium です。マシンタイプごとの料金については、マシンタイプの料金表をご覧ください。

  10. [ブートディスクの種類] プルダウン リストから、ディスクの種類を選択します。

  11. [ブートディスクのサイズ] を入力します。

  12. 省略可: ナビゲーション パネルで、[ノードプール] の下の [セキュリティ] をクリックします。

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

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

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

Terraform

Terraform を使用してシングルゾーンのノードプールを持つリージョン クラスタを作成するには、次の例をご覧ください。

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-single-zone"
  location           = "us-west1"
  node_locations     = ["us-west1-c"]
  initial_node_count = 2

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

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

kubectl を使用してクラスタを操作する

クラスタを作成した後、コマンドラインからクラスタとやり取りするには、その前に kubectl を構成する必要があります。

マルチゾーンのノードプールを持つリージョン クラスタを作成する

次の手順では、マルチゾーンのノードプール(デフォルトの設定)を持つリージョン クラスタを作成する方法を説明します。クラスタのコントロール プレーンとノードは、指定されたリージョン内の複数のゾーンにわたって複製されます。

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

Visual Studio Code を使用して GKE アプリケーションを開発している場合は、Cloud Code でクラスタを作成してみてください。

gcloud

gcloud CLI でリージョン クラスタを作成するには、以下のいずれかのコマンドを使用します。変数は次のように置き換えます。

  • CLUSTER_NAME: 新しいリージョン クラスタの名前。
  • COMPUTE_REGION: クラスタのリージョンus-central1 など)。
  • CHANNEL: リリース チャネルのタイプ。rapidregularstableNone のいずれかに指定できます。--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair の各フラグが指定されていない場合、クラスタは、デフォルトで regular リリース チャネルに登録されます。
  • VERSION: クラスタに指定するバージョン
  • ゾーンが 4 つ以上あるリージョンの場合や、ゾーンが少ないほうが好ましい場合は、オプションの --node-locations フラグを使用して、ノードが複製されるデフォルト ゾーンをオーバーライドできます。

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

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

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

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

特定のリリース チャネルを使用する場合:

特定のリリース チャネルを使用して新しいクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create CLUSTER_NAME \
    --region COMPUTE_REGION \
    --release-channel CHANNEL

特定のバージョンを使用する場合:

特定のクラスタ バージョンを使用して新しいクラスタを作成するには、次のコマンドを実行します。

gcloud container clusters create CLUSTER_NAME \
    --region COMPUTE_REGION \
    --cluster-version VERSION

リリース チャンネルに登録されていないクラスタにデフォルト バージョンを使用する場合:

リリース チャンネルに登録されていないクラスタのデフォルト バージョンを使用して新しいクラスタを作成する場合、クラスタ バージョンを指定する必要はありませんが、リリース チャンネルを None に設定する必要があります。

gcloud container clusters create CLUSTER_NAME \
    --region COMPUTE_REGION \
    --release-channel None

次のコマンドは、us-west1に 9 つのノードを持つ regular リリース チャネルに登録されたリージョン クラスタを作成します(デフォルトで 3 つのゾーンにそれぞれ 3 つのノードを持ちます)。

gcloud container clusters create my-regional-cluster --region us-west1

次のコマンドは、6 つのノードを持つ regular リリース チャネルに登録されたリージョン クラスタを作成します(2 つのノードを持つゾーンが 3 つ、--num-nodes で指定されます)。

gcloud container clusters create my-regional-cluster \
    --region us-west1 \
    --num-nodes 2

次のコマンドでは、2 つのゾーンに 6 つのノードを持つ regular リリース チャネルに登録されたリージョン クラスタが作成されます(3 つのノードを持つゾーンが 2 つ、--node-locations で指定されます)。

gcloud container clusters create my-regional-cluster \
    --region us-central1 \
    --node-locations us-central1-b,us-central1-c

Console

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

    Google Kubernetes Engine に移動

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

  3. [クラスタの基本] セクションで、次の操作を行います。

    1. クラスタの名前を [名前] に入力します。
    2. [ロケーション タイプ] で [リージョン] を選択し、クラスタに使用する目的のリージョンを選択します。
    3. デフォルトのノードのロケーションをオーバーライドするには(たとえば、シングルゾーンで実行する場合)、[デフォルトのノードのロケーションを指定する] チェックボックスをオンにして、ノードプールを実行するゾーンを選択します。

    4. リリース チャンネルを選択します。必要に応じて、プルダウン リストから [チャンネルなし] を選択できます。ただし、このオプションを選択する前に、リリース チャンネルに登録されているクラスタと登録されていないクラスタの比較を確認することをおすすめします。GKE は、リリース チャンネルにないクラスタを、Stable チャンネルのバージョンで自動的にアップグレードします。

    5. 省略可: [バージョン] プルダウン リストからコントロール プレーンのバージョンを指定します。

  4. 省略可(GKE Enterprise で利用可能): 新しいクラスタをフリートに登録する場合は、[フリート登録] セクションに移動し、Google Cloud コンソールで新しいクラスタを作成して登録するの手順に沿ってクラスタの登録を完了します。

  5. ナビゲーション ペインの [ノードプール] で [default-pool] をクリックします。

  6. [ノードプールの詳細] セクションで、次の操作を行います。

    1. [名前] に、デフォルトのノードプールの名前を入力します。
    2. 省略可: ノードのバージョンを選択します。
    3. [ノード数] に、クラスタ内に作成するノードの数を入力します。ノードとそのリソース(ファイアウォール ルートなど)に使用できるリソース割り当てが必要です。
    4. 省略可: ノードの自動アップグレードを無効にすることもできますが、このオプションを選択する前に、ノードの自動アップグレードを無効にする際の考慮事項を確認することをおすすめします。
  7. ナビゲーション パネルで、[ノードプール] の下の [ノード] をクリックします。

  8. [イメージの種類] プルダウン リストから、ノードイメージを選択します。

  9. インスタンスに使用するデフォルトのマシンの構成を選択します。マシンタイプごとに課金方法は異なります。デフォルトのマシンタイプは e2-medium です。マシンタイプごとの料金については、マシンタイプの料金表をご覧ください。

  10. [ブートディスクの種類] プルダウン リストから、ディスクの種類を選択します。

  11. [ブートディスクのサイズ] を入力します。

  12. 省略可: ナビゲーション パネルで、[ノードプール] の下の [セキュリティ] をクリックします。

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

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

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

Terraform

Terraform を使用してマルチゾーン ノードプールを持つリージョン クラスタを作成するには、次の例を参照してください。

resource "google_container_cluster" "default" {
  name               = "gke-standard-regional-multi-zone"
  location           = "us-central1"
  node_locations     = ["us-central1-b", "us-central1-c"]
  initial_node_count = 2

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

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

kubectl を使用してクラスタを操作する

クラスタを作成した後、コマンドラインからクラスタとやり取りするには、その前に kubectl を構成する必要があります。

次のステップ