如何解决在更新ECR映像后更新AWS ECS服务
我有在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
来强制服务重新部署。但是,我只是在实例上没有足够的内存而出现错误(似乎重新部署会创建新任务,并且它会占用更多内存,不是一个好的解决方案)。
我该如何解决?
解决方法
这可能是因为您的Deployment configuration和参数:
- maximumPercent
- minimumHealthyPercent
默认情况下,minimumHealthyPercent
为100%,这意味着替换操作将首先尝试运行新任务,然后终止旧任务,这可能会导致内存不足错误。您可以将其设置为minimumHealthyPercent
设置为0,将maximumPercent
设置为100,以在创建新任务之前首先强制终止现有任务。
尝试了很多之后,它不起作用。我发现这是因为EC2实例已经存储了某个任务的所有信息(即使已删除任务,该实例仍在运行映像)。正确的方法是重新启动实例。
我使用了aws-cli:aws ec2 reboot-instances --instance-ids <instance_id>
成功了!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。