コンテンツにスキップ

Elastic Kubernetes Service (EKS)

1. サービス概要

Amazon Elastic Kubernetes Service (EKS) は、Kubernetes をベースとしたコンテナオーケストレーションをフルマネージドで提供するサービスである。
開発者は、Kubernetes 環境を AWS 上で簡単に構築、管理、スケーリングでき、コンテナ化されたアプリケーションのデプロイメントと管理を効率的に行うことができる。
EKS は、Kubernetes の柔軟性と AWS の可用性、セキュリティ、スケーラビリティを組み合わせて、複雑なコンテナワークロードをサポートする。

主なユースケースとして、

  • マイクロサービスアーキテクチャの構築
  • Web アプリケーションのデプロイ
  • バッチ処理の実行
  • 機械学習ワークロードの実行
  • ハイブリッドクラウド環境でのコンテナオーケストレーション

などが挙げられる。
Amazon EKS は、これらのユースケースに対応するための様々な機能と、AWS の他のサービスとの統合を提供する。

2. 主な特徴と機能

2.1 Kubernetes ベースのコンテナオーケストレーション

EKS は、オープンソースのコンテナオーケストレーションプラットフォームである Kubernetes をベースにしている。
Kubernetes の API やエコシステムを利用して、コンテナ化されたアプリケーションを管理できる。

2.2 フルマネージドコントロールプレーン

EKS は、Kubernetes のコントロールプレーン(API サーバー、スケジューラーなど)をフルマネージドで提供する。
ユーザーは、コントロールプレーンの管理を AWS に任せ、ワーカーノードの管理とアプリケーションのデプロイに集中できる。

2.3 柔軟なワーカーノード構成

EKS は、EC2 インスタンスまたは AWS Fargate をワーカーノードとして利用できる。
EC2 インスタンスでは、ノードのタイプ、サイズ、ネットワーク設定などを自由にカスタマイズできる。
Fargate では、サーバーレスでワーカーノードを実行できる。

2.4 ロードバランシング

アプリケーションロードバランサー(ALB)やネットワークロードバランサー(NLB)と統合することで、コンテナ化されたアプリケーションのトラフィックを分散し、可用性を高めることができる。

2.5 自動スケーリング

Kubernetes Horizontal Pod Autoscaler(HPA)や Cluster Autoscaler を利用して、アプリケーションの需要に応じて、Pod やワーカーノードの数を自動的にスケーリングできる。
これにより、リソースの利用率を最適化し、コストを削減できる。

2.6 サービスディスカバリー

Kubernetes のサービスディスカバリー機能を利用して、コンテナ化されたサービス間でお互いを検出できる。
また、AWS Cloud Map と統合して、より高度なサービスディスカバリーを実現することも可能である。

2.7 統合性と拡張性

Amazon EKS は、AWS の他のサービス(IAM, VPC, CloudWatch, CodeBuild, CodePipeline など)と密接に統合されており、コンテナベースのアプリケーション開発とデプロイメントを効率的に行える。
また、Kubernetes のエコシステム(Helm, kubectl など)を利用して、アプリケーションのデプロイメントを自動化することもできる。

3. アーキテクチャおよび技術要素

  1. 開発者は、Docker イメージを Amazon ECR などのコンテナレジストリにプッシュ。
  2. EKS クラスターを作成し、Kubernetes コントロールプレーンとワーカーノードを構成。
  3. Kubernetes マニフェストファイルを作成し、アプリケーションのデプロイ、サービス、ロードバランサーなどを定義。
  4. kubectl などのツールを使って、マニフェストファイルを適用し、アプリケーションをデプロイ。
  5. 必要に応じて、自動スケーリングを設定し、リソースを動的に調整。

Amazon EKS は、AWS のインフラ上に構築されており、高い可用性とスケーラビリティを提供する。
Kubernetes コントロールプレーンの管理は AWS が行うため、ユーザーはワーカーノードの管理とアプリケーションのデプロイに集中できる。

4. セキュリティと認証・認可

Amazon EKS は、コンテナアプリケーションのセキュリティを確保するために、以下の機能を提供する:

  • IAM 統合: AWS Identity and Access Management (IAM) を利用して、EKS リソースへのアクセスを制御する。
  • VPC 内での実行: EKS クラスターは Virtual Private Cloud (VPC) 内で実行され、ネットワーク隔離を実現。
  • RBAC: Kubernetes の Role-Based Access Control (RBAC) を利用して、クラスター内のアクセス制御を実施。
  • シークレット管理: AWS Secrets Manager と連携して、機密情報を安全に管理。
  • データ暗号化: コンテナイメージ、タスクデータなどは暗号化される。
  • セキュリティグループ: ネットワークアクセスをセキュリティグループで制御。

これらのセキュリティ対策により、コンテナアプリケーションとそのデータを安全に保護する。

5. 料金形態

Amazon EKS の料金は主に以下に基づきる:

  • EKS コントロールプレーン: EKS クラスターのコントロールプレーンの利用料金。
  • ワーカーノード: EC2 インスタンスの利用料金、または AWS Fargate の使用量に応じて課金。
  • ロードバランサー: ロードバランサーの利用料金、データ処理量に応じて課金。
  • データ転送: データ転送量に応じて課金。

6. よくあるアーキテクチャ・設計パターン

Amazon EKS は、様々なコンテナベースのアプリケーション開発に利用できる。一般的なパターンは以下の通りである:

  • マイクロサービスアーキテクチャ: マイクロサービスごとにコンテナをデプロイし、EKS でオーケストレーション。
  • Web アプリケーションのデプロイ: Web アプリケーションをコンテナ化し、EKS でデプロイし、ロードバランサーでトラフィックを分散。
  • バッチ処理の実行: バッチ処理ジョブをコンテナ化し、EKS で実行。
  • 機械学習ワークロードの実行: 機械学習モデルをコンテナ化し、EKS で実行。
  • API バックエンド: API バックエンドをコンテナ化し、EKS でデプロイし、API Gateway と連携。
  • ハイブリッドクラウド環境: オンプレミス環境と AWS 環境で Kubernetes クラスターを連携し、コンテナオーケストレーションを統合。

7. 設定・デプロイ手順(ハンズオン例)

  1. AWS マネジメントコンソールまたは eksctl ツールを使って、EKS クラスターを作成。
  2. ワーカーノードとして EC2 インスタンスまたは Fargate を設定。
  3. Kubernetes マニフェストファイルを作成し、デプロイするコンテナイメージ、リソースなどを定義。
  4. kubectl などのツールを使って、マニフェストファイルを適用し、アプリケーションをデプロイ。
  5. 必要に応じて、ロードバランサーを設定し、トラフィックを分散。
  6. アプリケーションにアクセスし、動作を確認。

8. 試験で問われやすいポイント

8.1 Kubernetes ベースのコンテナオーケストレーション

  • 利用: Kubernetes の API、エコシステムを利用。
  • 目的: コンテナ化されたアプリケーションの管理。
  • 試験対策: Kubernetes の基本概念、EKS での利用が問われる。

8.2 フルマネージドコントロールプレーン

  • 機能: Kubernetes のコントロールプレーンを AWS が管理。
  • 対象外: ユーザーはコントロールプレーンの管理が不要。
  • 試験対策: フルマネージドのメリット、管理範囲が問われる。

8.3 柔軟なワーカーノード構成

  • 選択肢: EC2 インスタンス、AWS Fargate。
  • 特徴: EC2 は柔軟な構成、Fargate はサーバーレス。
  • 試験対策: EC2 と Fargate の違い、利用ケースが問われる。

8.4 ロードバランシング

  • 連携サービス: ALB, NLB。
  • 目的: アプリケーションのトラフィックを分散、可用性を高める。
  • 試験対策: ロードバランサーの設定方法、利用目的が問われる。

8.5 自動スケーリング

  • 機能: Kubernetes HPA、Cluster Autoscaler を利用して、Pod やノードを自動スケーリング。
  • 目的: リソースの利用率を最適化、コストを削減。
  • 試験対策: 自動スケーリングの仕組み、設定方法が問われる。

8.6 サービスディスカバリー

  • 機能: Kubernetes のサービスディスカバリー、AWS Cloud Map との統合。
  • 目的: コンテナ化されたサービス間でお互いを検出。
  • 試験対策: サービスディスカバリーの仕組み、Cloud Map との連携が問われる。

8.7 料金体系

  • 課金対象: EKS コントロールプレーン利用料、ワーカーノード(EC2, Fargate)、ロードバランサー、データ転送量。
  • 最適化: リソース使用率の最適化、適切なワーカーノードタイプの選択がコスト最適化に有効。

8.8 類似・関連サービスとの比較

  • Amazon ECS: コンテナオーケストレーションサービス。EKS は Kubernetes をベースとしたより高度な機能を提供。
  • AWS Fargate: サーバーレスコンピューティングサービス。EKS で Fargate を利用可能。

8.9 試験で頻出となる具体的な問われ方と答え

  • Q: Amazon EKS は何をベースにしたサービスか?
  • A: オープンソースのコンテナオーケストレーションプラットフォームである Kubernetes をベースにしている。
  • Q: Amazon EKS でコントロールプレーンはどのように管理されるか?
  • A: フルマネージドで AWS が管理する。
  • Q: Amazon EKS でワーカーノードとして何が利用できるか?
  • A: EC2 インスタンスまたは AWS Fargate を利用できる。
  • Q: Amazon EKS でロードバランシングを行うには、どのようなサービスと統合するか?
  • A: アプリケーションロードバランサー(ALB)やネットワークロードバランサー(NLB)と統合する。
  • Q: Amazon EKS の料金はどのように計算されるか?
  • A: EKS コントロールプレーン利用料、ワーカーノード(EC2, Fargate)、ロードバランサー、データ転送量などに基づいて計算される。