如果我创建了一个在带有多个容器的fargate上运行的任务。忽略这样一个事实,即每个容器都应该被拆分到其任务中。例如地形代码:
resource "aws_ecs_task_definition" "citi" {
family = "myfamily"
execution_role_arn = data.aws_iam_role.this.arn
container_definitions = <<EOF
[
{
"name": "myapp1",
"image": "myapp1image",
"portMappings": [
{
"containerPort": 10001
}
]
},
{
"name": "myapp2",
"image": "myapp2image",
"portMappings": [
{
"containerPort": 10004
}
]
}
]
EOF
cpu = 512
memory = 1024
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
}
注意:没有在容器中指定cpu和内存。
- 每个容器是否应该指定其cpu/内存值作为最佳实践
- 如果它们与上面的情况不同,那么如何将cpu/内存分配给每个容器?他们得到一半的整体吗?例如,容器1得到cpu 256,内存512或者其他事情,例如,如果容器1繁忙而容器2不繁忙,则容器1最多可以的任务资源
- 如果每个容器的默认值essential都设置为true,这是否意味着如果container1停止,任务将停止,因此容器2停止
短篇小说:1-这取决于用例。如果你想为了简单而优化,你可以避免这种情况,两个以上的容器将在任务中争夺资源。如果你想优化控制,你应该配置它。2-是的(有点(。他们基本上会以均匀的权重来争夺所有的cpu/内存资源。3-是
长话短说:https://aws.amazon.com/blogs/containers/how-amazon-ecs-manages-cpu-and-memory-resources/