リージョン クラスタの作成


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

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

概要

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

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

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

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

始める前に

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

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

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

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

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 のうち少なくとも 1 つのフラグが指定されていない限り、デフォルトではクラスタは regular リリース チャネルに登録されます。
  • VERSION: クラスタに指定するバージョン

次のコマンドでは、必要に応じて --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com フラグを使用して、Compute Engine のデフォルト サービス アカウントの代わりに、クラスタの最初のノードプール内のノードが使用する別の IAM サービス アカウントを指定できます。このフラグは省略可能ですが、ノードに必要以上の権限が付与されないように、最小限の権限を持つサービス アカウントを作成することを強くおすすめします。

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

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

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

コンソール

  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. 省略可: [サービス アカウント] プルダウン リストから、Google Cloud APIs を呼び出すときにアプリケーションが使用する Identity and Access Management(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 フラグを使用して、ノードが複製されるデフォルト ゾーンをオーバーライドできます。

次のコマンドでは、必要に応じて --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com フラグを使用して、Compute Engine のデフォルト サービス アカウントの代わりに、クラスタの最初のノードプール内のノードが使用する別の IAM サービス アカウントを指定できます。このフラグは省略可能ですが、ノードに必要以上の権限が付与されないように、最小限の権限を持つサービス アカウントを作成して使用することを強くおすすめします。

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

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

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

コンソール

  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. 省略可: [サービス アカウント] プルダウン リストから、Google Cloud APIs を呼び出すときにアプリケーションが使用する Identity and Access Management(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 を構成する必要があります。

次のステップ