Docker Orchestration 이란…
여러 개의 컨테이너로 하나의 서비스를 구성하는 것
18
http://svc.io:80
tcp:6380tcp:3306
http://svc.io:80
19.
Orchestration 이 필요한이유
19
Composition
여러 종류의 컨테이너로 구성된 서비스의 설정 및 연동
Replication
Scalability, Fault Tolerance, High Availability
“Write Once Run Anywhere”
같은 이미지가 Local/Cluster 에서 모두 동작할 수 있도록
Native Cluster, DockerAPI 는 매력적인 Feature
만족스럽지 않음…
Docker Orchestration API
Replication 상태 관리
Heavy Development (0.4.0 에서 많이 개선)
언젠가는 다시 검토 (하지만 지금은 아니라고 판단.)
25
Docker Swarm 일단 포기
26.
“Google Style” 클라우드서비스 관리
서비스에 적합한 Docker 클러스터를 가장 빠르게 구축
Pods, Replication Controllers, Labels, Services, …
안정성 (Ver 1.0, Google Cloud Engine)
http://stackoverflow.com/questions/26705201/whats-the-difference-between-apaches-mesos-and-googles-kubernetes 26
Kubernetes
27.
비교적 원하는 기능이“예상대로” 동작했고,
현 시점에서 가장 앞선 구현체 중 하나로 판단.
더 필요한 것들.
Docker API, Orchestration API
External Traffic (Discovery, Forwarding)
Multi-Cluster 관리
…
27
Kubernetes 선택
Build Pool 의효과
Fast Build
빌드 자원의 공유로 고성능 빌드 가능
Pre-Built
C/C++, Java, Android, node.js, …
No management
34
평균 빌드 시간 비교
VM 1core (38 sec)
VM 2core (23 sec)
BP (13 sec)
2배
3배
+ Docker Orchestration 구축 경험
컨테이너는 Stateless 해야한다.
Jenkins 의 누적 데이터를 Container 에 저장
주기적인 이미지 백업 (일 단위)
문제점:
백업이 제대로 되고 있는지 확인하기 어려움
State 변경하기 어려움 (ex. Environment Variable)
36
37.
컨테이너 데이터의 저장방법이 필요하다.
37
컨테이너 종료 시 삭제
Instant, No backup
컨테이너 종료 후에도 보관
여러 컨테이너 사이에 공유 (중복 데이터)
Label 등으로 특정 컨테이너에 바인딩
38.
Multi-Cluster 관리가 필요하다.
38
비교적이른 시점부터 Multi-Cluster 를 고려 해야…
컨테이너가 Cluster 별 설정이 필요한 경우가 생김.
Ex) Multi-IDC, Network ACL, …
ShipDock : “ShippingDocker”
Docker Test Pool
- 기반 기술과 “돌아가는 버전” 확보
Continuous Deployment
- 소스 푸쉬를 서비스에 반영
Platform As A Service 준비
- “Write Once, Run Anywhere”
40