在 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(以字节为单位)给两个容器并且它工作。
我已经使用以下命令在 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(以字节为单位)给两个容器并且它工作。