【问题标题】:Why is ECS task failed if one container fail to start?一个容器启动失败,为什么ECS任务失败?
【发布时间】:2020-01-21 00:19:14
【问题描述】:

我正在 ECS (Fargate) 上创建一个包含 3 个容器的任务,其中两个容器是必不可少的。而且我发现如果非必要容器启动失败,整个任务都会失败。是预期的吗?

在任务定义https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html中,它说:

If the essential parameter of a container is marked as true, and that container fails or stops for any reason, all other containers that are part of the task are stopped. If the essential parameter of a container is marked as false, then its failure does not affect the rest of the containers in a task. If this parameter is omitted, a container is assumed to be essential.

我已在我的主要容器和其他容器中将 essential 设置为 true 为 false。我想知道为什么这个标志在我的 ECS 中不起作用。

我知道,在大多数情况下,人们会为每个任务创建一个容器。就我而言,我在一项任务中有多个容器。我不考虑将容器移动到单独的任务中。我问我容器中的essential 没有按预期工作。

下面是我的任务定义的截图,你可以看到第一个容器不是必需的,这意味着它的失败不应该导致任务失败。

【问题讨论】:

    标签: amazon-web-services amazon-ecs


    【解决方案1】:

    更新:

    如果你有两个容器,假设 - 集装箱 A - 容器 B

    你认为A不需要Container B,如果B宕机你不想重启A,你只需要设置

        "essential": false,
    

    在 B 容器任务定义中。

    ECS agent 1.36.2 为我工作

    在单个任务定义的情况下,这是 ECS 的预期行为,因为所有任务共享相同的任务定义,因此您可以扩大或缩小一个容器,由于某种原因,所有容器都会缩小,如果您缩小一个,所有容器将扩大规模。

    通常这是在您的容器中使用旧链接的方式,现在您有了服务发现,因此可以更好地使用服务发现并将您的容器放在单独的任务定义中。

    此外,这不是容器的建议架构。

    您的整个应用程序堆栈不需要存在于单个任务上 定义,在大多数情况下不应该。您的应用程序可以跨越 通过将相关容器组合到它们的多个任务定义中 自己的任务定义,每个代表一个组件。更多 信息,

    task_definitions

    所以问题是什么时候应该将它们放在单个任务定义中

    如果出现以下情况,您应该将多个容器放在同一个任务定义中:

    • 容器共享一个共同的生命周期(也就是说,它们应该一起启动和终止)。

    • 容器必须运行在同一个底层主机上(也就是说,一个容器在 localhost 端口上引用另一个容器)。

    • 您希望容器共享资源。

    • 您的容器共享数据卷。

    否则,您应该在单独的任务定义中定义您的容器,以便您可以单独扩展、配置和取消配置它们。

    application_architecture

    【讨论】:

    • 感谢您的回复。在我的情况下,一项任务中有多个容器。我想知道为什么 essential 标志不能按预期工作。我认为您正在回答将每个容器放在自己的任务中,这不是我的情况。
    • "在我的情况下,一项任务中有多个容器。"如果是这种情况,如果一个失败,它将完全启动。我建议将它们分开。
    • 我看到两个容器标记为真,你确认只有这两个开始了吗?或者是否存在因依赖而杀死容器的数据狗容器的硬防御?
    • 我可以肯定的是,太被标记为必不可少的真正开始很好。只有数据狗失败了。而且它们之间没有硬依赖。
    • 当datadog失败时它也杀死了另一个容器?
    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2022-12-03
    • 1970-01-01
    • 2020-02-21
    • 1970-01-01
    • 2020-06-28
    相关资源
    最近更新 更多