gcloud container は Google Kubernetes Engine(GKE)のクラスタやノードプールを管理するコマンドです。クラスタの作成から kubectl の認証設定まで行えます。
前提
1 2
| gcloud services enable container.googleapis.com
|
基本コマンド
| コマンド |
用途 |
gcloud container clusters create |
クラスタを作成 |
gcloud container clusters list |
クラスタの一覧を表示 |
gcloud container clusters describe |
クラスタの詳細を表示 |
gcloud container clusters delete |
クラスタを削除 |
gcloud container clusters get-credentials |
kubectl の認証情報を取得 |
gcloud container clusters resize |
ノード数を変更 |
gcloud container node-pools create |
ノードプールを追加 |
gcloud container node-pools list |
ノードプールの一覧を表示 |
クラスタの作成
Autopilot モード(推奨)
Google がノードを自動管理します。インフラ管理の手間を減らしたい場合に推奨です。
1 2 3 4 5 6 7 8
| gcloud container clusters create-auto my-cluster \ --region=asia-northeast1
gcloud container clusters create-auto my-cluster \ --region=asia-northeast1 \ --release-channel=regular
|
Standard モード
ノードの構成を細かく制御したい場合に使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| gcloud container clusters create my-cluster \ --region=asia-northeast1 \ --num-nodes=1 \ --machine-type=e2-medium \ --disk-size=50 \ --enable-autoscaling \ --min-nodes=1 \ --max-nodes=5
gcloud container clusters create my-cluster \ --region=asia-northeast1 \ --num-nodes=1 \ --enable-private-nodes \ --master-ipv4-cidr=172.16.0.0/28 \ --enable-ip-alias
|
リリースチャンネル
| チャンネル |
説明 |
rapid |
最新機能をいち早く利用 |
regular |
安定性と新機能のバランス(デフォルト) |
stable |
最も安定したバージョン |
作成オプション
| オプション |
説明 |
--region=REGION |
リージョナルクラスタ(マルチゾーンで高可用性) |
--zone=ZONE |
ゾーンクラスタ(単一ゾーン) |
--num-nodes=N |
ゾーンあたりのノード数 |
--machine-type=TYPE |
ノードのマシンタイプ(例: e2-medium) |
--disk-size=GB |
ノードのディスクサイズ |
--enable-autoscaling |
ノードオートスケーリングを有効化 |
--min-nodes=N / --max-nodes=N |
オートスケーリングの範囲 |
--release-channel=CH |
リリースチャンネル |
--network=NETWORK |
VPC ネットワーク |
--subnetwork=SUBNET |
サブネットワーク |
--enable-private-nodes |
ノードに外部 IP を付けない |
--workload-pool=POOL |
Workload Identity を有効化 |
kubectl の接続設定
1 2 3 4 5 6 7
| gcloud container clusters get-credentials my-cluster \ --region=asia-northeast1
kubectl cluster-info kubectl get nodes
|
get-credentials は ~/.kube/config にクラスタのエントリを追加します。
gcloud container clusters get-credentials リファレンス
クラスタ管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| gcloud container clusters list
gcloud container clusters describe my-cluster --region=asia-northeast1
gcloud container clusters update my-cluster \ --region=asia-northeast1 \ --maintenance-window-start=2025-01-01T03:00:00Z \ --maintenance-window-end=2025-01-01T07:00:00Z \ --maintenance-window-recurrence="FREQ=WEEKLY;BYDAY=SA,SU"
gcloud container clusters delete my-cluster --region=asia-northeast1
|
ノードプール
ノードプールを追加して、ワークロードごとに異なるマシンタイプを使えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| gcloud container node-pools create high-memory-pool \ --cluster=my-cluster \ --region=asia-northeast1 \ --machine-type=e2-highmem-4 \ --num-nodes=1 \ --enable-autoscaling \ --min-nodes=0 \ --max-nodes=3
gcloud container node-pools list \ --cluster=my-cluster \ --region=asia-northeast1
gcloud container clusters resize my-cluster \ --region=asia-northeast1 \ --node-pool=default-pool \ --num-nodes=3
gcloud container node-pools delete high-memory-pool \ --cluster=my-cluster \ --region=asia-northeast1
|
Workload Identity
Pod がサービスアカウントキーなしで Google Cloud API にアクセスできます。GKE での認証の推奨方法です。
1 2 3 4 5 6 7 8 9 10
| gcloud container clusters create-auto my-cluster \ --region=asia-northeast1 \ --workload-pool=PROJECT_ID.svc.id.goog
gcloud iam service-accounts add-iam-policy-binding \ my-gsa@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE/KSA_NAME]"
|
Workload Identity(公式)
Artifact Registry との連携
コンテナイメージの保存先として Artifact Registry を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| gcloud services enable artifactregistry.googleapis.com
gcloud artifacts repositories create my-repo \ --repository-format=docker \ --location=asia-northeast1
gcloud auth configure-docker asia-northeast1-docker.pkg.dev
docker tag my-image asia-northeast1-docker.pkg.dev/PROJECT_ID/my-repo/my-image:v1 docker push asia-northeast1-docker.pkg.dev/PROJECT_ID/my-repo/my-image:v1
|
Artifact Registry ドキュメント
Autopilot vs Standard
| 項目 |
Autopilot |
Standard |
| ノード管理 |
Google が自動管理 |
自分で管理 |
| スケーリング |
Pod ベースで自動 |
ノードプールのオートスケーリングを設定 |
| 課金 |
Pod のリソースリクエスト |
ノードの VM 料金 |
| カスタマイズ |
制限あり |
自由度が高い |
| SSH アクセス |
不可 |
可能 |
| 推奨ケース |
一般的なワークロード |
GPU、特殊なカーネル設定が必要な場合 |
注意点
- リージョナルクラスタ(
--region)はマルチゾーンで高可用性だが、ノード数 × ゾーン数のコストがかかる
get-credentials は kubeconfig のコンテキストを上書きするので、複数クラスタを切り替える場合は kubectl config で管理する
- Autopilot モードではノードへの SSH やホストパスマウントなど一部機能が制限される
- クラスタの削除はノード上のリソースも含めて削除される。Persistent Volume の
reclaimPolicy を確認しておく
参考リンク