メインコンテンツに移動

AWS での Kubernetes

オープンソースコンテナの管理およびオーケストレーション

概要

Kubernetes は、コンテナ化アプリケーションを大規模にデプロイおよび管理できるオープンソースソフトウェアです。Kubernetes では、デプロイ、メンテナンス、スケーリングのプロセスにより、Amazon Elastic Compute Cloud (EC2) コンピューティングインスタンスのクラスターを管理し、これらのインスタンスでコンテナを実行します。Kubernetes では、同じツールセットを使用して、オンプレミスやクラウド上で、すべてのタイプのコンテナ化アプリケーションを実行できます。

AWS では、スケーラブルで可用性の高い仮想マシンインフラストラクチャ、コミュニティによってサポートされたサービス統合、Amazon Elastic Kubernetes Service (EKS) (Kubernetes 準拠の認定を受けているマネージドサービス) により、クラウドで簡単に Kubernetes を実行できます。

Missing alt text value

Kubernetes の仕組み

Kubernetes では、利用可能なコンピューティングリソースおよび各コンテナのリソース要件に基づいて、コンピューティングインスタンスのクラスターを管理し、クラスター上で実行するコンテナをスケジュールします。コンテナはポッドという論理グループ内で実行され、ユーザーは 1 つまたは複数のコンテナをまとめて 1 つのポッドとして実行およびスケーリングできます。

Kubernetes コントロールプレーンソフトウェアでは、使用率またはユーザー定義のその他のメトリクスに基づいて、ポッドをいつどこで実行するかの判断、トラフィックルーティングの管理、ポッドのスケーリングが実施されます。Kubernetes は、リソース要件に基づいてクラスターでポッドを自動的に開始します。ポッドまたはポッドが実行中のインスタンスに障害が発生した場合は、ポッドを自動的に再開します。各ポッドには IP アドレスと単一の DNS 名が割り当てられており、Kubernetes ではこれを利用して、サービス間およびサービスと外部トラフィック間を接続します。

Kubernetes を利用すべき理由

Kubernetes はオープンソースプロジェクトであるため、Kubernetes を使用すれば、運用ツールの変更は不要で、どこからでもコンテナ化アプリケーションを実行できます。Kubernetes は、大規模なボランティアのコミュニティによって保守されており、常に改善されています。さらに、他の多くのオープンソースプロジェクトやベンダーによって、アプリケーションアーキテクチャを改善および拡張できる Kubernetes 互換ソフトウェアが作成および保守されています。

    Kubernetes では、複雑なコンテナ化アプリケーションを定義し、サーバーのクラスター全体で大規模に実行できます。

    Kubernetes では、同じ運用ツールを使用し、コンテナ化アプリケーションをローカルの開発マシンからクラウドの本番デプロイにシームレスに移行させることができます。

    スケーラブルで可用性の高い Kubernetes クラスターを AWS で実行しながら、オンプレミスで実行している Kubernetes のデプロイと完全な互換性を保つことができます。

    オープンソースプロジェクトとして、Kubernetes に新機能を追加することは容易です。デベロッパーや企業の大規模なコミュニティによって、Kubernetes のユーザーに役立つ拡張機能、統合機能、プラグイン機能が作成されています。

AWS で Kubernetes を実行

AWS では、簡単に Kubernetes を実行できます。 Amazon EC2 を使用して自分で Kubernetes インフラストラクチャを管理するか、Amazon EKS を使用して自動的にプロビジョニングされた、マネージド Kubernetes コントロールプレーンを取得するかを選ぶことができます。どちらにしても、Amazon 仮想プライベートクラウド (VPC)、AWS Identity and Access Management (IAM)、サービス検出などの AWS のサービスや、AWS のセキュリティ、スケーラビリティ、高可用性に対して、コミュニティによってサポートされた強力な統合が得られます。

Amazon EC2 の利用をご検討ください

Kubernetes デプロイを完全に管理したい場合強力なインスタンスタイプを選択し、Kubernetes をプロビジョニングおよび実行する。

詳細

Amazon EKS の利用をご検討ください

マスターインスタンスおよび etcd のプロビジョニングや管理を行うことなく、Kubernetes を実行したい場合。

詳細

Amazon ECR の利用をご検討ください

コンテナイメージの保存、暗号化、管理を行って迅速にデプロイしたい場合。

詳細

Kubernetes に関するよくある質問

すべて開く

    Kubernetes クラスターは、コンテナを実行する EC2 コンピューティングインスタンスの論理グループです。クラスターは、コントロールプレーン (コンテナが実行される方法、時間、場所を管理するインスタンス) およびデータプレーン (コンテナが実行されるインスタンス) で構成されます。Kubernetes でコンテナやサービスを実行するには、その前にクラスターを定義する必要があります。

    Kubernetes ノードは、Kubernetes クラスターの一部である単一のコンピューティングインスタンス (仮想マシン) です。インスタンスには、マスターとワーカーの 2 種類があります。マスターは、Kubernetes API サーバーをホストし、コンテナが実行される方法、時間、場所を管理します。ワーカーは、実際にコンテナが実行され、データが処理されるコンピューティングインスタンスです。

    Kubernetes ポッドは、Kubernetes がコンテナをコンピューティングインスタンスで実行する手段です。これには、コンテナと、実行方法、ネットワーク、ストレージに関する仕様が含まれます。ポッドは単一のコンテナの場合と、常に一緒に実行される複数のコンテナの場合があります。いつも単一のコンテナを実行する場合、ポッドは実行中のコンテナと考えることができます。

    etcd は、マシンの分散クラスター全体でデータを保存および共有できる分散キーバリューストアです。Kubernetes では etcd を使用してクラスターに関するデータを保存し、Kubernetes コントロールプレーン全体で共有できます。

    AWS では、簡単に Kubernetes を実行できます。Cloud Native Computing Federation (CNCF) によると、AWS はクラウドで Kubernetes を実行しているお客様が最も多く、Kubernetes のデプロイのほとんどが AWS で実行されています。AWS で簡単に Kubernetes を実行できるように、AWS は Kubernetes コミュニティと協力し、積極的に貢献しています。

    AWS では、Kubernetes コントロールプレーンのインストールや運用が不要で、AWS で簡単に Kubernetes を実行できるマネージドサービス、Amazon Elastic Kubernetes Service (EKS) が提供されています。

    AWS で Kubernetes を使用する方法は主に 2 つあります。Amazon EC2 仮想マシンインスタンスにおいて自分で実行する方法と、Amazon EKS サービスを使用する方法です。EC2 で Kubernetes を自分で実行する方法の詳細については、当社の Github ワークショップを参照してください。Amazon EKS を使用する方法の詳細については、製品ページを参照してください。