私はシドニー地域で非常にシンプルなクラスターを作成しようとしています。
これは非常に簡単な設定です。ハードディスクを60Gに指定しました。クラスターに2つのec2インスタンスが必要です。
それらはec2パネルで期待どおりに表示されます。
ただし、ec2インスタンスはecsクラスターページに表示されません。
1)なぜそれが起こるのですか?
2)根本的な問題を見つけるために調査できるロギングはありますか?
コメントに、インスタンスにパブリックIPアドレスがないことを示しました。そのコメントから、インスタンスにもインターネットへのルートがない可能性が高いと推定しています。
ECSを使用するには、インスタンスに(少なくとも)ECSサービスエンドポイントに到達するためのルートが必要です。インターネットへのルートは インターネットゲートウェイ(IGW) 、 ネットワークアドレス変換(NAT) 、または HTTPプロキシ を経由できます。 ECSサービスエンドポイントに到達するためのルートがない場合、ECSエージェントはそれ自体をクラスターに登録できず、ECSでそれらのインスタンスを使用できません。
ecs optimized
amiを使用していますか?私はそれを行い、インスタンスをスポーンするときにユーザーデータにこれを含めます
#!/bin/bash
echo ECS_CLUSTER=your-cluster-name >> /etc/ecs/ecs.config
ボックスにsshすると、クラスターに登録され、次にecsエージェントのdockerログに表示されるはずです。
例えば。
[ec2-user@ip-10-0-X-XXX ~]$ docker logs my-ecs-agent-container-id
---snip----
2019-04-23T20:46:19Z [INFO] Registered container instance with cluster!
2019-04-23T20:46:19Z [INFO] Registration completed successfully. I am running as 'arn:aws:ecs:us-west-2:XXXXXXX:container-instance/xxxxx-yyyy-zzz-ddd-12345gdd' in cluster 'your-cluster'
---snip----
私にとっての問題は、ECSエージェントがEC2インスタンスで開始されないことでした。 /var/log/ecs/ecs-init.log
のecsエージェントログに以下のエラーが表示されていました
[INFO] Agent exited with code 5
[ERROR] agent exited with terminal exit code
記載されている指示に従って ここ を実行し、var/lib/ecs/data/ecs_agent_data.json
にあるjsonファイルを削除して、以下のコマンドを使用してECSエージェントを再起動すると、最終的に私にとってうまくいきました。
Sudo service docker restart && Sudo start ecs