AWS EC2を使い始めたばかりです。EC2は、私がやりたいことのほとんどを実行できるリモートコンピューターのようなものであることを理解しています。それからECSを見つけます。それはdockerを使用していることを知っていますが、これら2つの関係によって混乱しています。
ECSはEC2の単なるドッカーインストールですか?すでにEC2を持っている場合、ECSを開始します。2つのインスタンスがあるということですか?
あなたの質問
ECSはEC2の単なるドッカーインストールですか?すでにEC2を持っている場合、ECSを開始します。2つのインスタンスがあるということですか?
いいえ。AWS ECS
は、EC2
インスタンスの単なる論理グループ(クラスター)であり、ECS
のすべてのEC2
インスタンス部分は、Docker
ホストとして機能します。つまり、ECSは、それらのコンテナー(EC2
)を起動するコマンドを送信できます。既にEC2があり、ECSを起動した場合、単一のインスタンスがあります。 (AWS ECS Container Agentをインストールすることにより)EC2をECSに追加/登録すると、クラスターの一部になりますが、EC2の単一のインスタンスになります。
EC2が登録されていない(クラスターに追加された)Amazon ECSは何の役にも立ちません。
TL; DR
概要
EC2
-単なるリモート(仮想)マシンです。ECS
はElastic Container Service
を表します- コンピュータークラスター 、ECS
の基本的な定義に従ってEC2
machines/instancesのグループ化。技術的に言えば、ECS
は、EC2
インスタンスリソース(ストレージ、メモリ、CPUなど)を効率的に使用および管理するための単なる構成です。それをさらに簡素化するために、Amazon ECS
インスタンスを追加せずにEC2
を起動した場合、何の役にも立たない、つまり何もできない。 ECS
は、1つ(または複数)のEC2
インスタンスが追加された場合にのみ意味を持ちます。
ここで次に混乱するのは、containerという用語です。これは完全に仮想化されたマシンインスタンスではなく、Dockerはコンテナインスタンスの作成に使用できる技術の1つです。 。 Docker
は、マシンにインストールできるユーティリティです。これにより、Docker
ホストになり、このホストでコンテナーを作成できます(仮想マシンと同じですが、はるかに軽量です)。要約すると、ECS
はEC2インスタンスのクラスタリングに過ぎず、Docker
を使用して、これら(EC2
)ホスト上のコンテナー/インスタンス/仮想マシンをインスタンス化します。
必要なのは、ECS
を起動し、必要なだけEC2
インスタンスを登録/追加することです。 EC2インスタンスを追加/登録できます。必要なのは、EC2インスタンス/マシンで実行されているAmazon ECSコンテナエージェントです。これは、手動または特別なAMI(Amazon Machine Image)を使用して直接実行できます。 Amazon ECSコンテナエージェント。新しいEC2インスタンスの起動中に、エージェントはデフォルトのECSクラスターに自動的に登録します。
EC2
クラスター内の各インスタンス(Amazon ECS
インスタンス)で実行されているcontainer agentは、インスタンスの現在実行中のタスクとリソース使用率に関する情報をAmazon ECSに送信し、受信するたびにタスクを開始および停止しますAmazon ECSからのリクエスト。詳細については、「 Amazon ECS Container Agent 」を参照してください。設定されると、作成された各コンテナインスタンス(EC2
machine/nodeが何であれ)は、Amazon ECS
のswarmのインスタンスになります。
詳細については、このドキュメントのステップ10をお読みください。 Amazon ECSコンテナインスタンスの起動 :
コンテナインスタンスのAMIを選択します。 Amazon ECSに最適化されたAMI、またはCoreOSやUbuntuなどの別のオペレーティングシステムを選択できます。 Amazon ECSに最適化されたAMIを選択しない場合、 Amazon ECS Container Agentのインストール の手順に従う必要があります。
デフォルトでは、コンテナインスタンスはデフォルトクラスタで起動します。デフォルトではなく独自のクラスターを起動する場合は、[詳細]リストを選択し、次のスクリプトを[ユーザーデータ]フィールドに貼り付けて、your_cluster_nameをクラスターの名前に置き換えます。
#!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
または、Amazon S3にecs.configファイルがあり、コンテナインスタンスロールへのAmazon S3読み取り専用アクセスを有効にしている場合は、[詳細]リストを選択し、次のスクリプトを[ユーザーデータ]フィールドに貼り付け、your_bucket_nameをバケットを使用してAWS CLIをインストールし、起動時に設定ファイルを書き込みます。 Noteこの設定の詳細については、「Amazon S3でのコンテナインスタンス設定の保存」を参照してください。
#!/bin/bash yum install -y aws-cli aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config
さらに明確にするために、単一のEC2
インスタンスにECS
なしでコンテナーを作成できます。コンテナ化テクノロジー、つまりDocker
のいずれかをインストールし、EC2
をDocker
ホストとして設定してcreate containerコマンドを実行し、必要なだけ(またはEC2
のリソースが許可する限り)Docker
コンテナーを使用します。
EC2を使用すると、個々のインスタンスを起動して、ほとんど何でも使用できます。 ECSはコンテナサービスです。つまり、コンテナアプリケーションを起動する準備が整ったインスタンスを起動します。 2つのサービスの主な違いは、EC2では、選択した方法(手動でCMツールまたはその他の方法を使用)で各インスタンスを個別に管理する必要があることです-アプリケーションをデプロイし、サーバー間の接続を自分で維持します。 ECSでは、コンテナーアプリの展開基盤として機能するコンピューターのクラスターを起動できます。これにより、クラスター内のすべてのインスタンスを、コンテナーワークロードで使用可能な1つの大きなインスタンスとして扱うことができます。
そして、あなたの質問に答えるために-インスタンスを持たないECSクラスターを開始できますが、それでは何も実行できなくなります。 EC2インスタンスをECSクラスター内に登録すると、コンテナーをその中で実行する準備が整います。つまり、ECSとEC2の両方を1つのインスタンスのみで使用できますが、これらのサービスが構築された実際のユースケースではありません。
簡単に言うと、Elastic Container Service(ECS)はDockerコンテナーオーケストレーションサービスです。
自動スケーリングが可能な「Service」またはアドホックな「Task」として、1つ以上のDockerイメージを実行するように要求できます。
サービスとタスクは「Cluster」で実行されます。もともと、クラスターは、ECSクラスターエージェントを実行する1つ以上の事前構成済みEC2サーバーのグループでした。 Cluster Agentは、EC2サーバー上のコンテナをスケジュールします。これらのEC2サーバーはEC2インスタンスリストに表示され、通常のEC2毎分料金で課金されます。通常のEC2サーバーと同様にSSHで接続することもできます。より多くのサービスまたはタスクを実行するための容量が必要な場合、またはEC2障害に対する回復力が必要な場合は、より多くのEC2サーバーを使用します。
2017年11月頃、AWSはECS Fargateを追加しました。これで、クラスターはEC2ノードをプロビジョニングせずに「サーバーレス」で実行できます。タスクまたはサービスが動作するために必要なCPUとメモリの量を定義するだけです。つまり、EC2ではなくCPUとメモリの時間に対して支払うだけです。