更改已注册ec2实例

时间:2016-08-23 04:01:29

标签: amazon-ec2 amazon-ecs

我有一个Amazon EC2实例,该实例已注册到Amazon ECS集群。

我想将此实例的类型从c4.large更改为c4.8xlarge

我可以在AWS控制台中将其类型从c4.large更改为c4.8xlarge。但在改变之后,我找到了

[ERROR] Could not register module="api client" err="ClientException: Container instance type changes are not supported. Container instance XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX was previously registered as c4.large.

/var/log/ecs/ecs-agent.log.20XX-XX-XX-XX档案中打印。

是否可以更改ec2实例类型并将其重新注册到群集?

我想可能首先取消注册,然后重新注册它应该工作。但我担心这可能会导致我的AWS工作环境中出现不可逆转的情况。所以我还没有尝试过这种方法。

3 个答案:

答案 0 :(得分:6)

要解决代理与群集之间的连接问题,只需删除文件/var/lib/ecs/data/ecs_agent_data.json并重新启动docker和ecs。 之后,将在您的集群中以新的大小创建一个新的容器实例。

sudo rm /var/lib/ecs/data/ecs_agent_data.json
sudo service docker restart
sudo start ecs

然后您可以转到ecs集群控制台并注销旧的容器实例

答案 1 :(得分:2)

截至 2021 年 3 月/AMI 映像 ami-0db98e57137013b2d,the last useful answer 中提到的 /var/lib/ecs/data/ecs_agent_data.json 不存在。对我来说,在更改的实例上执行的命令是:

sudo rm /var/lib/ecs/data/agent.db
sudo service docker restart

之后,可以将容器部署到实例,而无需重新注册(AWS 自动注册了第二个新类型的 ECS 容器实例)。我确实有一个剩余的容器实例,其中包含要删除的旧实例类型的资源。

答案 2 :(得分:1)

你不能这样做。 Per their docs

The type of EC2 instance that you choose for your container instances determines the resources available in your cluster. Amazon EC2 provides different instance types, each with different CPU, memory, storage, and networking capacity that you can use to run your tasks. For more information, see Amazon EC2 Instances.

这意味着当您在实例上启动容器时,代理会收集有关该实例的大量元数据以运行它。如果你改变它,那么所有的元数据(或很多)都会以一种糟糕的方式发生变化。 CPU单元,内存等。代理知道此and will report it as an error

您应该启动新类型的新实例并将其注册到群集并让任务在其上运行。如果它是一个服务,只需终止旧实例并让它针对新实例运行。

我无法想到为什么终止你的旧实例会导致不可逆转的事情,除非它通过用户特定设置配置错误或易碎,默认情况下这不会造成任何破坏性。