AWS-ECS 中的新集群上出现“RESOURCE:MEMORY”错误

bot*_*bot 2 amazon-ec2 amazon-ecs docker-compose

我已经使用 AWS 上的 ecs-cli 通过以下命令设置了一个新集群:

配置集群: ecs-cli configure --cluster cluster_name --regionregion_name --default-launch-type EC2 --config-name config_name

使用默认配置文件:ecs-cli configure default --config-name config_name

创建集群: ecs-cli up --keypair key_name --capability-iam --size 1 --instance-type t2.micro --security-group sg_id --vpc vpc_id --subnetssubnet_id --cluster-config config_name

ECS上集群创建成功。但是,当我尝试运行 docker-compose 文件来运行 jenkins 和 jenkins 数据卷容器(已推送到 ECR)时,即使 CPU 和内存利用率为 0%,我也会收到“RESOURCE:MEMORY”错误。

将 docker compose 文件部署到集群: ecs-cli compose up --cluster-config config_id

实际结果:

WARN[0000] 正在跳过不支持的服务 YAML 选项...选项名称=networks 服务名称=jenkins WARN[0000] 正在跳过不支持的服务 YAML 选项...选项名称=networks 服务名称=jenkins_dv INFO[0000] 使用 ECS 任务定义TaskDefinition="aws-infra:4" INFO[0000] 无法运行容器原因="RESOURCE:MEMORY"

    jenkins:
      image: jenkins:latest
      cpu_shares: 50
      mem_limit: 524288000
      ports: ["8080:8080", "50000:50000"]
      volumes_from: ['jenkins_dv']
    jenkins_dv:
      image: jenkins_dv:latest
      cpu_shares: 50
      mem_limit: 524288000   
Run Code Online (Sandbox Code Playgroud)

即使我在删除 cpu_shares 和 mem_limits 后运行 docker compose 文件(因为 EC2 实例不需要),我也会收到相同的错误。由于集群是新的并且没有使用任何 CPU 或内存,因此任务应该会成功创建。我在这里做错了什么?

bot*_*bot 5

我已经找到了这个问题的解决方案。我已为两个容器分配了 500MB(以字节为单位)的内存限制。根据 AWS 文档 tc.micro 有 1GB 内存,但如果您打开实例(集群 > EC2 实例 > 容器实例)并查看内存分配,实际分配的内存略小于 1GB。我更新了我的文件,并将两个容器的内存限制设置为 250MB(以字节为单位),并且它有效。