Amazon EKS は、Kubernetes の一般的なクラスターアーキテクチャに準拠しています。詳細については、Kubernetes ドキュメントの「Kubernetes のコンポーネント
コントロールプレーン
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 には、以下のタイプのプライマリノードが用意されています。
- AWS Fargate
-
Fargate はコンテナ用のサーバーレスコンピューティングエンジンで、基盤となるインスタンスの管理が不要になります。Fargate でアプリケーションのリソースニーズを指定すると、AWS はインフラストラクチャーのプロビジョニング、スケーリング、メンテナンスを自動的に行います。このオプションは、使いやすさを優先し、インフラストラクチャの管理よりもアプリケーションの開発とデプロイに集中したいユーザーに最適です。
- Karpenter
-
Karpenter
は柔軟で高性能な Kubernetes クラスターオートスケーラーで、アプリケーションの可用性とクラスター効率の向上に役立ちます。Karpenter では、アプリケーション負荷の変化に応じて、適切なサイズのコンピューティングリソースを起動します。このオプションでは、ワークロードの要件を満たすジャストインタイムのコンピューティングリソースをプロビジョニングできます。 - マネージドノードグループ
-
マネージド型ノードグループは、Amazon EKS クラスター内の Amazon EC2 インスタンスのコレクションを管理するための自動化とカスタマイズを組み合わせたものです。AWS がノードのパッチ適用、更新、スケーリングなどのタスクを処理することで、運用面を容易にします。それと同時に、カスタム
kubelet
引数がサポートされていることで、高度な CPU およびメモリ管理ポリシーの可能性が広がります。さらに、サービスアカウントの AWS Identity and Access Management (IAM) ロールによってセキュリティを強化しながら、クラスターごとに個別のアクセス許可を設定する必要性を抑えます。 - セルフマネージド型ノード
-
セルフマネージド型ノードでは、Amazon EKS クラスター内の Amazon EC2 インスタンスを完全に制御できます。ユーザーは、ノードの管理、スケーリング、メンテナンスを担当することで、基盤となるインフラストラクチャを完全に制御できます。このオプションは、ノードをきめ細かく制御およびカスタマイズする必要があり、インフラストラクチャの管理と保守に時間を費やす準備ができているユーザーに適しています。