我有在EC2实例上运行EC2任务的ESC服务。 EC2任务中的图像来自ECR uri:例如688523422345.dkr.ecr.us-west-1.amazonaws.com/image
,我注意到当我将该图像加载到EC2任务中时,我只是直接使用uri:688523422345.dkr.ecr.us-west-1.amazonaws.com/image:latest
,因为图像uri永远不会改变,我只是保持推送图像来更新它。
但是,当映像确实在ECR上更新时,在EC2实例上运行的任务和服务不会更新。我想知道为什么,并且在堆栈溢出时进行搜索,人们告诉我使用aws ecs update-service --cluster <cluster name> --service <service name> --force-new-deployment
来强制服务重新部署。但是,我只是在实例上没有足够的内存而出现错误(似乎重新部署会创建新任务,并且它会占用更多内存,不是一个好的解决方案)。
我该如何解决?
答案 0 :(得分:1)
这可能是因为您的Deployment configuration和参数:
默认情况下,minimumHealthyPercent
为100%,这意味着替换操作将首先尝试运行新任务,然后终止旧任务,这可能会导致内存不足错误。您可以将其设置为minimumHealthyPercent
设置为0,将maximumPercent
设置为100,以在创建新任务之前首先强制终止现有任务。
答案 1 :(得分:0)
尝试了很多之后,它不起作用。我发现这是因为EC2实例已经存储了某个任务的所有信息(即使已删除任务,该实例仍在运行映像)。正确的方法是重新启动实例。
我使用了aws-cli:aws ec2 reboot-instances --instance-ids <instance_id>
成功了!