Cloud Service
Google Kubernetes Engine (GKE)
Kubernetes 発祥の Google が提供するマネージド Kubernetes。コントロールプレーンを Google が運用し、Autopilot と Standard でノード管理の責任範囲を選べる。AWS の Amazon EKS に相当。
- 1.コントロールプレーンを Google が完全マネージドで運用する Kubernetes 基盤。
- 2.ノード運用も任せる Autopilot と、ノードプールを自分で持つ Standard を選べる。
- 3.Kubernetes 標準 API をそのまま使え、移植性とエコシステムを活かせる。
解決する課題
Kubernetes はコンテナのデプロイ・スケール・自己修復を宣言的に行える強力な基盤ですが、コントロールプレーン(API サーバー・etcd・スケジューラ)を自前で構築・運用するのは重い負担です。GKE はこの運用を肩代わりします。
- Kubernetes のコントロールプレーンを自前で構築・パッチ・冗長化したくない → Google が完全マネージドで運用
- Kubernetes の標準 API やエコシステム(Helm / Operator / Istio / Argo など)をそのまま使いたい
- 負荷に応じて Pod とノードを自動でスケールしたい(HPA・クラスターオートスケーラー)
- マルチクラウド・オンプレを含めた移植性の高いワークロードを動かしたい
- ノードの管理すら任せて、Pod を書くことに集中したい → Autopilot
AWS でいえば Amazon EKS に相当します。EKS と同じく「マネージドな Kubernetes」という位置づけで、コンテナを K8s 前提で運用したいケースに向きます。
主要概念と用語
- クラスター: Google 管理のコントロールプレーンと、ワークロードを動かすノード群の集合
- Autopilot モード: Google がノードのプロビジョニング・サイズ・スケール・セキュリティ設定まで管理し、利用者は Pod のリソース要求を書くだけ。Pod が要求したリソース単位で課金
- Standard モード: ノードプールを自分で管理し、マシンタイプ・台数・Spot 利用などを細かく制御できる
- ノードプール: 同一構成のノードをまとめた束。マシンタイプや Spot/オンデマンドなどの属性を指定
- Zonal / Regional クラスター: コントロールプレーンとノードを単一ゾーンに置く Zonal と、複数ゾーンに冗長化する Regional。本番は Regional が推奨
- Pod / Deployment / Service / Ingress / Gateway: Kubernetes 標準リソース。GKE では Service や Ingress が Cloud Load Balancing と統合される
- HPA(Horizontal Pod Autoscaler): メトリクスに応じて Pod レプリカ数を増減
- クラスターオートスケーラー: Pod の需要に応じてノード数を増減(Standard)
- Workload Identity Federation for GKE: Kubernetes ServiceAccount を主体として、鍵ファイルなしで Google Cloud API へ認証する仕組み(AWS の IRSA に相当)
- GKE リリースチャンネル: Rapid / Regular / Stable などのチャンネルでバージョン更新の速度と安定性のバランスを選ぶ
仕様・制限・クォータ
- クラスターはリージョン × ゾーンに配置。コントロールプレーンの可用性に応じて Zonal / Regional を選ぶ
- Autopilot では Pod がリソース要求(requests)を明示する必要があり、特権コンテナや一部のホストアクセスなどに制約がある
- Standard ではノードの OS パッチや K8s バージョン更新を計画的に行う必要がある(自動アップグレードも設定可能)
- 1 クラスターあたりのノード数・Pod 数・ノードあたり Pod 数に上限があり、バージョンや構成によって変動する
- vCPU・IP アドレス・ロードバランサー等にプロジェクト/リージョン単位のクォータがあり、引き上げ申請が可能
- Pod に割り当てる IP の枯渇を避けるため、VPC ネイティブ(エイリアス IP) での IP レンジ設計が重要
具体的な上限値やバージョン番号はリリースで変動するため、設計時は公式ドキュメントで最新値を確認してください。
内部の仕組み
GKE は Google がコントロールプレーン(API サーバー・etcd・スケジューラ・コントローラ)を完全マネージドで運用します。利用者は Kubernetes API に対してマニフェストを適用し、宣言した状態へクラスターが収束していきます。
Autopilot モードでは、Pod のリソース要求に基づいて Google が裏側でノードを自動的にプロビジョニング・配置・スケールします。利用者はノードの存在をほぼ意識せず、Pod を中心に運用できます。Standard モードでは、利用者がノードプールを設計・保有し、マシンタイプや Spot 利用、台数、配置ゾーンを自分で決められるため、集約効率の最適化や特殊要件への対応がしやすくなります。
スケールは二段構えです。Pod レベルでは HPA が負荷に応じてレプリカ数を増減し、ノードレベルでは(Standard では)クラスターオートスケーラーが Pod の需要に応じてノードを増減します。Service や Ingress、Gateway は Cloud Load Balancing と統合され、外部・内部のロードバランサーが自動でプロビジョニングされます。
Kubernetes を使いたいがノード運用は避けたい、というケースでは原則 Autopilot が推奨です。ノードのサイジング・パッチ・スケールを Google が担うため、運用負荷とミスを大きく減らせます。きめ細かいノード制御や特殊なハードウェア要件があるときに Standard を検討します。
設計パターン / ベストプラクティス
- まずは Autopilot を検討し、ノード運用を任せる。細かい制御が要るときだけ Standard
- 本番クラスターは Regional で構成し、ゾーン障害に耐える可用性を確保
- VPC ネイティブクラスターを使い、Pod / Service の IP レンジを余裕を持って設計(IP 枯渇を回避)
- リリースチャンネルを有効化し、自動アップグレードで K8s バージョンを計画的に最新化
- Pod には必ず リソース requests / limits を設定し、スケジューリングと安定性を担保
- 中断を許容できるバッチやステートレス処理は Spot ノードでコスト削減(Standard)
- PodDisruptionBudget を設定し、アップグレードやノード入れ替え時の可用性を維持
- 権限付与は鍵ファイルではなく Workload Identity Federation for GKE を使う
運用・監視
- Cloud Monitoring / Cloud Logging がクラスターと統合され、ノード・Pod・コンテナのメトリクスとログを自動収集できる
- GKE のダッシュボードでクラスター・ワークロードの状態、リソース使用率、イベントを把握
- Pod が
CrashLoopBackOffのときはkubectl logsとkubectl describe podでログとイベントを確認 - Pod が
Pendingのままのときは、ノードのリソース不足やスケジューリング制約、Autopilot のリソース要求を確認 - 自動アップグレード・自動修復を有効にし、ノードの健全性を維持
- メンテナンスウィンドウとメンテナンス除外で、アップグレードのタイミングを業務影響の少ない時間帯に制御
コスト
課金は「コントロールプレーンのクラスター管理料」と「ワークロードを動かすコンピューティング費用」の積み上げで考えます。モードによって課金の単位が変わる点が要注意です。
| モード/オプション | 課金の考え方 | 向いている用途 |
|---|---|---|
| GKE Autopilot | Pod が要求した vCPU/メモリ×時間(ノード運用込み) | Kubernetes だが運用は任せたい |
| GKE Standard | ノード(Compute Engine)の費用+クラスター管理料 | 集約効率や特殊要件でコスト最適化したい |
| Spot ノード(Standard) | プリエンプティブルノードで大幅割引 | 中断を許容できるバッチ/ステートレス |
| 確約利用割引(CUD) | 1〜3年コミットで割引 | 定常的に動かす本番ワークロード |
Standard ではノードの稼働ぶんが常に課金されるため、過剰にプロビジョニングしたノードは無駄になりやすい点に注意します。Autopilot は Pod が要求したリソースで課金されるため、要求値の適正化がそのままコスト最適化につながります。
セキュリティ
- 権限付与は Workload Identity Federation for GKE を使い、Kubernetes ServiceAccount に Google Cloud の権限をひも付ける。鍵ファイルのハードコードを避ける(AWS の IRSA 相当)
- イメージは Artifact Registry に保存し、脆弱性スキャンを有効化。Binary Authorization で署名済みイメージのみデプロイを許可
- Network Policy で Pod 間通信を最小化し、ラテラルムーブメントを抑える
- シークレットは Secret Manager で管理し、アプリへ安全に注入する
- コントロールプレーンへのアクセスは承認済みネットワークやプライベートクラスターで制限し、ノードにシールドノードなどの保護を適用
- IAM とロールベースアクセス制御(RBAC)を組み合わせ、クラスター操作の権限を最小化
広すぎる権限(例: Editor 相当)のサービスアカウントをノードや Pod に付与するのは NG です。さらに、コントロールプレーンを全開放(公開)したまま放置するのも危険です。用途ごとに最小権限を割り当て、Workload Identity Federation for GKE とプライベート構成を基本にします。
Well-Architected の観点
- 信頼性(reliability): Regional クラスターでゾーン障害に耐え、HPA とクラスターオートスケーラーで負荷変動を吸収。PodDisruptionBudget と自動修復で可用性を維持
- 運用上の優秀性(operational): Autopilot とリリースチャンネルで運用を自動化し、ノードのパッチ・スケール・アップグレードの手作業を削減
- パフォーマンス効率(performance): ワークロード特性に合うマシンタイプやノードプールを選び、リソース requests/limits を適正化してスケジューリング効率を高める
試験で問われるポイント
- GKE は Kubernetes 発祥の Google が提供するマネージド Kubernetesで、AWS の Amazon EKS に相当する
- Autopilot=ノード運用も Google が管理(Pod 単位課金)、Standard=ノードプールを自分で管理、という違いと使い分け
- 本番は Regional クラスターでゾーン障害に備える(Zonal は単一ゾーンで可用性が低い)
- 鍵ファイルなしで Google Cloud API に認証するのは Workload Identity Federation for GKE(AWS の IRSA 相当)
- スケールは HPA(Pod 数) と クラスターオートスケーラー(ノード数) の二段構え
- イメージの安全性は Artifact Registry の脆弱性スキャン+Binary Authorization で担保
- サーバーレスでシンプルに動かしたいだけなら GKE より Cloud Run が適することがある(使い分けの判断)
関連サービス・比較
GKE はマネージド Kubernetes ですが、Google Cloud にはよりサーバーレスなコンテナ実行基盤として Cloud Run もあります。Kubernetes の機能が本当に必要かどうかで選択が変わります。AWS との対応もあわせて整理します。
| 観点 | GKE | Cloud Run | AWS の対応 |
|---|---|---|---|
| 位置づけ | マネージド Kubernetes | サーバーレスコンテナ | EKS / Fargate・App Runner |
| 管理範囲 | Autopilotはノードも委任 / Standardは自分で管理 | サーバーもクラスターも不要 | EKS は K8s 管理あり |
| スケール単位 | Pod(HPA)とノード(オートスケーラー) | リクエスト(同時実行数) | Pod / リクエスト |
| ゼロスケール | Autopilotは0ノード可 / Standardは構成次第 | 対応(アイドルは0) | Fargate は常駐課金 |
| 権限付与 | Workload Identity Federation for GKE | サービスアカウント | IRSA / タスクロール |
| 向き | K8s 前提の複雑構成・移植性 | HTTP/ジョブ・可変負荷でシンプル | K8s 前提 / 軽量コンテナ |
Kubernetes の API・エコシステム(DaemonSet・StatefulSet・Operator など)が必要なら GKE、ステートレスな HTTP やジョブをシンプルに動かしたいだけなら Cloud Run が適しています。まず Cloud Run で足りないか検討し、足りないときに GKE を選ぶのが運用負荷の面で有利です。
ハンズオン / CLI例
# Autopilot クラスターを作成(ノード運用は Google に委任)
gcloud container clusters create-auto demo-cluster \
--region=asia-northeast1
# 認証情報を取得して kubectl をクラスターに向ける
gcloud container clusters get-credentials demo-cluster \
--region=asia-northeast1
# Artifact Registry のイメージから Deployment を作成
kubectl create deployment web \
--image=asia-northeast1-docker.pkg.dev/PROJECT_ID/repo/web:latest
# Service(ロードバランサー)で外部公開し、HPA で自動スケール
kubectl expose deployment web --type=LoadBalancer --port=80 --target-port=8080
kubectl autoscale deployment web --min=2 --max=10 --cpu-percent=70
# 参考: Standard クラスターを Regional・Spot ノードプールで作成する場合
gcloud container clusters create std-cluster \
--region=asia-northeast1 \
--num-nodes=1 \
--release-channel=regular
gcloud container node-pools create spot-pool \
--cluster=std-cluster \
--region=asia-northeast1 \
--spot \
--machine-type=e2-standard-4
Google Cloud Service
Google Kubernetes Engine (GKE)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
コンテナ
比較で見る軸
クラウド: Google Cloud / カテゴリ: コンテナ / 難易度: intermediate
導入後に効く点
ノード運用も任せる Autopilot と、ノードプールを自分で持つ Standard を選べる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- コンテナ
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- reliability / operational / performance
判断チェックリスト
- 自社の用途が「コンテナ / reliability」に近いか確認する。
- 強みである「コントロールプレーンを Google が完全マネージドで運用する Kubernetes 基盤。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。