CoreOS에서 ECS 클러스터 구축
단, 실제로 EC2의 내용에 대해서는 (2016-06-15 시점)
그렇다면 무엇이든 좋은 것입니다. ECS-optimized AMI는 이를 충족하는 권장 구성일 뿐입니다.
그렇다면 Docker 환경에 특화된 CoreOS를 사용해 봅시다.
ECS 클러스터 준비
아마도 클러스터를 만들고 싶다면 Management Console 또는 ecs-cli로 새 클러스터를 만들 수 있습니다.
또는 기존 클러스터에 노드 추가 형태로 CoreOS 인스턴스를 추가할 수 있습니다.
(없으면) IAM Role ecsInstanceRole 만들기
ecs-agent가 ECS API에 액세스하므로 인스턴스에 권한을 부여해야 합니다.
처음 튜토리얼에서 클러스터를 시작한 경우는 만들어지고 있다고 생각합니다만, 확실히 클러스터를 구축하는 경우는 이 Role 가 없기 때문에 만들 필요가 있습니다.
IAM -> Roles -> Create New Role 열기
AmazonEC2ContainerServiceforEC2Role
를 선택합니다.{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
CoreOS EC2 인스턴스 구축
최소한의 ECS 클러스터 노드에 필요한 설정입니다. 인스턴스 유형 등은 원하는대로 설정하십시오.
AMI: Running CoreOS on EC2 에서 사용 중인 리전과 update channel 에 맞는 것을 선택하세요.
IAM Role:
ecsInstanceRole
그렇지 않으면 ecs-agent가 시작되지 않습니다. User Data: 다음과 같이 ecs-agent를 Systemd Unit으로 시작합니다.
ECS_CLUSTER
는 방금 만든 or 추가할 기존 ECS 클러스터 이름이어야 합니다. #cloud-config
---
coreos:
units:
- name: docker-tcp.socket
command: start
enable: true
content: |
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=2375
Service=docker.service
BindIPv6Only=both
[Install]
WantedBy=sockets.target
- name: amazon-ecs-agent.service
command: start
runtime: true
content: |
[Unit]
Description=AWS ECS Agent
Documentation=https://docs.aws.amazon.com/AmazonECS/latest/developerguide/
Requires=docker.socket
After=docker.socket
[Service]
Environment=ECS_CLUSTER=your-cluster-name
Environment=ECS_LOGLEVEL=info
Environment=ECS_VERSION=latest
Restart=on-failure
RestartSec=30
RestartPreventExitStatus=5
SyslogIdentifier=ecs-agent
ExecStartPre=-/bin/mkdir -p /var/log/ecs /var/ecs-data /etc/ecs
ExecStartPre=-/usr/bin/touch /etc/ecs/ecs.config
ExecStartPre=-/usr/bin/docker kill ecs-agent
ExecStartPre=-/usr/bin/docker rm ecs-agent
ExecStartPre=/usr/bin/docker pull amazon/amazon-ecs-agent:${ECS_VERSION}
ExecStart=/usr/bin/docker run --name ecs-agent \
--env-file=/etc/ecs/ecs.config \
--volume=/var/run/docker.sock:/var/run/docker.sock \
--volume=/var/log/ecs:/log \
--volume=/var/ecs-data:/data \
--volume=/sys/fs/cgroup:/sys/fs/cgroup:ro \
--volume=/run/docker/execdriver/native:/var/lib/docker/execdriver/native:ro \
--publish=127.0.0.1:51678:51678 \
--env=ECS_LOGFILE=/log/ecs-agent.log \
--env=ECS_LOGLEVEL=${ECS_LOGLEVEL} \
--env=ECS_DATADIR=/data \
--env=ECS_CLUSTER=${ECS_CLUSTER} \
amazon/amazon-ecs-agent:${ECS_VERSION}
이 설정으로 직접 지어지며 Launch Configuration에 작성되어 Auto Scaling을 통해 지어집니다.
인스턴스가 클러스터에 추가되었는지 확인
ECS Management Console에서 대상 클러스터의 ECS Instances 탭을 열고 Container Instance가 추가되었는지 확인합니다.
끝입니다.
REF
Reference
이 문제에 관하여(CoreOS에서 ECS 클러스터 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dtan4/items/a98ceb194ed4854bb300텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)