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 或内存,因此任务应该会成功创建。我在这里做错了什么?
我已经找到了这个问题的解决方案。我已为两个容器分配了 500MB(以字节为单位)的内存限制。根据 AWS 文档 tc.micro 有 1GB 内存,但如果您打开实例(集群 > EC2 实例 > 容器实例)并查看内存分配,实际分配的内存略小于 1GB。我更新了我的文件,并将两个容器的内存限制设置为 250MB(以字节为单位),并且它有效。
| 归档时间: |
|
| 查看次数: |
4511 次 |
| 最近记录: |