はじめに
クラウドネイティブなアプリケーション開発において、Kubernetesはデファクトスタンダードとなっています。そのマネージドサービスとして、AWSのAmazon Elastic Kubernetes Service (EKS) とGoogle CloudのGoogle Kubernetes Engine (GKE) は、それぞれ強力な選択肢です。
本記事では、これら二つのサービスを、その内部構造、運用工数、そしてサーバーレスなKubernetes実行環境(EKS on FargateとGKE Autopilot)の比較を通じて深く掘り下げ、どちらがあなたのプロジェクトに適しているかを考察します。
EKSとGKEの概要
Amazon Elastic Kubernetes Service (EKS)
AWSが提供するマネージドKubernetesサービスです。コントロールプレーンの管理はAWSが行い、ユーザーはEC2インスタンスまたはAWS Fargate上でワーカーノードを実行できます。AWSの広範なサービスエコシステムとの連携が強みです。
Google Kubernetes Engine (GKE)
Google Cloudが提供するマネージドKubernetesサービスであり、Kubernetes開発元であるGoogleの豊富なノウハウが凝縮されています。コントロールプレーンの管理はGoogleが行い、ユーザーはCompute Engineインスタンス上でワーカーノードを実行するか、Autopilotモードを利用できます。
Kubernetesの内部構造:コントロールプレーンとデータプレーン
EKSとGKEは、どちらもKubernetesのコアコンポーネントであるコントロールプレーンとデータプレーンを管理しますが、そのアプローチにはいくつか違いがあります。
コントロールプレーン
コントロールプレーンは、Kubernetesクラスターの「脳」にあたる部分で、APIサーバー、etcd、スケジューラ、コントローラマネージャなどのコンポーネントが含まれます。
| 特徴 | EKS | GKE |
|---|---|---|
| 管理主体 | AWSが完全に管理 | Googleが完全に管理 |
| 高可用性 | デフォルトで複数AZにまたがるHA構成 | デフォルトでHA構成 (Control Plane HA) |
| ユーザー操作 | Kubeconfigを通じてAPIサーバーにアクセス | gcloud CLIまたはKubeconfigを通じてAPIサーバーにアクセス |
| 課金 | クラスターあたり$0.10/時間(リージョンによって異なる場合あり) 1 | GKE Standardではコントロールプレーンの課金なし (ノード課金のみ) 2 GKE AutopilotではPodのリソース利用量と合算 3 |
データプレーン(ワーカーノード)
データプレーンは、実際にPodが動作するワーカーノード群を指します。
EKSのデータプレーン
-
EKS on EC2:
- Managed Node Groups: AWSがノードのプロビジョニング、更新、スケールなどを支援。AMIのパッチ適用などもAWSが提供する。
- Self-Managed Node Groups: ユーザーがEC2インスタンスを完全に管理。AMIの選択、OSのパッチ適用、スケーリンググループの設定などを自身で行う。高いカスタマイズ性が必要な場合に選択される。
-
EKS on Fargate:
- ワーカーノード(EC2インスタンス)の管理が不要な、サーバーレスな実行環境です。PodごとにFargate環境が起動し、OSのパッチ適用や基盤のスケーリングはAWSが自動的に行います。ユーザーはPodの定義とデプロイに集中できます。
GKEのデータプレーン
-
GKE Standard (on Compute Engine):
- Compute Engineインスタンスをワーカーノードとして利用します。ノードプールを使ってインスタンスタイプ、OSイメージ、オートスケーリング設定などを構成します。EKS on EC2のManaged Node Groupsに近い概念です。
-
GKE Autopilot:
- EKS on Fargateに相当する、サーバーレスなGKEモードです。ノード(Compute Engineインスタンス)のプロビジョニング、管理、スケーリング、パッチ適用などをGoogleが完全に自動化します。ユーザーはコンテナイメージとKubernetesのマニフェストを用意するだけで、Podをデプロイできます。
EKS on FargateとGKE Autopilotの比較
両者とも「サーバーレスKubernetes」というコンセプトで、基盤インフラの管理を大幅に削減しますが、いくつか違いがあります。
| 特徴 | EKS on Fargate | GKE Autopilot |
|---|---|---|
| ノード管理 | 基盤のOS/ランタイム管理はAWSが実施。ユーザーはPodをFargateプロファイルで指定。 | ノードのプロビジョニング、OS/ランタイム管理、パッチ適用、スケーリングをGoogleが完全に実施。 |
| リソース管理 | Pod単位でCPU/メモリをリクエスト。オーバープロビジョニングによる無駄が発生しうる。 | Podの最小要件をGoogleが最適化。リソース要件の自動調整やベストプラクティス適用。 |
| 課金単位 | Podが消費するCPUとメモリ(秒単位) 4 | PodのCPU/メモリ/ストレージ、およびコントロールプレーンの追加料金 3 |
| ユースケース | VM管理の手間を削減し、Podデプロイに集中したい場合に最適。 | Kubernetesの運用負荷を極限まで減らし、アプリケーション開発に集中したい場合に最適。 |
GKE Autopilotは、単にノード管理を肩代わりするだけでなく、Kubernetesのベストプラクティスを自動的に適用し、リソースの最適化まで踏み込む点で、EKS on Fargateよりも「よりマネージド」であると言えます。
運用工数とコスト
運用工数は、利用するデータプレーンのタイプによって大きく変動します。
運用工数比較
| 項目 | EKS (EC2) / GKE Standard (Compute Engine) | EKS on Fargate / GKE Autopilot |
|---|---|---|
| コントロールプレーン | 低(両サービスともマネージド) | 低(両サービスともマネージド) |
| ワーカーノード管理 | 中〜高(インスタンスタイプ、OSパッチ、スケーリング設定など) | 低(ほぼゼロ。基盤の管理はクラウドプロバイダーが担当) |
| Kubernetesバージョンアップ | アップデートのテスト、ノードへの適用計画・実施が必要。 | クラウドプロバイダーが自動または半自動で実施。Autopilotはより自動化。 |
| セキュリティパッチ | OSレベルのパッチはユーザー(Managed Node Groupである程度軽減) | クラウドプロバイダーが自動的に適用 |
| リソース最適化 | ユーザーがPodのリソースを適切に設定する必要がある。 | GKE Autopilotは自動的にリソースを最適化。Fargateはユーザー設定依存。 |
一般的に、EKS on FargateやGKE Autopilotのようなサーバーレスなモードを利用するほど、インフラ管理に関する運用工数は大幅に削減されます。GKE Autopilotは、リソース最適化やセキュリティの自動適用まで踏み込むため、運用工数を最も低く抑えられる選択肢と言えるでしょう。
コスト比較
コストは多くの要因に依存するため一概には言えませんが、考慮すべきポイントを挙げます。
- コントロールプレーン: EKSはクラスターごとの時間料金が発生しますが、GKE Standardは無料です。GKE AutopilotはPodの利用料にコントロールプレーン料金が含まれます。
-
ワーカーノード:
- EKS on EC2 / GKE Standard: EC2/Compute Engineのインスタンス料金。リザーブドインスタンスやSavings Plansで割引可能。
- EKS on Fargate / GKE Autopilot: Podが消費するCPU/メモリ/ストレージのリソース量に応じた従量課金。
- データ転送、ストレージ、ネットワーク: 各クラウドプロバイダーの周辺サービスの料金が適用されます。
- 課金粒度: Fargate/Autopilotはより細かいPod単位での課金となり、リソースの無駄を削減しやすい可能性があります。
利用シーンと最適な選択
- 既存のクラウド環境がAWSである場合: AWSのサービスエコシステムとの連携がスムーズなEKSが自然な選択肢となります。既存のIAMロール、VPC、S3、RDSなどとの連携はEKSで最も最適化されています。
- 既存のクラウド環境がGCPである場合: Googleのデータ分析系サービス(BigQuery, Dataflowなど)や機械学習サービス(Vertex AIなど)との連携がスムーズなGKEが有利です。
- 運用工数を極限まで減らしたい、Kubernetesの専門知識が少ない: GKE Autopilotが最も運用負荷が低い選択肢です。EKS on Fargateも非常に有効ですが、Autopilotはさらなる自動化を提供します。
- 高いカスタマイズ性や特定のOS/インスタンスタイプを求める: EKS on EC2のSelf-Managed Node GroupsやGKE Standardが適しています。
- コスト最適化を優先する: EKS on EC2やGKE Standardでリザーブドインスタンスなどを活用し、ノード数を手動でチューニングする方が、従量課金のFargate/Autopilotよりも安くなるケースもあります。ただし、運用工数とのトレードオフになります。
まとめ
EKSとGKEは、いずれも強力なマネージドKubernetesサービスであり、Kubernetesのコア機能においては大きな差はありません。しかし、その内部構造、特にワーカーノードの管理と、それらが運用工数とコストにどう影響するかに違いが見られます。
| 特徴 | EKS | GKE |
|---|---|---|
| コントロールプレーン | AWSが管理。クラスター料金あり。 | Googleが管理。Standardは無料、AutopilotはPod利用料に含む。 |
| データプレーン | EC2 (Managed/Self-Managed) または Fargate | Compute Engine (Standard) または Autopilot |
| サーバーレス相当 | EKS on Fargate | GKE Autopilot |
| 運用工数 | Fargate利用で低減。EC2利用時はノード管理の手間あり。 | Autopilot利用で極限まで低減。Standard利用時はノード管理の手間あり。 |
| 特徴 | AWSエコシステムとの連携、豊富な設定オプション。 | Kubernetes開発元、Autopilotによる高度なマネージド体験。 |
最終的な選択は、既存のインフラ環境、チームのスキルセット、アプリケーションの要件、そして求める運用負荷のレベルによって異なります。それぞれの特徴を理解し、プロジェクトに最適なサービスを選択しましょう。
出典
- Amazon EKS 料金 - AWS
- Google Kubernetes Engine の料金 | Google Cloud
- AWS Fargate の料金 - Amazon ECS / Amazon EKS 向けサーバレスコンテナ - AWS
- EKS vs GKE: A Deep Dive Comparison - InfoQ
- Comparing Amazon EKS vs. Google GKE: Which is the Best Kubernetes Platform? - The New Stack