Amazon ec2 更改群集注册ec2实例的实例类型

Amazon ec2 更改群集注册ec2实例的实例类型,amazon-ec2,amazon-ecs,Amazon Ec2,Amazon Ecs,我有一个AmazonEC2实例,它注册到AmazonECS集群 我想将此实例的类型从c4.large更改为c4.8xlarge 我可以在AWS控制台中将其类型从c4.large更改为c4.8xlarge。但是在改变之后,我发现 [ERROR]无法注册module=“api client”err=“ClientException:不支持容器实例类型更改。容器实例XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX-xxxxxxxxxxxxxxxxxxxx之前已注册为c4。大型。 正在/v

我有一个AmazonEC2实例,它注册到AmazonECS集群

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

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

[ERROR]无法注册module=“api client”err=“ClientException:不支持容器实例类型更改。容器实例XXXXXXXX-XXXX-XXXX-XXXXXXXXXXXX-xxxxxxxxxxxxxxxxxxxx之前已注册为c4。大型。

正在
/var/log/ecs/ecs agent.log.20XX-XX-XX-XX
文件中打印

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

我想先取消注册,然后再重新注册应该可以。但我担心这可能会在我的AWS工作环境中造成不可逆转的后果。所以我还没有尝试过这种方法。

你不能这样做:


为容器实例选择的EC2实例类型决定了集群中可用的资源。Amazon EC2提供了不同的实例类型,每个实例都具有不同的CPU、内存、存储和网络容量,可用于运行任务。有关更多信息,请参阅Amazon EC2实例。

这意味着,当您在实例上启动容器时,代理会收集一组有关实例的元数据来运行它。如果您更改了它,则所有元数据(或大量元数据)都以错误的方式更改。CPU单元、内存等。代理会意识到这一点

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


我想不出任何真正的原因来解释为什么终止旧实例会导致不可逆的结果,除非它通过用户特定的设置配置错误或脆弱,默认情况下这不会导致任何破坏性的结果。

要解决代理和集群之间的连接问题,只需删除文件
/var/lib/ecs/data/ecs\u-agent即可_data.json
并重新启动docker和ecs。 之后,将在集群中创建一个具有新大小的新容器实例

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

然后您可以转到ecs群集控制台,取消注册2021年3月的旧容器实例/AMI映像AMI-0db98e57137013b2d,/var/lib/ecs/data/ecs_agent_data.json不存在。对于我来说,在更改的实例上执行的命令是:

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

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

如果aws不支持您所期望的功能,您是否与aws联系以获取此功能?嗯,是的。但是下面Icaro M.Bichir的回答中有一个解决方法,可以绕过此限制。在我的情况下,这是可行的,但我还必须这样做“aws ecs取消注册容器实例“在新连接的容器实例旁边传递仍然连接到ECS的旧容器实例的容器实例ID和集群ID。您也可以从ECS web控制台注销啊,我没有输入答案,但是我在控制台中使用了AMI-07ef275121fdb7e69,我必须使用sudo rm/var/lib/ecs/data/agent.db,然后重新启动sudo服务docker