Amazon Elastic Kubernetes Service(Amazon EKS)は、AWSがKubernetesのコントロールプレーンを管理するサービスです。ただし、マネージドサービスを選んでも、アプリケーションの設計、権限、ネットワーク、監視、更新手順まで自動で決まるわけではありません。
この記事では、EKSをGoogle Kubernetes Engine(GKE)、Azure Kubernetes Service(AKS)と比較しながら、本番運用の前に決める項目を整理します。製品名の比較だけで終わらず、自社の要件を選定理由へ変換できる状態を目指します。
最初に押さえる結論
- AWS上のシステムやIAM、VPCとの統合を重視するなら、EKSを検討しやすくなります。
- GKEとAKSも、クラウド事業者がコントロールプレーンを管理する点ではEKSと共通しています。
- 差が出るのは、ワーカーノードの管理方法、クラウドIDとの連携、ネットワーク、監視、更新の仕組みです。
- 選定では機能数よりも、既存クラウド、担当者の経験、障害時の責任分界、継続的な運用負荷を比べます。
Amazon EKSとマネージドKubernetesの基本
コントロールプレーンは、Kubernetes APIサーバー、スケジューラ、クラスタ状態を保持する仕組みなど、クラスター全体を制御する部分です。データプレーンは、実際にアプリケーションのPodが動くノード群を指します。
EKSではAWSがコントロールプレーンを管理します。利用者は、EC2のマネージドノードグループやAWS Fargateなどから実行基盤を選び、Pod、Service、権限、ログ、デプロイ手順を設計します。
GKEとAKSも同じくマネージドKubernetesです。三つのサービスはKubernetes APIを利用できるため、DeploymentやServiceなどの基本概念を共有できます。一方、クラウド固有のIAM、ネットワーク、ロードバランサ、監視サービスまで同一になるわけではありません。
管理を任せられる範囲
| 対象 | クラウド事業者が主に担うこと | 利用者が主に決めること |
|---|---|---|
| コントロールプレーン | 可用性、保守、基盤側の更新 | APIへの接続制御、利用バージョン、更新時期の調整 |
| ワーカーノード | 選んだモードに応じたプロビジョニング支援 | 実行方式、容量、OS、スケーリング、障害時の扱い |
| アプリケーション | 実行基盤の提供 | コンテナ、マニフェスト、可用性、データ保護、デプロイ |
| セキュリティ | クラウド側の認証機能や保護機能 | 最小権限、RBAC、秘密情報、NetworkPolicy、監査 |
| 監視と復旧 | ログやメトリクスの収集先 | 監視項目、通知、手順書、復旧訓練、目標復旧時間 |
この責任分界を曖昧にすると、「マネージドだから運用は不要」という誤解が生まれます。EKSが軽減するのは主にコントロールプレーンの管理負荷であり、アプリケーション運用まで代行するサービスではありません。
EKS、GKE、AKSを同じ軸で比較する
| 比較軸 | EKS | GKE | AKS |
|---|---|---|---|
| 主なクラウド連携 | AWS IAM、VPC、CloudWatchなど | Google Cloud IAM、VPC、Cloud LoggingやMonitoringなど | Microsoft Entra ID、Azure Virtual Network、Azure Monitorなど |
| ノード運用の代表例 | EC2マネージドノードグループ、Fargate | Standard、Autopilot | ノードプールを中心とした構成 |
| Podからクラウドへの認証 | IRSAなどでServiceAccountとIAM権限を関連付ける | Workload Identity Federation for GKEを利用する | Microsoft Entra Workload IDを利用する |
| 選定の起点 | AWS資産と運用体制 | Google Cloud資産とノード管理の委任範囲 | Azure資産と組織のID基盤 |
この表は優劣ではなく、既存環境との接続点を探すためのものです。たとえば、AWSを標準クラウドとしてIAMとVPCの運用手順が整っている組織では、EKSを選ぶと新たに覚える境界を減らせます。反対に、別のクラウドを中心に運用しているなら、そのクラウドのKubernetesサービスも同じ条件で評価する必要があります。
EKSの実行基盤を選ぶ
EC2マネージドノードグループ
EC2マネージドノードグループは、EKSがEC2ノードの作成や更新を支援する方式です。インスタンスタイプ、OS、ディスク、ノードグループの分割などを調整しやすい一方、容量設計とノード更新は運用課題として残ります。
AWS Fargate
Fargateでは、条件に一致するPodを仮想マシンのグループを直接管理せずに実行できます。ノード管理を減らせますが、対応機能やネットワーク、常駐エージェントの要件がワークロードに合うかを確認する必要があります。
ハイブリッド構成
EKS AnywhereとEKS Hybrid Nodesは、オンプレミスやエッジを含む要件で検討される選択肢です。ただし、クラウド内のEKSと同じ運用負荷になるわけではありません。接続障害、現地設備、更新、監視、責任分界まで含めて評価します。
ネットワーク設計で先に決めること
CNIは、Podへネットワーク接続を提供する仕組みです。EKSではAmazon VPC CNI、GKEではVPCネイティブな構成、AKSではAzure CNI系の選択肢など、クラウドのネットワークとPodを結ぶ方法が用意されています。
製品名より先に、次の問いへ答えると設計が進みます。
- PodとServiceに必要なIPアドレス数を確保できるか。
- 外部公開、社内公開、クラスター内部限定をどう分けるか。
- ロードバランサを誰が作成し、設定変更を誰が承認するか。
- Pod間通信をどこまで許可し、NetworkPolicyで何を拒否するか。
- 障害調査に必要な通信ログをどこへ保存するか。
EKSでIngressからApplication Load Balancerを構成する場合は、AWS Load Balancer Controllerなどの管理も必要です。コントローラの導入、権限、更新をクラスター本体とは別に追跡します。
クラウドIDとKubernetes RBACを分けて考える
Kubernetesの権限設計には二つの入口があります。一つは、人や運用ツールがクラスターを操作する権限です。もう一つは、PodがS3やストレージなどのクラウドサービスへアクセスする権限です。
前者はクラウド側のIDとKubernetes RBACを組み合わせ、後者はServiceAccountを単位に必要最小限の権限を渡します。EKSではIRSA、GKEではWorkload Identity Federation for GKE、AKSではMicrosoft Entra Workload IDが、この後者に相当します。
長期のアクセスキーをコンテナイメージや環境変数へ直接埋め込む構成は避けます。認証と認可、最小権限の考え方は、関連記事「AWS IAMの基礎と権限設計」で詳しく整理しています。
クラスターとネームスペースの分け方
クラスターを分けるほど障害や権限の境界は明確になりますが、更新、監視、費用管理の対象も増えます。反対に、一つへ集約すると管理対象は減るものの、障害の影響範囲と調整コストが大きくなります。
| 分離の候補 | 別クラスターを検討する条件 | 同一クラスターを検討できる条件 |
|---|---|---|
| 本番と検証 | 変更権限や障害影響を明確に分けたい | 小規模で、別の安全策と復旧手順を用意できる |
| 事業やチーム | 管理責任、規制、可用性目標が異なる | 共通の運用チームとポリシーで管理できる |
| ワークロード | 高負荷処理が他サービスへ影響しやすい | 割当量と優先度を設定し、影響を制御できる |
ネームスペースは、名前、RBAC、ResourceQuota、NetworkPolicyなどを整理する単位です。ただし、ネームスペースを分けるだけで強いセキュリティ境界が完成するわけではありません。求める分離レベルに応じて、アカウント、ネットワーク、クラスターまで含めて境界を決めます。
リソース要求と制限を運用へつなげる
requestsは、スケジューラがPodの配置を判断するためのCPUとメモリの要求量です。limitsは、コンテナが利用できる上限を指定します。値を一律に決めるのではなく、負荷試験と実測値を基に調整します。
ネームスペース単位のResourceQuotaとLimitRangeも、無制限な利用を防ぐ助けになります。ただし、上限を設定するだけでは運用になりません。上限到達や再起動を検知する監視と、値を見直す担当者を決めておきます。
EKS FargateでWeb APIを動かす最小例
次の例は、appネームスペースのWeb APIをFargateへ配置するためのDeploymentです。実運用では、Namespace、Service、Ingress、ServiceAccount、IAMロール、監視、PodDisruptionBudgetなどを別途設計します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample-api
namespace: app
spec:
replicas: 3
selector:
matchLabels:
app: sample-api
template:
metadata:
labels:
app: sample-api
spec:
serviceAccountName: sample-api-sa
containers:
- name: app
image: 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/sample-api:1.0.0
ports:
- containerPort: 8080
env:
- name: APP_ENV
value: "prod"
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
IRSAを使う場合は、ServiceAccountへIAMロールを関連付けます。次の例は形を示すものであり、IAMロール側の信頼ポリシーと最小権限の設定も必要です。
apiVersion: v1
kind: ServiceAccount
metadata:
name: sample-api-sa
namespace: app
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/sa-sample-api-role
Deployment、Service、Ingress、HPAをつないだ基本構成は「FastAPIをKubernetesへデプロイする方法」も参考になります。
本番運用で起きやすい設計漏れ
Kubernetesを選ぶ理由が曖昧
コンテナを動かすだけなら、Kubernetes以外の選択肢もあります。複雑なデプロイ制御、複数チームでの共通基盤、Kubernetes APIを前提とする仕組みなど、導入理由を具体的にします。ECSを含む選択肢の違いは「Amazon ECSとEKS、GKE、AKSの違い」で確認できます。
クラスターへ状態を集めすぎる
データベースやメッセージングまでクラスター内へ置くと、バックアップ、復旧、容量、更新の責任も運用チームが担います。マネージドサービスとクラスター内運用を、可用性、費用、移植性、担当者の経験で比較します。
アップグレードをイベント扱いする
Kubernetesと各クラウドのサポート状況は変わります。固定の回数だけを決めるより、サポート期限、アドオン互換性、廃止予定のAPIを定期的に確認し、検証環境から段階的に更新する手順を用意します。
監視がインフラ指標で止まる
CPUとメモリだけでは、利用者が受ける障害を捉えられません。APIの成功率や応答時間、ジョブの遅延など、アプリケーションの状態も監視します。通知を受けた人が判断できるように、調査手順と連絡先も監視設定へ結び付けます。
導入前チェックリスト
- Kubernetesが必要な理由を、他のコンテナ実行基盤との違いから説明できる。
- コントロールプレーン、ノード、アプリケーションの責任分界を文書化した。
- IPアドレス、外部公開、Pod間通信、通信ログを設計した。
- 人の操作権限とPodのクラウド権限を分け、最小権限にした。
- クラスターとネームスペースの分離理由を、障害影響と運用費用から説明できる。
- ログ、メトリクス、アラート、復旧手順の担当者を決めた。
- Kubernetes、ノード、アドオンの更新を検証する環境と手順がある。
- クラウド料金だけでなく、運用工数と障害対応まで含めて比較した。
EKSを選ぶときの判断基準
EKSは、AWSのIAM、VPC、監視サービスとKubernetesを組み合わせたい組織にとって自然な候補です。ただし、AWSを利用していることだけで決めるのではなく、Kubernetesが必要な理由と、継続的に運用できる体制を確認します。
GKEとAKSを比較するときも、同じチェックリストを使います。既存クラウドとの親和性、ノード管理を委任したい範囲、ID基盤、ネットワーク、監視、更新手順を並べれば、製品イメージに頼らず選定できます。
公式ドキュメント
- Amazon EKSとは(AWS公式)
- Amazon EKS製品ページ
- EKS Anywhereの概要
- GKEの概要
- GKEネットワークの概要
- Azure Kubernetes Service(AKS)とは
利用できるバージョン、機能、制限、料金は変わるため、設計時と更新前に各社の公式ドキュメントを確認してください。
この記事に関連する株式会社greedenの取り組み
Kubernetesの導入では、サービス選定だけでなく、権限、監視、更新手順を業務要件に結び付ける設計が欠かせません。株式会社greedenは、Webシステム開発を通じて、その整理と実装を支援します。
