在更新ECR映像后更新AWS ECS服务

时间:2020-11-07 23:30:42

标签: amazon-web-services amazon-ec2 amazon-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来强制服务重新部署。但是,我只是在实例上没有足够的内存而出现错误(似乎重新部署会创建新任务,并且它会占用更多内存,不是一个好的解决方案)。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

这可能是因为您的Deployment configuration和参数:

  • maximumPercent
  • minimumHealthyPercent

默认情况下,minimumHealthyPercent为100%,这意味着替换操作将首先尝试运行新任务,然后终止旧任务,这可能会导致内存不足错误。您可以将其设置为minimumHealthyPercent设置为0,将maximumPercent设置为100,以在创建新任务之前首先强制终止现有任务。

答案 1 :(得分:0)

尝试了很多之后,它不起作用。我发现这是因为EC2实例已经存储了某个任务的所有信息(即使已删除任务,该实例仍在运行映像)。正确的方法是重新启动实例。

我使用了aws-cli:aws ec2 reboot-instances --instance-ids <instance_id>

成功了!