AWS ECS / FARGATE-服务任务正在运行,但没有容器实例

时间:2020-08-28 10:52:42

标签: amazon-web-services amazon-ec2 amazon-ecs aws-fargate

我正在尝试使用ECS / FARGATE将具有API的docker容器映像部署到AWS上,并且服务任务似乎似乎正在运行时,它没有容器实例关联,因此我无法与我的API通信。一般来说,我对AWS的经验不是很丰富,所以如果我犯了一个菜鸟错误,我会提前道歉。

我尝试过的

  1. 创建了ECR,推送了我的docker映像
  2. 创建集群
  3. 创建任务定义:
{
  "ipcMode": null,
  "executionRoleArn": "arn:...:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "dnsSearchDomains": null,
      "environmentFiles": null,
      "logConfiguration": {
        "logDriver": "awslogs",
        "secretOptions": null,
        "options": {
          "awslogs-group": "/ecs/my-task-definition",
          "awslogs-region": "eu-central-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "entryPoint": null,
      "portMappings": [
        {
          "hostPort": 5001,
          "protocol": "tcp",
          "containerPort": 5001
        }
      ],
      "command": null,
      "linuxParameters": null,
      "cpu": 0,
      "environment": [ //environmnet variables  ],
      "resourceRequirements": null,
      "ulimits": null,
      "dnsServers": null,
      "mountPoints": [],
      "workingDirectory": null,
      "secrets": null,
      "dockerSecurityOptions": null,
      "memory": null,
      "memoryReservation": null,
      "volumesFrom": [],
      "stopTimeout": null,
      "image": "<<ECR_ID>>.dkr.ecr.eu-central-1.amazonaws.com/<<CONTAINER_NAME>>:<<TAG_ID>>",
      "startTimeout": null,
      "firelensConfiguration": null,
      "dependsOn": null,
      "disableNetworking": null,
      "interactive": null,
      "healthCheck": {
        "retries": 3,
        "command": [
          "CMD-SHELL",
          "curl -f localhost:5001/status"
        ],
        "timeout": 5,
        "interval": 30,
        "startPeriod": null
      },
      "essential": true,
      "links": null,
      "hostname": null,
      "extraHosts": null,
      "pseudoTerminal": null,
      "user": null,
      "readonlyRootFilesystem": null,
      "dockerLabels": null,
      "systemControls": null,
      "privileged": null,
      "name": "<<CONTAINER_ID>>"
    }
  ],
  "placementConstraints": [],
  "memory": "2048",
  "taskRoleArn": "arn:...:role/ecsTaskExecutionRole",
  "compatibilities": [
    "EC2",
    "FARGATE"
  ],
  "taskDefinitionArn": "arn:aws:ecs:eu-central-1:893482549503:task-definition/my-task-definition:12",
  "family": "my-task-definition",
  "requiresAttributes": [
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.24"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.execution-role-awslogs"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.ecr-auth"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.task-iam-role"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.container-health-check"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.execution-role-ecr-pull"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
    },
    {
      "targetId": null,
      "targetType": null,
      "value": null,
      "name": "ecs.capability.task-eni"
    }
  ],
  "pidMode": null,
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "revision": 12,
  "status": "ACTIVE",
  "inferenceAccelerators": null,
  "proxyConfiguration": null,
  "volumes": []
}
  1. 使用任务定义创建服务。还将它连接到我的应用程序负载平衡器。

  2. 在EC2中,我添加了一个新的ecs-optimized实例,并通过执行以下操作将其连接到集群: ECS_CLUSTER=my-cluster >> /etc/ecs/ecs.config来自实例内部。

  3. 我从服务运行任务。

结果

  • 我从任务日志中看到正在运行的应用程序: Tasks logs

但是我无法从计算机上的curl得到任何答复。我正在尝试将请求发送到我的负载均衡器,甚至发送到任务提供的公共IP 地址: Task information

  • 从集群视图中,我看到正在运行的任务,其中没有容器实例

Running task with no container instance

  • 在“ ECS实例”任务中,我看到分配有没有正在运行的任务的EC2: cluster view - ECS instances task

  • 运行状况检查似乎失败,因为任务每隔几分钟停止并重新启动

我已关注此问题的多个教程,但似乎都没有解决该问题的方法。欢迎提供任何提示,如果缺少某些信息,我会很乐意添加。

0 个答案:

没有答案