【问题标题】:Update AWS ECS service after ECR image being updated更新 ECR 映像后更新 AWS ECS 服务
【发布时间】:2020-11-08 09:52:03
【问题描述】:

我有 ESC 服务,EC2 任务在 EC2 实例上运行。 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 强制重新部署服务。但是,我刚刚收到关于实例上没有足够内存的错误(似乎重新部署会创建新任务并且它会不断占用更多内存,这不是一个好的解决方案)。

我该如何解决这个问题?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-ecs


    【解决方案1】:

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

    • 最大百分比
    • 最低健康百分比

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

    【讨论】:

      【解决方案2】:

      试了很多次,还是不行。我发现是因为 EC2 实例已经存储了任务中的所有信息(即使删除了任务,该实例仍然与映像一起运行)。正确的做法是重启实例。

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

      成功了!

      【讨论】:

        猜你喜欢
        • 2020-06-05
        • 2019-01-25
        • 1970-01-01
        • 1970-01-01
        • 2016-05-30
        • 2019-08-03
        • 2019-06-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多