容器实例可能不是真正的容器吗?
Is it possible that a container instance isn't really a container?
我阅读了 AmazonECS documentation and also this 文章,其中对每个术语进行了基本解释,包括:
Container Instance — This is just an EC2 instance that is part of an ECS Cluster and has docker and the ecs-agent running on it.
感觉有点迷糊。我认为每个 task
都是一个 container
,它在属于 ECS
集群的 EC2 instance
上运行。那么为什么 EC2 instance
会被这样调用呢?或者 EC2 instance
也是 container
而我错过了什么?
当你想到容器实例时,想到:
An EC2 instance configured to run containers (ECS tasks) by having the ECS agent and being part of an ECS cluster.
本质上,ECS 会跟踪与集群关联的 EC2 实例,包括有关它们的元数据。这意味着除了被跟踪为 EC2 实例外,它们还被跟踪为 "Container Instances"。如果您安装了 AWS CLI,请查看 aws ecs describe-container-instances
以查看有关容器实例的一些元数据。
$ aws ecs describe-container-instances --container-instance <container instance>
{
"failures": [],
"containerInstances": [
{
"status": "ACTIVE",
"registeredAt": 1442818969.168,
"registeredResources": [
{
"integerValue": 2048,
"longValue": 0,
"type": "INTEGER",
"name": "CPU",
"doubleValue": 0.0
},
{
"integerValue": 1957,
"longValue": 0,
"type": "INTEGER",
"name": "MEMORY",
"doubleValue": 0.0
},
{
"name": "PORTS",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [
"22",
"2376",
"2375",
"51678",
"51679"
],
"type": "STRINGSET",
"integerValue": 0
},
{
"name": "PORTS_UDP",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [],
"type": "STRINGSET",
"integerValue": 0
}
],
"ec2InstanceId": "i-98135490825890725",
"agentConnected": true,
"containerInstanceArn": "arn:aws:ecs:ca-central-1:23490141:container-instance/123984129047912347012340",
"pendingTasksCount": 0,
"remainingResources": [
{
"integerValue": 1923,
"longValue": 0,
"type": "INTEGER",
"name": "CPU",
"doubleValue": 0.0
},
{
"integerValue": 1925,
"longValue": 0,
"type": "INTEGER",
"name": "MEMORY",
"doubleValue": 0.0
},
{
"name": "PORTS",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [
"22",
"2376",
"2375",
"51678",
"51679"
],
"type": "STRINGSET",
"integerValue": 0
},
{
"name": "PORTS_UDP",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [],
"type": "STRINGSET",
"integerValue": 0
}
],
"version": 3197,
"attributes": [
{
"name": "com.amazonaws.ecs.capability.logging-driver.syslog"
},
{
"name": "ecs.ami-id",
"value": "ami-0f552e0a86f08b660"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.none"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.json-file"
},
{
"name": "ecs.capability.execution-role-awslogs"
},
{
"name": "ecs.vpc-id",
"value": "vpc-2309423409"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.17"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
},
{
"name": "ecs.capability.docker-plugin.local"
},
{
"name": "ecs.capability.task-eni"
},
{
"name": "ecs.capability.task-cpu-mem-limit"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.30"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.31"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.32"
},
{
"name": "ecs.capability.execution-role-ecr-pull"
},
{
"name": "ecs.capability.container-health-check"
},
{
"name": "ecs.subnet-id",
"value": "subnet-13412345"
},
{
"name": "ecs.availability-zone",
"value": "us-east-1c"
},
{
"name": "ecs.instance-type",
"value": "t3.small"
},
{
"name": "com.amazonaws.ecs.capability.task-iam-role-network-host"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.24"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.25"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.26"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.27"
},
{
"name": "com.amazonaws.ecs.capability.privileged-container"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.28"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.29"
},
{
"name": "ecs.cpu-architecture",
"value": "x86_64"
},
{
"name": "ecs.capability.cni-plugin-version",
"value": "93f43776-2018.10.0"
},
{
"name": "ecs.capability.secrets.ssm.environment-variables"
},
{
"name": "com.amazonaws.ecs.capability.ecr-auth"
},
{
"name": "ecs.capability.pid-ipc-namespace-sharing"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.20"
},
{
"name": "ecs.os-type",
"value": "linux"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.22"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.23"
},
{
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"name": "ecs.capability.private-registry-authentication.secretsmanager"
}
],
"versionInfo": {
"agentVersion": "1.22.0",
"agentHash": "26518174",
"dockerVersion": "DockerVersion: 18.06.1-ce"
},
"runningTasksCount": 1,
"attachments": []
}
]
}
但是,不,ECS 容器实例不是 AFAIK,容器本身。它们是使用 ECS 配置为 运行 容器的虚拟服务器。
我阅读了 AmazonECS documentation and also this 文章,其中对每个术语进行了基本解释,包括:
Container Instance — This is just an EC2 instance that is part of an ECS Cluster and has docker and the ecs-agent running on it.
感觉有点迷糊。我认为每个 task
都是一个 container
,它在属于 ECS
集群的 EC2 instance
上运行。那么为什么 EC2 instance
会被这样调用呢?或者 EC2 instance
也是 container
而我错过了什么?
当你想到容器实例时,想到:
An EC2 instance configured to run containers (ECS tasks) by having the ECS agent and being part of an ECS cluster.
本质上,ECS 会跟踪与集群关联的 EC2 实例,包括有关它们的元数据。这意味着除了被跟踪为 EC2 实例外,它们还被跟踪为 "Container Instances"。如果您安装了 AWS CLI,请查看 aws ecs describe-container-instances
以查看有关容器实例的一些元数据。
$ aws ecs describe-container-instances --container-instance <container instance>
{
"failures": [],
"containerInstances": [
{
"status": "ACTIVE",
"registeredAt": 1442818969.168,
"registeredResources": [
{
"integerValue": 2048,
"longValue": 0,
"type": "INTEGER",
"name": "CPU",
"doubleValue": 0.0
},
{
"integerValue": 1957,
"longValue": 0,
"type": "INTEGER",
"name": "MEMORY",
"doubleValue": 0.0
},
{
"name": "PORTS",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [
"22",
"2376",
"2375",
"51678",
"51679"
],
"type": "STRINGSET",
"integerValue": 0
},
{
"name": "PORTS_UDP",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [],
"type": "STRINGSET",
"integerValue": 0
}
],
"ec2InstanceId": "i-98135490825890725",
"agentConnected": true,
"containerInstanceArn": "arn:aws:ecs:ca-central-1:23490141:container-instance/123984129047912347012340",
"pendingTasksCount": 0,
"remainingResources": [
{
"integerValue": 1923,
"longValue": 0,
"type": "INTEGER",
"name": "CPU",
"doubleValue": 0.0
},
{
"integerValue": 1925,
"longValue": 0,
"type": "INTEGER",
"name": "MEMORY",
"doubleValue": 0.0
},
{
"name": "PORTS",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [
"22",
"2376",
"2375",
"51678",
"51679"
],
"type": "STRINGSET",
"integerValue": 0
},
{
"name": "PORTS_UDP",
"longValue": 0,
"doubleValue": 0.0,
"stringSetValue": [],
"type": "STRINGSET",
"integerValue": 0
}
],
"version": 3197,
"attributes": [
{
"name": "com.amazonaws.ecs.capability.logging-driver.syslog"
},
{
"name": "ecs.ami-id",
"value": "ami-0f552e0a86f08b660"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.none"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.json-file"
},
{
"name": "ecs.capability.execution-role-awslogs"
},
{
"name": "ecs.vpc-id",
"value": "vpc-2309423409"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.17"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
},
{
"name": "ecs.capability.docker-plugin.local"
},
{
"name": "ecs.capability.task-eni"
},
{
"name": "ecs.capability.task-cpu-mem-limit"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.30"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.31"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.32"
},
{
"name": "ecs.capability.execution-role-ecr-pull"
},
{
"name": "ecs.capability.container-health-check"
},
{
"name": "ecs.subnet-id",
"value": "subnet-13412345"
},
{
"name": "ecs.availability-zone",
"value": "us-east-1c"
},
{
"name": "ecs.instance-type",
"value": "t3.small"
},
{
"name": "com.amazonaws.ecs.capability.task-iam-role-network-host"
},
{
"name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.24"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.25"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.26"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.27"
},
{
"name": "com.amazonaws.ecs.capability.privileged-container"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.28"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.29"
},
{
"name": "ecs.cpu-architecture",
"value": "x86_64"
},
{
"name": "ecs.capability.cni-plugin-version",
"value": "93f43776-2018.10.0"
},
{
"name": "ecs.capability.secrets.ssm.environment-variables"
},
{
"name": "com.amazonaws.ecs.capability.ecr-auth"
},
{
"name": "ecs.capability.pid-ipc-namespace-sharing"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.20"
},
{
"name": "ecs.os-type",
"value": "linux"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.21"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.22"
},
{
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.23"
},
{
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"name": "ecs.capability.private-registry-authentication.secretsmanager"
}
],
"versionInfo": {
"agentVersion": "1.22.0",
"agentHash": "26518174",
"dockerVersion": "DockerVersion: 18.06.1-ce"
},
"runningTasksCount": 1,
"attachments": []
}
]
}
但是,不,ECS 容器实例不是 AFAIK,容器本身。它们是使用 ECS 配置为 运行 容器的虚拟服务器。