ゾーンクラスタの作成


このページでは、Google Kubernetes Engine(GKE)のデフォルトの機能を使用して Standard ゾーンクラスタを作成する方法について説明します。ゾーンクラスタには、1 つのゾーン内に 1 つのコントロール プレーン インスタンスが含まれています。可用性の要件に応じて、ゾーンクラスタのノードを単一のゾーンに分散するか、複数のゾーンに分散するかを選択できます。

ベスト プラクティス: 本番環境ワークロードを実行するにはリージョン クラスタを使用します。リージョン クラスタの方がゾーンクラスタと比較して可用性に優れているためです。リージョン クラスタでは、コントロール プレーンがリージョン内の複数のゾーンに複製されます。

クラスタを作成した後は、それをゾーンクラスタからリージョン クラスタに、またはリージョン クラスタからゾーンクラスタに変更することはできません。クラスタの可用性のタイプについては、クラスタの可用性をご覧ください。

このページは、クラスタの作成と構成、GKE へのワークロードのデプロイが必要なオペレーター、Cloud Architect、デベロッパーを対象としています。 Google Cloudのコンテンツで参照する一般的なロールとタスク例の詳細については、一般的な GKE Enterprise ユーザー ロールとタスクをご覧ください。

このページを読む前に、クラスタ構成の選択肢について理解しておいてください。

始める前に

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

  • 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 ロールを付与する手順は次のとおりです。

コンソール

  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 container clusters create と Terraform google_container_cluster リファレンス ガイドをご覧ください。

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

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

gcloud

gcloud CLI でゾーンクラスタを作成するには、次のいずれかのコマンドを使用します。

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

  • CLUSTER_NAME: 新しいクラスタの名前。
  • CHANNEL: リリース チャネルのタイプ。rapidregularstableNone のいずれかに指定できます。--cluster-version--release-channel--no-enable-autoupgrade--no-enable-autorepair のうち少なくとも 1 つのフラグが指定されていない限り、デフォルトではクラスタは regular リリース チャネルに登録されます。
  • CONTROL_PLANE_LOCATION: クラスタのコントロール プレーンの Compute Engine のゾーン
  • VERSION: クラスタに指定するバージョン
  • COMPUTE_ZONE,COMPUTE_ZONE1,[...]: ノードが作成されるゾーン。クラスタに必要な数だけゾーンを指定できます。すべてのゾーンは、--location フラグで指定された、クラスタのコントロール プレーンと同じリージョンに存在する必要があります。ゾーンクラスタの場合、--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 \
    --release-channel CHANNEL \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

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

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

gcloud container clusters create CLUSTER_NAME \
    --cluster-version VERSION \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

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

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

gcloud container clusters create CLUSTER_NAME \
    --release-channel None \
    --location CONTROL_PLANE_LOCATION \
    --node-locations COMPUTE_ZONE,COMPUTE_ZONE1

次のコマンドは、example-cluster という名前のマルチゾーン クラスタを作成します。ここでは、クラスタ コントロール プレーンは us-central-a ゾーンにあり、3 つのノードのロケーションがあります。クラスタは、regular リリース チャンネルに登録されます。

--num-nodes フラグを省略した場合、クラスタがデフォルトでゾーンごとに作成するノードの数は 3 つです。ゾーンが 3 つ指定されているため、このコマンドは us-central1-aus-central1-bus-central1-c のそれぞれにノードが 3 つずつ含まれる、9 ノードのクラスタを作成します。

gcloud container clusters create example-cluster \
    --location us-central1-a \
    --node-locations us-central1-a,us-central1-b,us-central1-c

コンソール

Google Cloud コンソールでゾーンクラスタを作成するには、次のタスクを実行します。

  1. Google Cloud コンソールで、[Kubernetes クラスタを作成する] ページに移動します。

    [Kubernetes クラスタの作成] に移動

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

    1. クラスタの名前を [名前] に入力します。
    2. [ロケーション タイプ] には [ゾーン] を選択し、クラスタに使用するゾーンを選択します。
    3. マルチゾーン クラスタを作成する場合は、[デフォルトのノードのロケーションを指定する] チェックボックスをオンにして、ノードプールを実行する追加のゾーンを選択します。

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

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

  3. 省略可: 新しいクラスタの他の設定を構成します。

  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-zonal-single-zone"
  location           = "us-central1-a"
  initial_node_count = 1
}

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

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

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

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

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

クラスタ テンプレート

GKE では以前、クラスタのテンプレートをサポートしていました。これらのテンプレートは Google Cloud コンソールからは削除されましたが、現在も次のリンクからアクセスできます。

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオで GKE のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

GKE の無料トライアル