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

Getting "RESOURCE:MEMORY" error on a new cluster in AWS-ECS

我已经使用以下命令在 AWS 上使用 ecs-cli 设置了一个 band new 集群:

配置集群 : ecs-cli configure --cluster cluster_name --region region_name --default-launch-type EC2 --config-姓名 config_name

使用默认配置文件:ecs-cli 配置默认 --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 --subnets subnet_id --cluster-config config_name

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

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

实际结果:

WARN[0000] 正在跳过服务不支持的 YAML 选项...选项名称=网络服务名称=jenkins WARN[0000] 跳过服务不支持的 YAML 选项...选项名称=网络服务名称=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   

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

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