AWS EKS
AWS EKS
目次

Amazon EKS徹底解説:GKE・AKSとの比較で学ぶ「本気のKubernetes運用」実践ガイド

はじめに(要点サマリー)

  • 本記事では Amazon Elastic Kubernetes Service(Amazon EKS) を主役に、Google Kubernetes Engine(GKE)Azure Kubernetes Service(AKS) と比較しながら、「Kubernetesを本番でちゃんと運用するための考え方」 を丁寧に整理していきます。
  • Amazon EKS は、AWSが提供するフルマネージドのKubernetesサービスで、KubernetesのコントロールプレーンをAWSが管理し、ユーザーはワーカーノードやアプリケーションに集中できるようにしたサービスです。
  • GKE・AKSも同じくマネージドKubernetesサービスですが、
    • EKS:AWSネイティブ連携(IAM / VPC / CloudWatch)とハイブリッド(EKS Anywhere) が強み
    • GKE:Kubernetes発祥のGoogleが作った“王道Kubernetes”+Autopilotによるほぼサーバレス運用
    • AKS:Azure AD(Entra ID)・Azure Monitor・DevOpsとの統合が濃く、企業ITとの親和性が高いKubernetes
      といったカラーがあります。
  • 設計の肝は、
    1. 「なぜKubernetesなのか」をチームで言語化すること
    2. クラスタ構成(環境・チーム・テナントの切り方)を最初に決めること
    3. ネットワーク・セキュリティ・IAM/RBACを“最小権限”で設計すること
    4. アップグレード/アドオン/ログ・監視の運用を仕組みとして用意すること
    5. 将来のマルチクラウド・ハイブリッドを見据えて“共通の考え方”で設計すること
  • 想定読者は、
    • Kubernetesをそろそろ本気で本番運用したい SRE / プラットフォームエンジニアの方
    • ECS と EKS、GKE と AKS の違いを整理したい バックエンド開発者・テックリードの方
    • AWS / GCP / Azure を横並びで見たい 情報システム部門・ITガバナンス担当の方
      です。
  • 読み終わるころには、「自分たちのチーム事情なら、EKS / GKE / AKS のどれを、どういう構成で採用するのが現実的か」を、自分の言葉で説明できる状態を目指しますね。

1. Amazon EKSとは?3クラウドに共通する“マネージドKubernetes”の基本

1.1 Amazon EKSの概要

Amazon EKS は、AWSが運営する フルマネージドのKubernetesクラスターサービス です。ユーザーは自前でKubernetesコントロールプレーン(APIサーバー、etcdなど)を構築・運用する必要がなく、AWSがスケーリング・冗長化・パッチ適用などを行ってくれます。

特徴をシンプルにまとめると:

  • Kubernetes準拠(CNCF認定) のマネージドサービス
  • コントロールプレーンはAWS側が運用(高可用・自動スケール・パッチ)
  • ワーカーノードは
    • EC2ノード
    • Fargate(サーバレスノード)
    • EKS Anywhere / Hybrid Nodes(オンプレ・エッジ)
      など、複数の実行環境から選択可能
  • IAM・VPC・CloudWatchなど、他のAWSサービスと強く連携

要するに、「Kubernetesというオーケストレーションの考え方は採用したいけれど、コントロールプレーンの運用はAWSに任せたい」 というときの選択肢です。

1.2 GKE / AKS との共通点

GKE・AKS も同じカテゴリのサービスです。

  • GKE(Google Kubernetes Engine)
    • Googleが提供するマネージドKubernetes。
    • Google Cloudのネットワークと密接に統合され、Autopilotモードではノード管理をほぼ意識せずに運用できます。
  • AKS(Azure Kubernetes Service)
    • AzureのマネージドKubernetes。
    • Kubernetesの制御プレーンをAzureが管理し、ユーザーはノードやアプリケーションに集中できます。Azure AD(Entra ID)・Azure Monitor・DevOpsとの連携が特徴です。

3つとも、

  • KubernetesのAPIをそのまま使える
  • クラウド事業者がコントロールプレーンを運用してくれる
  • ノードのプロビジョニング・オートスケール・アップグレード周りを支援してくれる

という意味で共通しています。


2. アーキテクチャ比較:EKS / GKE / AKSの“骨格”をそろえて理解する

2.1 コントロールプレーンとデータプレーン

Kubernetesクラスターは大きく、

  • コントロールプレーン(APIサーバー、etcd、スケジューラなど)
  • データプレーン(アプリコンテナが動くノード群)

に分かれます。

  • EKS:コントロールプレーンはAWS管理、ノードはEC2/Fargate/EKS Anywhere。
  • GKE:同様にGoogle管理のコントロールプレーン+Compute Engineノード or Autopilot。
  • AKS:Azure管理のコントロールプレーン+VMスケールセットノード。

ユーザーから見ると、「kubectlで話しかける先(APIサーバー)はクラウドが管理してくれる」という点が共通です。

2.2 ノード・ランタイムの選択肢

Amazon EKS

  • マネージドノードグループ(EC2)
    • ASGと連携したEC2ノード群。インスタンスタイプ・OS・ディスクなどを自分で細かく制御できます。
  • Fargate(EKS on Fargate)
    • Pod単位でvCPU/メモリを指定し、サーバレスで実行。ノードの管理をほぼ意識せずに済みます。
  • EKS Anywhere / Hybrid Nodes
    • オンプレやエッジにKubernetesクラスターを立てつつ、EKSディストロや統合管理を活用できる形。

GKE

  • Standardモード
    • Self-managedに近い構成で、ノードをCompute Engineとして自分で管理。
  • Autopilotモード
    • Pod単位での課金・スケーリングで、ノードをほぼ意識せずに運用できるサーバレス寄りのモード。

AKS

  • ノードプール(VMSS)
    • VM Scale Setでノードを管理。システムノードプール・ユーザーノードプールを分けるベストプラクティスが有名です。
  • Virtual Nodes / Container Instances連携(一部構成):
    • 必要に応じてサーバレスコンテナと連携し、バーストに対応することも可能です。

3. ネットワーク・セキュリティ・ID連携の違い

Kubernetesを本番で使うとき、一番“沼”になりやすいのが ネットワークと権限まわり です。ここを3クラウドでそろえて見ておきますね。

3.1 ネットワーク(CNI・VPC/VNet)

EKS

  • 基本は Amazon VPC CNI を使い、PodごとにVPC内のIPを割り当てるモデル(モードにより挙動は調整可能)。
  • ALB Ingress Controller(AWS Load Balancer Controller)などと組み合わせ、ALB/NLBと連携するのが定番です。

GKE

  • VPCネイティブクラスタ(IPエイリアス)で、PodにもVPC IPが割り当たる構成が主流。
  • Google Cloud Load Balancerと密接連携し、L7/L4ロードバランサを自動で張れます。

AKS

  • Azure CNI を使うか、kubenetを使うか選択可能(最近はAzure CNIが主流)。
  • Azure Load Balancer / Application Gateway / Nginx Ingress Controllerなどと組み合わせて構成します。

ネットワークの考え方としては、

  • Podが直接クラウドVPC/VNetのIPを持つのか
  • Service / LoadBalancerタイプをどう外部公開にマッピングするか

の2点を押さえておけば、どのクラウドでも応用が利きます。

3.2 セキュリティ(RBAC / ネットワークポリシー / Pod Security)

3つのクラウドとも、

  • Kubernetes RBAC
  • ネットワークポリシー(Calico / Cilium / Azure Policy for Kubernetesなど)
  • Pod Security(Pod Security Standardsや独自拡張)

をベースにした「Kubernetesの標準的なセキュリティモデル」を採用しています。

違いが大きく出るのは、クラウド側のID・権限との連携です。

3.3 クラウドIDとの連携(IRSA / Workload Identity / Managed Identity)

Amazon EKS

  • IAM Roles for Service Accounts(IRSA) を使うことで、
    • Kubernetes ServiceAccountにIAMロールを紐づけ
    • Pod単位でAWSリソース(S3 / DynamoDB / SQSなど)への権限を最小化
      できます。

GKE

  • Workload Identity によって、
    • Kubernetes ServiceAccount ↔ Google Service Account をマッピングし
    • PodからGoogle Cloud APIsへのアクセス権限を細かく制御できます。

AKS

  • Managed Identity + AAD Pod Identity(※現行はAzure AD Workload Identityへ移行) を組み合わせ、
    • Pod単位でAzureリソースへのアクセス権限を持たせる構成が取れます。

3つを横並びにすると、

  • EKS:ServiceAccount → IAMロール
  • GKE:ServiceAccount → Google Service Account
  • AKS:ServiceAccount → Managed Identity(Entra IDオブジェクト)

という対応になります。Kubernetes側では「ServiceAccountを単位にPodの権限を分ける」と覚えておくと、クラウドをまたいでも理解しやすくなります。


4. ユースケース別:EKS / GKE / AKS の得意分野

4.1 マイクロサービス基盤

  • 多数の小さなマイクロサービスを、共通の認証・ログ・監視・デプロイパイプラインで運用したいケースです。
  • EKSなら、ALB Ingress Controller+App Meshなどと組み合わせて、サービスメッシュ+ゼロトラスト寄りのフロント基盤 を構築しやすいです。
  • GKEは、IstioやAnthosなどのマネージド連携で、マルチクラスター/マルチクラウドを含めたサービスメッシュに強みがあります。
  • AKSは、Azure Front Door・Azure API Management・Azure Monitorとつなげることで、企業ITと親和性の高いAPI基盤が作りやすい印象です。

4.2 データ・機械学習基盤

  • バッチ処理・Spark・機械学習ワークロードをKubernetes上で回したいケースです。
  • EKSは、EMR on EKSやKubeflowなどのエコシステムと組み合わせて、クラウドネイティブなデータ/ML基盤を構築できます。
  • GKEは、Vertex AIやBigQueryとの親和性から、GCP中心のデータ/MLチームにとても人気があります。
  • AKSは、Azure MLやSynapseと連携しつつ、オンプレAD・既存Windows環境を持つ企業で選ばれやすいです。

4.3 ハイブリッド・エッジ

  • データ主権・低レイテンシ・工場や店舗などの現場との統合など、オンプレやエッジとセットでKubernetesを使いたいケースです。
  • EKS Anywhereは、オンプレKubernetesをEKSディストロ+サポート付きで運用できる選択肢として用意されています。
  • GKEは、GKE on-prem / Anthosなどを通じて、オンプレ・他クラウドを含むマルチクラスタ管理が得意です。
  • AKSも、Arc-enabled Kubernetesを利用して、オンプレや他クラウドのクラスターをAzure側から統合管理するアプローチがあります。

5. 実務設計のポイント:クラスタ・ネームスペース・リソースの切り方

5.1 クラスターをどう分けるか

よくあるパターンは:

  • 環境ごとにクラスター分割
    • eks-prod / eks-stg / eks-dev
  • さらに規模が増えると、
    • プロダクト単位・事業部単位でクラスターを分割
    • 重要度や規制要件(PCI / 医療など)が違うものは別クラスター

GKE でも gke-prod / gke-stg、AKSでもサブスクリプションやリソースグループと組み合わせて同じような分割を行うことが多いです。

5.2 ネームスペースの役割

  • クラスター内では、ネームスペースでアプリ・チーム・テナントを分けるのが基本です。
    • 例:team-a-api / team-a-batch / team-b / platform / observability など
  • RBAC・NetworkPolicyもネームスペース単位で設計できるため、**「アプリ単位orチーム単位でネームスペースを分ける」**のが運用しやすいです。

5.3 リソース制御(ResourceQuota / LimitRange)

  • EKS / GKE / AKS いずれも、
    • Podやコンテナに対する requests / limits
    • ネームスペース単位の ResourceQuota
      をサポートしているので、「CPU・メモリの取り合い」を防ぐ仕組みを必ず入れておきましょう。
  • これを疎かにすると、一つのPodが暴走して他サービスを巻き込む という、クラスタあるある事故に繋がります。

6. 具体比較:EKS / GKE / AKS の“性格”の違い

6.1 コントロールプレーンの運用とスケール

  • EKS
    • コントロールプレーンはリージョン内の複数AZに冗長化され、APIサーバーやetcdのスケーリングもAWS側が管理。
    • 超大規模クラスタ(数万Pod規模)向けの最適化も積極的に行われています。
  • GKE
    • Kubernetesの成り立ちからして“本家”なので、大規模・高トラフィックに強い実績が豊富です。
  • AKS
    • コントロールプレーンはAzureが管理し、SLA付きで可用性を提供。企業IT向けの安定運用にフォーカスしています。

6.2 マネージドアドオン・統合サービス

  • EKS
    • VPC CNI / CoreDNS / kube-proxy などのマネージドアドオン
    • AWS App Mesh、CloudWatch、AWS X-Ray、AppConfig、Systems Manager などとの連携がしやすいです。
  • GKE
    • Cloud Monitoring / Logging、Cloud Load Balancing、Config Connector など、GCPサービスとの一体運用が魅力。
  • AKS
    • Azure Monitor / Log Analytics / Application Insights、Azure Policy for Kubernetes、Key Vault、DevOps との組み合わせで、エンタープライズ向け統合運用がしやすいです。

6.3 料金モデル(ざっくりの考え方)

細かい数値は頻繁に変わるので公式の料金ページをご確認いただきたいのですが、考え方としては:

  • コントロールプレーンの料金(無料/有料/クラスター単位)
  • ノード(VM)に対する料金
  • Autopilot / Fargate / サーバレスオプション利用時の課金単位(Pod vCPU/メモリ単位など)

を比較し、「うちのワークロードの特性(ピーキー・24h稼働・夜は止まるなど)」に合うものを選ぶことが大切です。


7. サンプル構成:EKS Fargateで動かすシンプルWeb API

イメージを掴みやすいように、EKS FargateでWeb APIを動かす構成の概略を書いてみますね。

7.1 全体イメージ

  • VPC
    • Public Subnet:ALB
    • Private Subnet:EKS Fargate用のサブネット
  • EKSクラスター(Fargateプロファイルでappネームスペースを紐付け)
  • デプロイ対象:appネームスペースの Deployment + Service
  • ALB Ingress Controllerで Ingress → ALB をプロビジョニング

7.2 Deploymentの簡易サンプル(イメージ)

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"

7.3 IRSAによる権限付与イメージ

ServiceAccountにアノテーションで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

このIAMロールに、たとえばS3から設定ファイルを読む s3:GetObject のみを付けておけば、アプリケーションはS3へ必要最小限の権限だけ持ってアクセスできるようになります。

同じ発想は、GKEのWorkload IdentityやAKSのManaged Identityでもそのまま応用できます。


8. よくある落とし穴と、その防ぎ方

8.1 「とりあえず1クラスタに全部乗せる」問題

  • 複数のプロダクト・環境を一つのクラスターに詰め込みすぎると、
    • RBAC / NetworkPolicy が複雑化
    • 1つのクラスタ障害で全サービスに影響
      という危険があります。
  • 解決策:
    • 環境単位(prod / stg / dev)は必ず分離
    • 重要度の高いプロダクトは専用クラスターを検討

8.2 Kubernetes機能に寄せすぎてクラウドの機能を使わない

  • 何でもかんでもKubernetesネイティブで解決しようとすると、
    • IAM連携をせずに長期秘密鍵をPodに埋め込む
    • クラウドのマネージドDBではなく、クラスタ内にDBコンテナを立ててしまう
      など、運用・信頼性・セキュリティ面で損をすることがあります。
  • 解決策:
    • 状態はできるだけマネージドDBやクラウドサービス側に寄せる
    • 認証・権限は、IRSA / Workload Identity / Managed Identityでクラウドと連携する

8.3 アップグレード戦略がない

  • Kubernetesのバージョンは定期的にEOLを迎えるため、
    • 「半年に一度は少なくともマイナーバージョンアップ」
      を前提に計画しておかないと、後でまとめてアップグレード地獄になります。
  • 解決策:
    • 「毎年○月と○月にEKS/GKE/AKSのアップグレードを行う」など、定期スケジュールを決める
    • 本番の前に、必ず検証クラスターで動作確認をしてから段階的に進める

9. 誰がどう得をする?(読者像ごとのメリット)

9.1 SRE / プラットフォームエンジニアの方へ

  • EKS / GKE / AKS を横並びで理解しておくことで、
    • 「自社の前提条件だと、EKSでここまで、GKE/AKSではこういう構成が近い」
      といった比較表を自信を持って作れるようになります。
  • また、クラスタ設計・IRSA/Workload Identity・ネットワークポリシー・監視を共通の頭で考えられるので、マルチクラウド時代にも対応しやすくなります。

9.2 バックエンド開発者・テックリードの方へ

  • 「なぜEKSを選ぶのか」「なぜGKE/AKSではなくEKSなのか」を説明できるようになると、
    • チームや経営層に対して技術選定の納得感をきちんと届けられます。
  • 設計の初期から、
    • コンテナ化(Docker)
    • Kubernetesマニフェスト
    • CI/CD
      をセットで考えられるようになるので、本番運用までの道筋がぐっとクリアになります。

9.3 情報システム部門・ITガバナンス担当の方へ

  • EKS / GKE / AKS を、
    • 「**組織のガバナンスを効かせる単位(クラスター・プロジェクト・サブスクリプション)」
    • 監査・ログ・アクセス制御をどう設計するか
      という目線で比較できるようになります。
  • 結果として、セキュリティポリシーや規程と、“現実のクラウド構成”をつなぐ言葉を持てるようになります。

10. 今日からできる3ステップ

  1. 「なぜKubernetesなのか」を一言で書き出してみる
    • 例:「マイクロサービスをチーム横断で運用するため」「マルチクラウドに耐えられる基盤が欲しい」など。
  2. 既存の(または予定している)コンテナアプリを1つ選び、EKS / GKE / AKS で動かすならどう設計するか紙に書いてみる
    • クラスター構成、ネームスペース、必要な権限、CI/CDの流れまで、ざっくりで構いません。
  3. IRSA / Workload Identity / Managed Identity のどれかを実際に試してみる
    • 小さな検証環境で、1つのPodにだけ最小権限を渡すサンプルを作ってみると、「IDとKubernetesを結びつける感覚」が一気に掴めます。

11. まとめ:EKSは「AWSネイティブ×Kubernetes」をつなぐ橋

Amazon EKS は、

  • Kubernetesというオープンなオーケストレーションの世界と、
  • IAM / VPC / CloudWatch / そのほかAWSサービスというAWSネイティブの世界

をつなぐ“橋”のような存在です。

一方で、GKE・AKSもそれぞれのクラウドに最適化されていて、どれか一つが絶対ということはありません。大切なのは、

  • チームのスキルセット
  • 既存システムとの親和性
  • 将来のマルチクラウド/ハイブリッド構想

を踏まえたうえで、

「うちの組織なら、このパターンのEKS/GKE/AKSがちょうどいいよね」

と、自分たちにフィットした答えを見つけていくことだと思います。

本記事が、その“答え探し”のための地図になってくれたら嬉しいです。少しずつ、無理のない範囲で試しながら、ご自身とチームにとって気持ちよく運用できるKubernetes基盤を育てていきましょう。


参考リンク(公式・解説ドキュメント)

※バージョン・制限値・料金体系は変わることがありますので、実際に設計・導入される際は必ず最新の公式ドキュメントと料金ページをご確認くださいね。

投稿者 greeden

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)