AWS 상의 컨테이너 서비스 소개 – ECS, EKS
2019.11.27
이종립 / Principle Enterprise Evangelist @베스핀글로벌
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
2
컨테이너가 대세라고 하는데 …
쿠버네티스 ?
컨테이너 ?
오케스트레이션 ?
AWS에서
컨테이너 활용하기
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
3
다양한 AWS의 컨테이너 서비스
Management
스케쥴링, 스케일링,
배포 전략
Hosting
컨테이너가 수행되는 곳
Amazon
ECS
Amazon
EKS
Amazon
EC2
AWS
Fargate
Image Registry
컨테이너 이미지 저장소
Amazon
ECR
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
TODAY’S QUEST
❖ 컨테이너 및 쿠버네티스 개요
❖ Amazon EKS
❖ Amazon ECS
❖ AWS Fargate
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
5
일반적인 어플리케이션의 구성
런 타임 엔진 코드
디펜던시 구성
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
6
각기 다른 서버 환경이 갖고 있는 문제점
• 수많은 애플리케이션 스택
• 각기 다른 하드웨어 배포 환경
다른 환경으로 쉽게
마이그레이션하고 실행하는 방법?
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
7
솔루션, 컨테이너
효율성 : OS kernel 공유
이식성 : 이미지 기반 배포
유연성 : 마이크로 서비스 모듈화
신속성 : 가벼운 도커 이미지
컨테이너는 코드, 런타임,
라이브러리, 패키지를 포함
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
8
클라우드 시대 이미 VM으로 충분하지 않을까 ?
Server (Host)
Host OS
Hypervisor
App 2
Guest OS Guest OS Guest OS
Bins/Libs Bins/Libs Bins/Libs
App 1
App 2
App 3
VM
Server (Host)
Host OS
Docker
Bins/Libs Bins/Libs Bins/Libs
App 1 App 2 App 3
Container
Hypervisor
Guest OS
Docker
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
9
늘어나는 컨테이너를 어떻게 관리할까? → 컨테이너 오케스트레이션의 필요
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
10
컨테이너 오케스트레이션(Orchestration)
myGameJob: {
Cpu: 10
Mem: 256
}
오케스트레이터
스케쥴링
“myGameJob”을 실행해 줘
“myGameJob”을 3개 확실히 실행해 줘
“myGameJob”을 2개~10개 적당히 실행해 줘
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
11
쿠버네티스 이해 - 파드(Pods)
쿠버네티스 기본 실행 단위로 하나 이상의 컨테이너로 구성
파드 내 공유자원:
• 저장소
• 네트워크 주소
IP
Container A
Container B
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
12
쿠버네티스 이해 - 디플로이먼트(Deployments)
• 파드의 개수를 보장
• 파드의 위치를 자동으로 결정
• 개선 사항이 있을 경우 자동 업데이트
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
13
쿠버네티스 이해 - 서비스(Services)
IP
IP
IP
Service
IP
파드들을 묶어서 트래픽을 받을 수 있게 해주는 것
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
14
쿠버네티스 이해 - N개의 컨테이너를 띄운다면
디플로이먼트를 정의하고
리플리카(replicas)를 3으로 설정 Host 1
Host 2
Host 3
deploymentkubectl
rep = 3
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
15
쿠버네티스 이해 - 더 많은 성능을 필요로 할 때 : Scale Out
더 많은 컨테이너가 필요하면
리플리카셋을 업데이트 Host 1
Host 2
Host 3
deploymentkubectl
rep = 5
증가된 수 만큼의 새 파드들이
클러스터에서 실행
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
16
쿠버네티스 이해 - 비정상 종료 상황 발생 시
컨테이너, 혹은 호스트가 다운 되더라도
Host 1
Host 2
Host 3
deploymentkubectl
새로운 파드를 실행시켜 파드 갯수를 유지
rep = 5
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
TODAY’S QUEST
❖ 컨테이너 및 쿠버네티스 개요
❖ Amazon EKS
❖ Amazon ECS
❖ AWS Fargate
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
18
쿠버네티스가 가장 많이 실행되는 클라우드는 ?
57% Kubernetes workloads are
running on AWS
—CNCF Survey
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
19
Kubernetes on AWS – Amazon EKS(Elastic Kubernetes Service)
관리형 쿠버네티스
높은 가용성
자동 버전
업데이트
다른 AWS
서비스와 연동
Etcd
Master
관리형
컨트롤 플레인
CloudTrail,
CloudWatch, ELB,
IAM, VPC, PrivateLink
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
20
EKS 아키텍처
mycluster.eks.amazonaws.com
EKS 워커 노드
Kubectl
AZ 1 AZ 2 AZ 3
Your AWS account
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
21
마스터 노드
API
server
Cloud
controller
Controller
manager
Scheduler Add-onsKubeDNS
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
22
마스터 노드 관리
가용영역 1
마스터 노드 마스터 노드
가용영역 2 가용영역 3
마스터 노드
워커 노드 워커 노드 워커 노드
고객 관리 VPC
AWS 관리 VPC
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
23
IAM 인증
Kubectl
3) Authorizes AWS Identity with RBAC
K8s API
1) Passes AWS Identity
2) Verifies AWS Identity
4) K8s action
allowed/denied
AWS Auth
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
24
EKS 버전 업데이트
컨트롤 플레인은 AWS에서 자동 업데이트
데이터 플레인은 사용자가 직접 업데이트
① 새 버전의 워커 노드 준비
② 구 워커 노드에서 새 파드 수행 정지
③ 구 워커 노드의 파드를 새 워커 노드로 이동
④ 구 워커 노드 제거
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
25
EKS 최적화 AMI 제공
• EKS 최적화 AMI(Amazon Machine Image)
• GPU 사용 가능한 AMI
• 이 외 커스텀 최적화 AMI 빌드 스크립트도 제공
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
26
컨테이너 서비스 로드맵(EKS, ECS, Fargate)
https://github.com/aws/containers-roadmap
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
TODAY’S QUEST
❖ 컨테이너 및 쿠버네티스 개요
❖ Amazon EKS
❖ Amazon ECS
❖ AWS Fargate
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
28
Amazon ECS(Elastic Container Service) 전체 구조
EC2 INSTANCES
LOAD
BALANCER
Internet
ECS
AGENT
TASK
Container
TASK
Container
ECS
AGENT
TASK
Container
TASK
Container
AGENT COMMUNICATION
SERVICE
Amazon ECS
API
CLUSTER MANAGEMENT
ENGINE
KEY/VALUE STORE
ECS
AGENT
TASK
Container
TASK
Container
LOAD
BALANCER
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
29
Amazon ECS : 클러스터(Cluster)
EC2 INSTANCES
LOAD
BALANCER
Internet
ECS
AGENT
TASK
Container
TASK
Container
ECS
AGENT
TASK
Container
TASK
Container
AGENT COMMUNICATION
SERVICE
Amazon ECS
API
CLUSTER MANAGEMENT
ENGINE
KEY/VALUE STORE
ECS
AGENT
TASK
Container
TASK
Container
LOAD
BALANCER
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
30
Amazon ECS : 작업(Task)
EC2 INSTANCES
LOAD
BALANCER
Internet
ECS
AGENT
TASK
Container
TASK
Container
ECS
AGENT
TASK
Container
TASK
Container
AGENT COMMUNICATION
SERVICE
Amazon ECS
API
CLUSTER MANAGEMENT
ENGINE
KEY/VALUE STORE
ECS
AGENT
TASK
Container
TASK
Container
LOAD
BALANCER
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
31
Amazon ECS : 작업(Task)
Data
Volume
Containers
Deploy
EC2
instance
Volume definitions
Container definitions
ECS 클러스터에서 배포되는 컨테이너의 최소 단위
작업 정의 내용을 기반으로 배포
한 작업 안의 컨테이너들은 모두 같은 호스트 EC2에 배포 {
"family": “scorekeep",
"containerDefinitions": [
{
"name":“scorekeep-frontend",
"image":"xxx.dkr.ecr.us-east-
1.amazonaws.com/fe"
},
{
"name":“scorekeep-api",
"image":"xxx.dkr.ecr.us-east-
1.amazonaws.com/api"
}
]
}
Task Definition – scorekeep:10
scorekeep-frontend
scorekeep-api
Task
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
32
Amazon ECS : 서비스(Service)
EC2 INSTANCES
LOAD
BALANCER
Internet
ECS
AGENT
TASK
Container
TASK
Container
ECS
AGENT
TASK
Container
TASK
Container
AGENT COMMUNICATION
SERVICE
Amazon ECS
API
CLUSTER MANAGEMENT
ENGINE
KEY/VALUE STORE
ECS
AGENT
TASK
Container
TASK
Container
LOAD
BALANCER
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
33
Amazon ECS : 서비스(Service)
• 설정한 작업 수 자동 유지 및 복구
• 서비스 업데이트 시 blue/green 배포 가능
• ALB을 통해 효율적인 부하 분산
• 서비스 오토스케일링 설정 가능
Service
Application
Load Balancing
서비스
오토스케일링
작업
서비스
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
34
서비스 Blue/Green 배포
Task DesiredCount = 4, MinimumHealthyPercent = 100%, MaximumPercent =200%
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
35
작업 배치 전략
Binpacking Spread Affinity Distinct Instance
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
36
작업 배치 전략
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
37
IAM Task Role(역할) – 필요한 권한만 부여
AWS IAM
Amazon
DynamoDB
S3
AWS IAM
DynamoDBRole
S3Role
Amazon
ECS
IAM Task
Role
Identity
Access
Management
(IAM)
ECS Task
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
38
CloudWatch Logs에 작업 로그 저장
CloudWatch Logs Amazon S3
Amazon Kinesis
AWS Lambda
Amazon ElasticSearch
Amazon ECS Store
Stream
Process
Search
CloudWatch Logs
CloudWatch Logs
CloudWatch Logs
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
39
CloudWatch에서 사용 가능한 ECS 지표(Metrics)
2 Dimensions
• ClusterName
• ServiceName
4 metrics
• CPUReservation
• MemoryReservation
• CPUUtilization
• MemoryUtilization
Container
Instance
…
Cluster
Task
definition
Task
Service
CloudWatch
ECS Metrics
CloudWatch
EC2 Metrics
Container
Instance
Container
Instance
• ECS 지표 외에
EC2 지표도 활용
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
40
(EC2 기반) ECS Cluster – Auto Scaling
Event: Per cluster CPU, memory
reservation, or usage
New services
ECS
ECS cluster
CloudWatch
Developers
CloudWatch event
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
41
서비스 – Auto Scaling
CPUTraffic
DesiredCount
Time
100%
0%
50%
10%
20%
30%
40%
60%
70%
80%
90%
5
30
10
15
20
25
Target CPU Utilization DesiredCount
Amazon EC2
CloudWatch
Service
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
42
서비스 – Auto Scaling
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
TODAY’S QUEST
❖ 컨테이너 및 쿠버네티스 개요
❖ Amazon EKS
❖ Amazon ECS
❖ AWS Fargate
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
44
AWS Fargate
간결하고, 쉽고, 효율적인
서버리스
컨테이너!
=관리할 EC2가
전혀 없음
CPU, 메모리
사용량에 따라
과금
ECS의 기능은
그대로
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
45
Amazon ECS
Scheduling and Orchestration
Cluster Manager Placement Engine
ECS
AMI
Docker
agent
ECS
agent
EC2 Instance
ECS
AMI
Docker
agent
ECS
agent
EC2 Instance
ECS
AMI
Docker
agent
ECS
agent
EC2 Instance
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
46
Amazon ECS powered by AWS Fargate
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Scheduling and Orchestration
Cluster Manager Placement Engine
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
47
Task의 CPU와 메모리 용량 범위
CPU Memory
256 (.25 vCPU) 512MB, 1GB, 2GB
512 (.5 vCPU) 1GB to 4GB
1024 (1 vCPU) 2GB to 8GB
2048 (2 vCPU) 4GB to 16GB
4096 (4 vCPU) 8GB to 30GB
총 50가지 유연한 구성 옵션
USD
용량 초 분 시간 하루 한달(30일)
1 vCPU 0.00001406 0.0008 0.051 1.214784 36.44352
1 GB Mem0.00000353 0.0002 0.013 0.304992 9.14976
0.00001759 0.0011 0.063 1.519776 45.59328
CPU와 메모리 기준 초당 과금
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
48
Fargate 작업 스토리지
계층 스토리지(Layer Storage Space) :
• 10 GB의 Docker 계층 스토리지
휘발성 스토리지 제공
볼륨 마운트를 위한 스토리지:
• 작업 당 4 GB 의 볼륨 스토리지
• 작업 내 모든 컨테이너에서 공유 가능
Image Layers
Writable Layer
Image Layers
Writable Layer
Container 1 Container 2
10 GB per Task
Container 1 Container 2
4 GB Volume Storage
mount
/var/container1/data /var/container2/data
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
49
EC2와 Fargate의 하이브리드 구성도 가능
ECS Instance ECS Instance ECS Instance ECS InstanceECS Instance ECS Instance
EC2
FARGATE
Notifications
Amazon ECS CLUSTER
Availability Zone #1 Availability Zone #2 Availability Zone #3
Subnet 2
172.31.2.0/24
Subnet 1
172.31.1.0/24
Subnet 3
172.31.3.0/24
Web
Shopping
Cart
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
50
요약
• 컨테이너는 경량성과 유연성을 기반으로 마이크로 서비스 아키텍처에 효율적
• AWS는 확장성이 뛰어난 컨테이너 오케스트레이션을 위해 ECS, ECR, Fargate, EKS 제공
• AWS의 견고한 인프라와 다양한 서비스와 완벽 통합
• Amazon Code Pipeline CI/CD 통합
• CloudWatch ECS 메트릭과 사용자 지정 메트릭을 통해 ECS 클러스터, 서비스 오토 스케일링
• AWS Fargate는 EC2를 관리할 필요없는 새로운 Launch 타입
• 전체 57%의 Kubernetes 워크로드가 AWS 환경에서 실행 중
• EKS는 Kubernetes 인증, 마스터 관리형, 다양한 오픈 소스 플러그인과 통합
Copyright © 2019 BESPIN GLOBAL, Inc. All rights reserved
http://www.bespinglobal.com
51
Demo
1. ECR에 Docker Image push
① Docker image 생성을 위해 Cloud9 시작
② Cloud9 시작되는 사이 ECR Repository 생성 - URI 복사
③ Cloud9에서 docker image 생성하여 ECR에 Push
2. ECR 이미지를 이용한 Task Definition(정의)
3. ECS Cluster 생성(Fargate vs EC2)
4. 서비스 구성
① 서비스 구성
② 네트워크 구성
③ (옵션) Auto Scaling → ALB 생성
5. 서비스 동작 확인
① 보안 그룹 확인, (ALB 이용 시) Target 그룹 확인
THANK YOU

AWS 상의 컨테이너 서비스 소개 ECS, EKS - 이종립 / Principle Enterprise Evangelist @베스핀글로벌

  • 1.
    AWS 상의 컨테이너서비스 소개 – ECS, EKS 2019.11.27 이종립 / Principle Enterprise Evangelist @베스핀글로벌
  • 2.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 2 컨테이너가 대세라고 하는데 … 쿠버네티스 ? 컨테이너 ? 오케스트레이션 ? AWS에서 컨테이너 활용하기
  • 3.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 3 다양한 AWS의 컨테이너 서비스 Management 스케쥴링, 스케일링, 배포 전략 Hosting 컨테이너가 수행되는 곳 Amazon ECS Amazon EKS Amazon EC2 AWS Fargate Image Registry 컨테이너 이미지 저장소 Amazon ECR
  • 4.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. TODAY’S QUEST ❖ 컨테이너 및 쿠버네티스 개요 ❖ Amazon EKS ❖ Amazon ECS ❖ AWS Fargate
  • 5.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 5 일반적인 어플리케이션의 구성 런 타임 엔진 코드 디펜던시 구성
  • 6.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 6 각기 다른 서버 환경이 갖고 있는 문제점 • 수많은 애플리케이션 스택 • 각기 다른 하드웨어 배포 환경 다른 환경으로 쉽게 마이그레이션하고 실행하는 방법?
  • 7.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 7 솔루션, 컨테이너 효율성 : OS kernel 공유 이식성 : 이미지 기반 배포 유연성 : 마이크로 서비스 모듈화 신속성 : 가벼운 도커 이미지 컨테이너는 코드, 런타임, 라이브러리, 패키지를 포함
  • 8.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 8 클라우드 시대 이미 VM으로 충분하지 않을까 ? Server (Host) Host OS Hypervisor App 2 Guest OS Guest OS Guest OS Bins/Libs Bins/Libs Bins/Libs App 1 App 2 App 3 VM Server (Host) Host OS Docker Bins/Libs Bins/Libs Bins/Libs App 1 App 2 App 3 Container Hypervisor Guest OS Docker
  • 9.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 9 늘어나는 컨테이너를 어떻게 관리할까? → 컨테이너 오케스트레이션의 필요
  • 10.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 10 컨테이너 오케스트레이션(Orchestration) myGameJob: { Cpu: 10 Mem: 256 } 오케스트레이터 스케쥴링 “myGameJob”을 실행해 줘 “myGameJob”을 3개 확실히 실행해 줘 “myGameJob”을 2개~10개 적당히 실행해 줘
  • 11.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 11 쿠버네티스 이해 - 파드(Pods) 쿠버네티스 기본 실행 단위로 하나 이상의 컨테이너로 구성 파드 내 공유자원: • 저장소 • 네트워크 주소 IP Container A Container B
  • 12.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 12 쿠버네티스 이해 - 디플로이먼트(Deployments) • 파드의 개수를 보장 • 파드의 위치를 자동으로 결정 • 개선 사항이 있을 경우 자동 업데이트
  • 13.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 13 쿠버네티스 이해 - 서비스(Services) IP IP IP Service IP 파드들을 묶어서 트래픽을 받을 수 있게 해주는 것
  • 14.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 14 쿠버네티스 이해 - N개의 컨테이너를 띄운다면 디플로이먼트를 정의하고 리플리카(replicas)를 3으로 설정 Host 1 Host 2 Host 3 deploymentkubectl rep = 3
  • 15.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 15 쿠버네티스 이해 - 더 많은 성능을 필요로 할 때 : Scale Out 더 많은 컨테이너가 필요하면 리플리카셋을 업데이트 Host 1 Host 2 Host 3 deploymentkubectl rep = 5 증가된 수 만큼의 새 파드들이 클러스터에서 실행
  • 16.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 16 쿠버네티스 이해 - 비정상 종료 상황 발생 시 컨테이너, 혹은 호스트가 다운 되더라도 Host 1 Host 2 Host 3 deploymentkubectl 새로운 파드를 실행시켜 파드 갯수를 유지 rep = 5
  • 17.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. TODAY’S QUEST ❖ 컨테이너 및 쿠버네티스 개요 ❖ Amazon EKS ❖ Amazon ECS ❖ AWS Fargate
  • 18.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 18 쿠버네티스가 가장 많이 실행되는 클라우드는 ? 57% Kubernetes workloads are running on AWS —CNCF Survey
  • 19.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 19 Kubernetes on AWS – Amazon EKS(Elastic Kubernetes Service) 관리형 쿠버네티스 높은 가용성 자동 버전 업데이트 다른 AWS 서비스와 연동 Etcd Master 관리형 컨트롤 플레인 CloudTrail, CloudWatch, ELB, IAM, VPC, PrivateLink
  • 20.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 20 EKS 아키텍처 mycluster.eks.amazonaws.com EKS 워커 노드 Kubectl AZ 1 AZ 2 AZ 3 Your AWS account
  • 21.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 21 마스터 노드 API server Cloud controller Controller manager Scheduler Add-onsKubeDNS
  • 22.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 22 마스터 노드 관리 가용영역 1 마스터 노드 마스터 노드 가용영역 2 가용영역 3 마스터 노드 워커 노드 워커 노드 워커 노드 고객 관리 VPC AWS 관리 VPC
  • 23.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 23 IAM 인증 Kubectl 3) Authorizes AWS Identity with RBAC K8s API 1) Passes AWS Identity 2) Verifies AWS Identity 4) K8s action allowed/denied AWS Auth
  • 24.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 24 EKS 버전 업데이트 컨트롤 플레인은 AWS에서 자동 업데이트 데이터 플레인은 사용자가 직접 업데이트 ① 새 버전의 워커 노드 준비 ② 구 워커 노드에서 새 파드 수행 정지 ③ 구 워커 노드의 파드를 새 워커 노드로 이동 ④ 구 워커 노드 제거
  • 25.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 25 EKS 최적화 AMI 제공 • EKS 최적화 AMI(Amazon Machine Image) • GPU 사용 가능한 AMI • 이 외 커스텀 최적화 AMI 빌드 스크립트도 제공
  • 26.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 26 컨테이너 서비스 로드맵(EKS, ECS, Fargate) https://github.com/aws/containers-roadmap
  • 27.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. TODAY’S QUEST ❖ 컨테이너 및 쿠버네티스 개요 ❖ Amazon EKS ❖ Amazon ECS ❖ AWS Fargate
  • 28.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 28 Amazon ECS(Elastic Container Service) 전체 구조 EC2 INSTANCES LOAD BALANCER Internet ECS AGENT TASK Container TASK Container ECS AGENT TASK Container TASK Container AGENT COMMUNICATION SERVICE Amazon ECS API CLUSTER MANAGEMENT ENGINE KEY/VALUE STORE ECS AGENT TASK Container TASK Container LOAD BALANCER
  • 29.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 29 Amazon ECS : 클러스터(Cluster) EC2 INSTANCES LOAD BALANCER Internet ECS AGENT TASK Container TASK Container ECS AGENT TASK Container TASK Container AGENT COMMUNICATION SERVICE Amazon ECS API CLUSTER MANAGEMENT ENGINE KEY/VALUE STORE ECS AGENT TASK Container TASK Container LOAD BALANCER
  • 30.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 30 Amazon ECS : 작업(Task) EC2 INSTANCES LOAD BALANCER Internet ECS AGENT TASK Container TASK Container ECS AGENT TASK Container TASK Container AGENT COMMUNICATION SERVICE Amazon ECS API CLUSTER MANAGEMENT ENGINE KEY/VALUE STORE ECS AGENT TASK Container TASK Container LOAD BALANCER
  • 31.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 31 Amazon ECS : 작업(Task) Data Volume Containers Deploy EC2 instance Volume definitions Container definitions ECS 클러스터에서 배포되는 컨테이너의 최소 단위 작업 정의 내용을 기반으로 배포 한 작업 안의 컨테이너들은 모두 같은 호스트 EC2에 배포 { "family": “scorekeep", "containerDefinitions": [ { "name":“scorekeep-frontend", "image":"xxx.dkr.ecr.us-east- 1.amazonaws.com/fe" }, { "name":“scorekeep-api", "image":"xxx.dkr.ecr.us-east- 1.amazonaws.com/api" } ] } Task Definition – scorekeep:10 scorekeep-frontend scorekeep-api Task
  • 32.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 32 Amazon ECS : 서비스(Service) EC2 INSTANCES LOAD BALANCER Internet ECS AGENT TASK Container TASK Container ECS AGENT TASK Container TASK Container AGENT COMMUNICATION SERVICE Amazon ECS API CLUSTER MANAGEMENT ENGINE KEY/VALUE STORE ECS AGENT TASK Container TASK Container LOAD BALANCER
  • 33.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 33 Amazon ECS : 서비스(Service) • 설정한 작업 수 자동 유지 및 복구 • 서비스 업데이트 시 blue/green 배포 가능 • ALB을 통해 효율적인 부하 분산 • 서비스 오토스케일링 설정 가능 Service Application Load Balancing 서비스 오토스케일링 작업 서비스
  • 34.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 34 서비스 Blue/Green 배포 Task DesiredCount = 4, MinimumHealthyPercent = 100%, MaximumPercent =200%
  • 35.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 35 작업 배치 전략 Binpacking Spread Affinity Distinct Instance
  • 36.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 36 작업 배치 전략
  • 37.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 37 IAM Task Role(역할) – 필요한 권한만 부여 AWS IAM Amazon DynamoDB S3 AWS IAM DynamoDBRole S3Role Amazon ECS IAM Task Role Identity Access Management (IAM) ECS Task
  • 38.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 38 CloudWatch Logs에 작업 로그 저장 CloudWatch Logs Amazon S3 Amazon Kinesis AWS Lambda Amazon ElasticSearch Amazon ECS Store Stream Process Search CloudWatch Logs CloudWatch Logs CloudWatch Logs
  • 39.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 39 CloudWatch에서 사용 가능한 ECS 지표(Metrics) 2 Dimensions • ClusterName • ServiceName 4 metrics • CPUReservation • MemoryReservation • CPUUtilization • MemoryUtilization Container Instance … Cluster Task definition Task Service CloudWatch ECS Metrics CloudWatch EC2 Metrics Container Instance Container Instance • ECS 지표 외에 EC2 지표도 활용
  • 40.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 40 (EC2 기반) ECS Cluster – Auto Scaling Event: Per cluster CPU, memory reservation, or usage New services ECS ECS cluster CloudWatch Developers CloudWatch event
  • 41.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 41 서비스 – Auto Scaling CPUTraffic DesiredCount Time 100% 0% 50% 10% 20% 30% 40% 60% 70% 80% 90% 5 30 10 15 20 25 Target CPU Utilization DesiredCount Amazon EC2 CloudWatch Service
  • 42.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 42 서비스 – Auto Scaling
  • 43.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. TODAY’S QUEST ❖ 컨테이너 및 쿠버네티스 개요 ❖ Amazon EKS ❖ Amazon ECS ❖ AWS Fargate
  • 44.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 44 AWS Fargate 간결하고, 쉽고, 효율적인 서버리스 컨테이너! =관리할 EC2가 전혀 없음 CPU, 메모리 사용량에 따라 과금 ECS의 기능은 그대로
  • 45.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 45 Amazon ECS Scheduling and Orchestration Cluster Manager Placement Engine ECS AMI Docker agent ECS agent EC2 Instance ECS AMI Docker agent ECS agent EC2 Instance ECS AMI Docker agent ECS agent EC2 Instance
  • 46.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 46 Amazon ECS powered by AWS Fargate © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Scheduling and Orchestration Cluster Manager Placement Engine
  • 47.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 47 Task의 CPU와 메모리 용량 범위 CPU Memory 256 (.25 vCPU) 512MB, 1GB, 2GB 512 (.5 vCPU) 1GB to 4GB 1024 (1 vCPU) 2GB to 8GB 2048 (2 vCPU) 4GB to 16GB 4096 (4 vCPU) 8GB to 30GB 총 50가지 유연한 구성 옵션 USD 용량 초 분 시간 하루 한달(30일) 1 vCPU 0.00001406 0.0008 0.051 1.214784 36.44352 1 GB Mem0.00000353 0.0002 0.013 0.304992 9.14976 0.00001759 0.0011 0.063 1.519776 45.59328 CPU와 메모리 기준 초당 과금
  • 48.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 48 Fargate 작업 스토리지 계층 스토리지(Layer Storage Space) : • 10 GB의 Docker 계층 스토리지 휘발성 스토리지 제공 볼륨 마운트를 위한 스토리지: • 작업 당 4 GB 의 볼륨 스토리지 • 작업 내 모든 컨테이너에서 공유 가능 Image Layers Writable Layer Image Layers Writable Layer Container 1 Container 2 10 GB per Task Container 1 Container 2 4 GB Volume Storage mount /var/container1/data /var/container2/data
  • 49.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 49 EC2와 Fargate의 하이브리드 구성도 가능 ECS Instance ECS Instance ECS Instance ECS InstanceECS Instance ECS Instance EC2 FARGATE Notifications Amazon ECS CLUSTER Availability Zone #1 Availability Zone #2 Availability Zone #3 Subnet 2 172.31.2.0/24 Subnet 1 172.31.1.0/24 Subnet 3 172.31.3.0/24 Web Shopping Cart
  • 50.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 50 요약 • 컨테이너는 경량성과 유연성을 기반으로 마이크로 서비스 아키텍처에 효율적 • AWS는 확장성이 뛰어난 컨테이너 오케스트레이션을 위해 ECS, ECR, Fargate, EKS 제공 • AWS의 견고한 인프라와 다양한 서비스와 완벽 통합 • Amazon Code Pipeline CI/CD 통합 • CloudWatch ECS 메트릭과 사용자 지정 메트릭을 통해 ECS 클러스터, 서비스 오토 스케일링 • AWS Fargate는 EC2를 관리할 필요없는 새로운 Launch 타입 • 전체 57%의 Kubernetes 워크로드가 AWS 환경에서 실행 중 • EKS는 Kubernetes 인증, 마스터 관리형, 다양한 오픈 소스 플러그인과 통합
  • 51.
    Copyright © 2019BESPIN GLOBAL, Inc. All rights reserved http://www.bespinglobal.com 51 Demo 1. ECR에 Docker Image push ① Docker image 생성을 위해 Cloud9 시작 ② Cloud9 시작되는 사이 ECR Repository 생성 - URI 복사 ③ Cloud9에서 docker image 생성하여 ECR에 Push 2. ECR 이미지를 이용한 Task Definition(정의) 3. ECS Cluster 생성(Fargate vs EC2) 4. 서비스 구성 ① 서비스 구성 ② 네트워크 구성 ③ (옵션) Auto Scaling → ALB 생성 5. 서비스 동작 확인 ① 보안 그룹 확인, (ALB 이용 시) Target 그룹 확인
  • 52.