Amazon EKS の機能

概要

Amazon Elastic Kubernetes Service (Amazon EKS) は、AWS およびオンプレミスでの Kubernetes の実行を容易にするマネージド Kubernetes サービスです。Kubernetes は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動的に行うためのオープンソースシステムです。Amazon EKS は Kubernetes 準拠を認定されているため、アップストリームの Kubernetes で実行される既存のアプリケーションには Amazon EKS との互換性があります。

Amazon EKS は、コンテナのスケジューリング、アプリケーションの可用性管理、クラスターデータの保存などの主要タスクを担当する Kubernetes コントロールプレーンノードの可用性とスケーラビリティを自動的に管理します。

Amazon EKS を使用すれば、Amazon Elastic Compute Cloud (Amazon EC2) と AWS Fargate の両方で Kubernetes アプリケーションを実行できます。Amazon EKS を使用すると、AWS インフラストラクチャのあらゆるパフォーマンス、スケール、信頼性、可用性とともに、AWS ネットワークサービスおよびセキュリティサービス、たとえば負荷分散のための Application Load Balancer (ALB)、ロールに基づいたアクセスコントロール (RBAC) 向けの AWS Identity and Access Management (IAM)、ポッドネットワーク向け AWS Virtual Private Cloud (VPC) サポートなどとの統合を活用できます。

コンピューターデータの写真

マネージド型 Kubernetes クラスター

Amazon EKS には、複数の AWS アベイラビリティーゾーン (AZ) 全体で動作するスケーラブルで可用性の高い Kubernetes コントロールプレーンがあります。Amazon EKS は、Kubernetes API サーバーと etcd 永続レイヤーの可用性とスケーラビリティを自動的に管理します。Amazon EKS は 3 つの AZ にわたって Kubernetes コントロールプレーンを実行し、高可用性を確保します。また、正常に作動していないコントロールプレーンノードを自動的に検出して置き換えます。

AWS Controllers for Kubernetes (ACK) では、Kubernetes 環境内から AWS のサービスを直接管理制御することができます。ACK を使用すると、AWS のサービスを利用するスケーラブルで可用性の高い Kubernetes アプリケーションを簡単に構築できます。

EKS は、Kubernetes クラスター用の統合コンソールを提供します。クラスターオペレーターとアプリケーションのデベロッパーは、EKS を単一の場所として使用して、Amazon EKS で実行されている Kubernetes アプリケーションを整理、視覚化、トラブルシューティングすることができます。EKS コンソールは AWS がホストしており、すべての EKS クラスターで自動的に利用可能になります。

EKS アドオンは、Kubernetes の運用機能を拡張するための一般的な運用ソフトウェアです。EKS を使用して、アドオンソフトウェアをインストールして最新の状態に保つことができます。Amazon EKS クラスターを開始するときに、クラスターで実行するアドオンを選択します。これには、オブザーバビリティ、ネットワーキング、自動スケーリング、AWS のサービス統合のための Kubernetes ツールが含まれます。

Amazon EKS では、1 つのコマンドでクラスターのノードを作成、更新、スケーリング、および終了できます。また、これらのノードは、コスト削減のために Amazon EC2 スポットインスタンスを活用することもできます。 マネージド型ノードグループは AWS アカウントの最新の EKS 最適化またはカスタム Amazon マシンイメージ (AMI) を使用して Amazon EC2 インスタンスを実行しますが、更新と終了はアプリケーションが使用可能な状態を維持するようにノードを適切にドレインします。

ハイブリッドデプロイ

EKS on AWS Outposts は、オンプレミスシステムに対する特に低いレイテンシーを必要とする、コンテナ化されたアプリケーションの実行に使用できます。AWS Outposts は、AWS のインフラストラクチャ、AWS のサービス、API、およびツールを、実質的にすべての接続サイトに拡張するフルマネージドサービスです。EKS on Outposts では、クラウド上でコンテナを管理するのとまったく同じように簡単にオンプレミスのコンテナを管理できます。

AWS Local Zones または AWS Wavelength で実行されているノードを EKS にアタッチすることで、エッジでの AWS マネージドインフラストラクチャの選択肢を増やすことができます。

Amazon EKS Distro は、ユーザー独自のオンプレミスのインフラストラクチャでの使用のために Amazon EKS on AWS で使用されているのと同じオープンソースの Kubernetes ソフトウェアディストリビューションをパッケージ化します。EKS Distro クラスターは、独自のツール、または Amazon EKS Anywhere を使用して管理します。

Amazon EKS Anywhere では、独自の仮想マシン (VM) やベアメタルサーバーなど、オンプレミスで Kubernetes クラスター (Amazon EKS Distro のソフトウェアを使用して構築) を簡単に作成および運用できます。EKS Anywhere を使用すると、Kubernetes クラスターを管理するための独自のツールを構築およびサポートする際の複雑さが軽減されます。EKS Anywhere は、ベアメタル、VMware vSphere、クラウド仮想マシンなどのインフラストラクチャで、クラスターの作成、管理、運用を簡素化するオートメーションツールを提供します。これには、デフォルトのログ記録、モニタリング、ネットワーク、およびストレージ構成を持つクラウド仮想マシンも含まれます。EKS Anywhere は、クラスターのインストールやライフサイクル管理、オブザーバビリティ、クラスターバックアップ、ポリシー管理など、Kubernetes を本番で実行するために必要となる追加のツールやコンポーネントを提供します。

ノードの起動と単一行の管理に eksctl を使用する

eksctl コマンドラインツールを使えば、Amazon EKS を数分で起動して実行することができます。「eksctl create cluster」コマンドを実行するだけで、EKS クラスターを作成できます。eksctl を使用すれば、ノードやアドオンの管理など、クラスターの管理と操作を簡素化できます。

Amazon EKS は、Windows ワーカーノードと Windows コンテナスケジューリングをサポートしています。EKS は、Windows ワーカーノードと Linux ワーカーノードの同時実行をサポートしているため、お客様はどちらのオペレーティングシステムでもアプリケーションの管理に同じクラスターを使用できます。

AWS Graviton2 プロセッサは、Arm ベースの EC2 インスタンスに電力を供給し、パフォーマンスと機能を大幅に向上させ、大幅なコスト削減を実現します。アプリケーションのコスト効率を改善することは、コンテナを実行する第一の目標です。両方を組み合わせると、優れた価格性能比が得られます。例えば、ワークロードテストでは、Graviton2 プロセッサベースのインスタンスタイプが、同等の x86 ベースの M5、C5、および R5 ファミリーよりも最大 40% 優れたコストパフォーマンスを実現することが実証されています。AWS Graviton2 上の Amazon EKS は、両方のサービスが利用できるリージョンの場合、一般的に利用可能です。

ネットワークとセキュリティ

Amazon EKS は、高度な機能と、AWS のサービスとテクノロジーパートナーソリューションとの統合により、Kubernetes クラスターへのセキュリティの提供を容易にします。例えば、IAM はきめ細かなアクセス制御を提供し、Amazon VPC は Kubernetes クラスターを他のお客様から隔離します。

Amazon Elastic Kubernetes Service (EKS) が IPv6 をサポートすることで、お客様は Kubernetes 上のコンテナ型アプリケーションをプライベート IPv4 アドレス空間の限界をはるかに超えてスケーリングできます。IPv6 をサポートする EKS では、ポッドにはグローバルにルーティング可能な IPv6 アドレスのみが割り当てられ、限られたプライベート IPv4 アドレス空間を消費することなく、クラスター内のアプリケーションをスケールすることができます。このグローバルにルーティング可能な IPv6 アドレスは、Amazon VPC、オンプレミスネットワーク、または公開インターネット内の任意の IPv6 エンドポイントとダイレクトに通信するために使用できます。また、EKS は、ポッドがクラスター外の IPv4 ベースのエンドポイントと通信できるようにネットワークを設定するため、組織全体にデプロイされているすべての依存サービスを IPv6 にデプロイする必要なく、Kubernetes を使用して IPv6 の利点を導入することができます。

EKS Pod Identity は、お客様が AWS サービスにアクセスするために EKS クラスターにアプリケーションをセットアップするために行う必要のある作業を簡素化します。EKS クラスター管理者は、Kubernetes アプリケーションが S3 バケット、DynamoDB テーブルなどの AWS リソースにアクセスするための認証に必要な IAM 認証情報を取得するためのワークフローを簡素化できます。EKS Pod Identity により、複数のクラスターで IAM ロールを簡単に使用できるようになり、IAM ロール間でのポリシーの再利用をサポートすることで IAM ポリシー管理が簡素化されます。

AWS Cloud Map は、クラウドリソース検出サービスです。 Cloud Map では、アプリケーションリソースのカスタム名を定義し、動的に変化するリソースの更新された場所を管理することができます。これにより、ウェブサービスで常に最新のリソースの場所が検出されるため、アプリケーションの可用性は向上します。Cloud Map では、Kubernetes サービスの起動時に内部サービスロケーションを開始および削除するたびに、それらを Cloud Map サービスレジストリに自動で伝播するオープンソースの Kubernetes コネクタである external-dns と連携します。Kubernetes ベースのサービスは、すべてのコンテナワークロードのために統合されたサービスレジストリを提供する Cloud Map 経由で検出可能です。

サービスメッシュは、アプリケーション内の各マイクロサービスにおける通信方法を標準化し、複雑なマイクロサービスアプリケーションの構築および実行を容易にします。 AWS App Mesh は、エンドーツーエンドの可視性と高可用性を実現するようにアプリケーションを設定します。Kubernetes 用の AWS App Mesh コントローラーを使用して、メッシュに接続された新しいサービスを作成し、トラフィックルーティングを定義し、暗号化などのセキュリティ機能を設定できます。さらに、App Mesh では、サービスを検出するために Kubernetes ポッドを AWS Cloud Map に自動的に登録できます。App Mesh は、提供された Envoy ブートストラップ構成で指定されたエンドポイントに、メトリクス、ログ、およびトレースをエクスポートします。App Mesh では、メッシュ対応のマイクロサービス間で、トラフィックルーティング、回路遮断、再試行などの制御を設定するための API を使用できます。 App Mesh Mutual TLS は、サービス間でのリクエストがプライベートネットワーク内で発生した場合でも、それらすべてを暗号化するのに役立ちます。さらに、認証コントロールを追加することで、許可したサービス間でのみ通信が可能になります。

EKS クラスターは Amazon VPC で実行されるため、独自の VPC セキュリティグループとネットワークアクセスコントロールリスト (ACL) を使用できます。他のお客様とコンピューティングリソースを共有しないため、安全で信頼性の高いアプリケーションを構築するための高レベルの分離性が得られます。EKS は Amazon VPC のコンテナネットワークインターフェイス (CNI) を使用して、Kubernetes ポッドが VPC から IP アドレスを受け取ることを可能にします。 Amazon EKS は Project Calico ネットワークポリシーエンジンと連動して、Kubernetes ワークロードのためのきめ細かなネットワークポリシーを提供します。Kubernetes ネットワークポリシー API を使用して、サービス単位でアクセスを制御できます。

Amazon EKS は Kubernetes RBAC (Kubernetes 用ネイティブロールベースのアクセスコントロールシステム) を AWS IAM に統合します。RBAC ロールを各 IAM エンティティにを直接割り当てることができるため、Kubernetes コントロールプレーンノードへのきめ細かなアクセス許可の制御が可能になります。

Amazon EKS で Kubernetes サービスアカウントに IAM アクセス許可を割り当てることができます。IAM ロールは、他のコンテナ化されたサービス、データベースやシークレットなどのクラスター外部の AWS リソース、または AWS 外で実行されているサードパーティーのサービスやアプリケーションへのアクセスを制御できます。これにより、クラスターの可用性とコストの最適化を簡素化しつつ、複数の同じ場所に配置されたサービスを使用してクラスターを実行する際に、きめ細かなポッドレベルのアクセス制御が可能になります。

Amazon EKS は、規制された機密性の高いアプリケーション向けの複数のコンプライアンスプログラムによって認定されています。Amazon EKS は、SOCPCIISOFedRAMP-ModerateIRAPC5K-ISMSENS HighOSPAR、および HITRUST CSF に準拠しており、HIPAA 対応サービスでもあります。

EKS は、承認されたイメージとアーティファクトを使用したコンテナワークロードのデプロイを可能にする Amazon コンテナイメージ署名検証との互換性を備えています。Amazon EKS クラスターにイメージをデプロイする前に、フルマネージド署名ソリューションである AWS Signer によって署名されたイメージ (またはソフトウェア部品表などの他の OCI アーティファクト) を検証できます。AWS はオープンソースベースのイメージ署名および検証ソリューションをサポートしているため、レジストリに保存されているアーティファクトに簡単に署名し、オープンソースの Policy-as-Code またはアドミッションコントローラを使用して検証できます。

ロードバランシング

Amazon EKS は、Application Load Balancer (ALB)、Network Load Balancer (NLB)、および Classic Load Balancer を含む Elastic Load Balancing の使用をサポートしています。

Amazon EKS クラスターでは、標準の Kuberentes クラスターロードバランシング、または Kubernetes をサポートする任意のイングレスコントローラーを実行することができます。

サーバーレスのコンピューティング

EKS では、サーバーレスコンピューティングを使用して Kubernetes アプリケーションを実行するための AWS Fargate がサポートされています。Fargate ではサーバーのプロビジョニングと管理が不要となり、アプリケーションごとにリソースを指定してその分のみ料金を支払うことができます。また、設計段階からのアプリケーション分離によりセキュリティを強化できます。

コストモニタリング

Amazon EKS は、クラスターレベルと個々のアプリケーションレベルの両方で、Kubernetes の使用に関連するコストを理解するプロセスを簡素化します。

Amazon EKS は、クラスターに参加するすべての EC2 インスタンスに、AWS コスト配分タグを自動的に追加します。これにより、クラスターレベルのコストのインサイトを得るために、組織全体でカスタムタギングポリシーを実施する必要がなくなります。AWS 請求コンソールで EKS クラスター名のコスト配分タグを有効にすると、AWS Cost and Usage レポート使用して EKS クラスターに関連する EC2 コストを追跡できるようになります。

Amazon EKS は、ポッド、ノード、ネームスペース、ラベルなどの Kubernetes リソースごとに分類されたコストをモニタリングできる Kubecost をサポートしています。Kubernetes プラットフォームの管理者や財務のリーダーは、Kubecost を使用して Amazon EKS の関連料金の内訳を可視化し、コストを配分し、アプリケーションチームなどの組織単位にチャージバックすることができます。社内のチームやビジネスユニットに対して、実際の AWS 請求に基づく透明で正確なコストデータを提供し、インフラストラクチャ環境やクラスター内の使用パターンに基づいて、コスト最適化のためのカスタマイズされたレコメンデーションを得ることができます。

ログ記録

Amazon EKS は AWS CloudTrail と統合して、監査履歴を含む EKS 管理オペレーションについての可視性を提供します。CloudTrail を用いると Amazon EKS API への API コールを見ることができます。また、Amazon EKS は、分析、デバッグ、および監査のために、Kubernetes コントロールプレーンログを Amazon CloudWatch に配信します。

認証済み準拠性

Amazon EKS では、アップストリーム版の Kubernetes が実行されており、Kubernetes への準拠性が認証されていますので、Kubernetes コミュニティで提供されている既存のプラグインやツールがすべて利用可能です。Amazon EKS で動作するアプリケーションは、オンプレミスのデータセンターで実行されているかパブリッククラウドで実行されているかにかかわらず、標準的な Kubernetes 環境で動作しているアプリケーションと完全に互換性があります。これは、コードをリファクタリングすることなく、標準的な Kubernetes アプリケーションならどれでも Amazon EKS に簡単に移行できることを意味します。

マネージド型クラスターの更新

Amazon EKS では、更新プロセスを管理することなく、実行中のクラスターを最新の Kubernetes バージョンに簡単にアップデートできます。Kubernetes バージョンのアップデートはインプレースで実行されるため、新規クラスターの作成やアプリケーションの新規クラスターへの移行の必要もありません。

Kubernetes の新バージョンは Amazon EKS での使用向けにリリースされ検証されています。3 種類の Kubernetes の安定バージョンが更新プロセスの一部として常にサポートされています。SDK、CLI、または AWS コンソールを介して、新しいバージョンのインストールを開始し、飛行中のアップデートステータスを確認することができます。

アドバンストワークロードサポート

Amazon EKS は最適化された Amazon マシンイメージ (AMI) を提供します。これには、GPU 対応の P2P3 Amazon EC2 インスタンス向けに設定された NVIDIA ドライバーも含まれています。これにより、Amazon EKS を使用して、機械学習 (ML)、Kubeflow、深層学習 (DL) コンテナ、ハイパフォーマンスコンピューティング (HPC)、財務分析、ビデオトランスコーディングなどの高度なコンピューティングを行うワークロードの実行が容易になりました。

オープンソースとの互換性

Amazon EKS は Kubernetes コミュニティツールと完全な互換性があり、よく利用されている Kubernetes アドオンをサポートしています。これには、クラスター用の DNS サービスを作成する CoreDNS および Kubernetes Dashboard のウェブベースの UI と kubectl コマンドラインツールの両方が含まれ、Amazon EKS でクラスターにアクセスし管理するのに役立ちます。

詳細については、Kubernetes community tools GitHub ページをご覧ください。

EKS コネクタ

Amazon EKS では、任意の準拠した Kubernetes クラスターを AWS に接続し、Amazon EKS コンソールで視覚化することができます。オンプレミスで実行されている Amazon EKS Anywhere クラスター、Amazon Elastic Compute Cloud (Amazon EC2) でのセルフマネージドクラスター、AWS の外部で実行されている他の Kubernetes クラスターなど、任意の準拠した Kubernetes クラスターに接続できます。クラスターが実行されている場所にかかわらず、Amazon EKS コンソールを使用して、接続されているすべてのクラスターとそれらで実行されている Kubernetes リソースを表示できます。