Amazon EKS アーキテクチャ - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

Amazon EKS アーキテクチャ

Amazon EKS は、Kubernetes の一般的なクラスターアーキテクチャに準拠しています。詳細については、Kubernetes ドキュメントの「Kubernetes Components」を参照してください。以下のセクションでは、Amazon EKS のその他のアーキテクチャの詳細を要約しています。

コントロールプレーン

Amazon EKS では、すべてのクラスターで独自の Kubernetes コントロールプレーンが使用されます。この設計により、各クラスターのインフラストラクチャは常に分離され、クラスターや AWS アカウントの間で重複が生じることはありません。セットアップには以下が含まれます。

分散コンポーネント

コントロールプレーンは、AWS リージョン内の 3 つの AWS アベイラビリティーゾーンをまたいで、少なくとも 2 つの API サーバーインスタンスと 3 つの etcd インスタンスを配置します。

最適なパフォーマンス

Amazon EKS はコントロールプレーンインスタンスを積極的にモニタリングして調整し、ピークパフォーマンスを維持します。

レジリエンス

コントロールプレーンインスタンスに問題が生じた場合、Amazon EKS は必要に応じて別のアベイラビリティーゾーンを使用して、迅速にそのインスタンスを置き換えます。

一貫したアップタイム

複数のアベイラビリティーゾーンにまたがってクラスターを稼働させることにより、信頼性の高い API サーバーエンドポイントの可用性のサービスレベルアグリーメント (SLA) を実現しています。

Amazon EKS は Amazon Virtual Private Cloud (Amazon VPC) を使用して、単一クラスター内のコントロールプレーンコンポーネント間のトラフィックを制限します。Kubernetes のロールベースのアクセスコントロール (RBAC) ポリシーで許可されている場合を除き、クラスターコンポーネントは、他のクラスターまたは AWS アカウントからの通信を表示したり受信したりすることはできません。

コンピューティング

Amazon EKS クラスターには、コントロールプレーンに加えて、ノードと呼ばれる一連のワーカーマシンがあります。特定の要件を満たし、リソース使用率を最適化するには、適切なタイプの Amazon EKS クラスターノードを選択することが重要です。Amazon EKS には、以下のタイプのプライマリノードが用意されています。

EKS Auto Mode

EKS Auto Mode は、AWS の管理範囲をコントロールプレーンを超えてデータプレーンにまで拡張し、クラスターインフラストラクチャ管理を自動化します。コンピューティングの自動スケーリング、ネットワーク、負荷分散、DNS、ストレージ、GPU サポートといった Kubernetes のコア機能を、組み込みコンポーネントとして統合します。EKS Auto Mode は、セキュリティ機能が強化されたイミュータブル AMI を動的に使用して、ワークロードの需要に基づきノードを管理します。ポッドの中断予算を考慮しながら更新とアップグレードを自動化し、通常であればアドオン管理を必要とするマネージドコンポーネントも管理対象に含みます。このオプションは、日々の運用に AWS の専門知識を活用し、運用オーバーヘッドを最小限に抑え、インフラストラクチャ管理ではなくアプリケーション開発に集中したいユーザーに最適です。

AWSFargate

Fargate はコンテナ用のサーバーレスコンピューティングエンジンで、基盤となるインスタンスの管理が不要になります。Fargate でアプリケーションのリソースニーズを指定すると、AWS はインフラストラクチャーのプロビジョニング、スケーリング、メンテナンスを自動的に行います。このオプションは、使いやすさを優先し、インフラストラクチャの管理よりもアプリケーションの開発とデプロイに集中したいユーザーに最適です。

Karpenter

Karpenter は、アプリケーションの可用性とクラスターの効率の向上に役立つ柔軟で高性能な Kubernetes クラスターオートスケーラーです。Karpenter は、アプリケーションの負荷の変化に応じて適切なサイズのコンピューティングリソースを起動します。このオプションでは、ワークロードの要件を満たすジャストインタイムのコンピューティングリソースをプロビジョニングできます。

マネージドノードグループ

マネージド型ノードグループは、Amazon EKS クラスター内の Amazon EC2 インスタンスのコレクションを管理するための自動化とカスタマイズを組み合わせたものです。AWS がノードのパッチ適用、更新、スケーリングなどのタスクを処理することで、運用面を容易にします。それと同時に、カスタム kubelet 引数がサポートされていることで、高度な CPU およびメモリ管理ポリシーの可能性が広がります。さらに、サービスアカウントの AWS  Identity and Access Management (IAM) ロールによってセキュリティを強化しながら、クラスターごとに個別のアクセス許可を設定する必要性を抑えます。

セルフマネージド型ノード

セルフマネージド型ノードでは、Amazon EKS クラスター内の Amazon EC2 インスタンスを完全に制御できます。ユーザーは、ノードの管理、スケーリング、メンテナンスを担当することで、基盤となるインフラストラクチャを完全に制御できます。このオプションは、ノードをきめ細かく制御およびカスタマイズする必要があり、インフラストラクチャの管理と保守に時間を費やす準備ができているユーザーに適しています。

Amazon EKS Hybrid Nodes

Amazon EKS Hybrid Nodes を使用すると、オンプレミスおよびエッジインフラストラクチャを Amazon EKS クラスターのノードとして使用できます。Amazon EKS Hybrid Nodes は、Kubernetes 管理を環境間で統合し、Kubernetes コントロールプレーン管理をオンプレミスおよびエッジアプリケーションの AWS にオフロードします。

EKS 機能

Amazon EKS は、フルマネージド型のクラスター機能を提供し、AWS が所有するインフラストラクチャで、クラスターとは分離してコントローラーやその他のコンポーネントを運用しながら、クラスター内に Kubernetes API (Kubernetes Custom Resource Definitions を含む) をインストールおよび管理します。EKS は、これらの機能のパッチ適用、スケーリング、モニタリングを自動化し、それらのライフサイクルを完全に管理することで、ワークロードのオーケストレーション、AWS リソース管理などのクラスター内サービスを運用する負担を軽減します。

EKS には、以下の機能タイプがあります。

Kubernetes 用 AWS コントローラー (ACK)

AWS Controllers for Kubernetes (ACK) は、Kubernetes API を使用して AWS リソースを管理できるようにし、S3 バケット、RDS データベース、IAM ロール、およびその他の AWS リソースを Kubernetes カスタムリソースとして定義できるようにします。同じツールとワークフローを使用し、Kubernetes ワークロードと並行して AWS リソースを管理でき、S3、RDS、DynamoDB、Lambda を含む 50 以上の AWS サービスをサポートしています。

Argo CD

Argo CD は、Git リポジトリを信頼できるソースとして使用し、アプリケーションワークロード、AWS リソース、クラスター設定に対して GitOps ベースの継続的デプロイを実装します。Argo CD は、クラスターを Git リポジトリと自動的に同期してドリフトを検出し、継続的に状態を調整することで、デプロイされたアプリケーションとリソースが、バージョン管理で定義された目的の状態と一致するようにします。Argo CD を使用すると、特定のクラスター上のアプリケーションを管理することも、単一の Argo CD リソースから複数のクラスターにわたってアプリケーションをデプロイおよび管理することもでき、変更がコミットされるたびに Git リポジトリから自動的にデプロイされます。

kro (Kube Resource Orchestrator)

kro (Kube Resource Orchestrator) は、複数のリソースをより高位の抽象化に構成するカスタム Kubernetes API を作成できるようにし、プラットフォームチームが一般的なリソースの組み合わせに対して再利用可能なパターンを定義できるようにします。これにより、プラットフォームチームは適切なガードレールを備えたセルフサービス機能を提供でき、開発者は、組織の標準とベストプラクティスを維持しながら、シンプルで目的に特化した API を使用して複雑なインフラストラクチャをプロビジョニングできます。