Kubernetes, Mesos DC/OS, Docker(Swarm) 비교
Mesos DC/OS 상세 자료
·
트위터, AirBnB 에서 사용
·
MS Azure 에서 Managed 서비스 제공 ==> Azure Container Service
·
DC/OS 란?
o
랩탑 컴퓨터를 쓰면서 어떤 어플리케이션이 어떤 코어에서 실행될지 관리한 적이 있는가?
§
어플리케이션이 실행될 코어를 스케줄링하는 것은 커널이 할 일이다
§
마찬가지로, 컨테이너가 실행될 host 머신을 선택하는 것은 오케스트레이터(DC/OS)가 할 일이다
o
DC/OS는 싱글 컴퓨터 OS가 그런 것처럼 다양한 문제를 해결하기위한 다양한 도구를 포함한다,
o
GUI나 CLI가 제공되지 않는 랩탑을 써본적이 있는가?
§
수백대의 host 머신을 ssh 접속으로 관리하는 것은 불편하다
§
DC 전체를 조감/관리할 수 있는 UI가 필요하다
§
어떤 어플리케이션이 어느 host 에서 실행되는지 한눈에 볼 수 있는 UI 가 필요하다
o Service Discovery를 위한 DNS 도 필요하다
o
이 모든 서비스들을 하나로 번들링한 패키지가 필요하다 ==> DC/OS!
·
DC/OS = Mesos + Marathon +
Chronos
o
Mesos는 데이터센터를 위한 분산 시스템 커널
o
Marathon은 작업(컨테이너) 관리용 스케줄러 (Kubernetes도 컨테이너 관리용 스케줄러로 사용 가능)
o
Chronos는 배치작업용 스케줄러
o
1개의 DC/OS 클러스터에서 다수의 스케줄러 동시 이용 가능
·
DC/OS 구성 요소 및 process 실행 시퀀스
o 구성 요소 & 관계
o process 실행 시퀀스
·
주요 기능
o Stateful Storage Support
§ external persistent volume 지원
·
app 입장에서 사용 편리, 전통적인 disk와 동일
·
elasticity와 replication의 대가로 speed를 희생 (느림)
§ distributed file system 지원
·
app 입장에서 storage 사용법이 생소
·
네트워크 기반으로 동작하기 때문에 느림
§ local ephemeral storage 지원
·
stateless, semi-stateless
12-factor, cloud native app 에 적합
·
stateful service에는 부적합
§ local persistent volume 지원
·
fast and persistent storage 제공
·
data replication, RAID drive
& backup 프로세스 등을 함께 사용한다면 speed 저하 없이 강인한(fault tolerant한) storage로 사용 가능
o Elastic Scalability
§ horizontal scaling 지원
·
Marathon을 이용, service instance 숫자를 언제든지 쉽게 조정
·
Marathon Load BAlancer를 이용, autoscaling 가능
§ vertical scaling 지원
·
Marathon을 이용, 서비스 다운타임 없이 instance 용량 업데이트 가능
o Zero Downtime Upgrade
§
다운타임 없이 서비스 자동 업데이트 가능
§
DC/OS 위에서 실행되는 서비스는
·
rolling, blue-green, canary
deploy pattern을 사용 가능
·
deploy 실패시 이전 시점으로 one-click 복구 가능
o Service Discovery and Distributed Load Balancing
§
자동 DNS endpoint 생성 기능 제공
§ 서비스 lookup API 제공
§
내부 통신 고속화를 위한 L4 virtual IP proxing 기능 제공
§ 외부향 서비스를 위한 L7 load balancing 기능 제공
Docker (Swarm) 상세 자료
·
2016년 7월 Docker 1.12 가 릴리즈됨
·
소감:
o
k8s처럼 pod(관련 컨테이너들의 집합)라는 낯선 개념을 도입하지 않고도, 도커에 내장된 Swarm을 통해
§ overlay-network,
§
replica 관리 (실행되는 컨테이너 수를 사용자 지정값과 같도록 관리),
§ scaling 처리,
§ service discovery,
§
load balancing 처리 기능을 k8s와 동등하게 지원하는 것이 인상적 ==> 새로 배울 개념이 적다 !
o
docker 데몬/클라이언트에 내장된 명령으로 Swarm 클러스터를 관리 ==> 새로 배울 도구가 적다 !
·
Docker 1.12 특징
o Swarm 명령이 native 지원됨 ==> The Best way to orchestrate Docker is Docker !
§ docker
swarm 명령들이 추가됨
o Service 모니터링
§ docker service 커맨드로 service의 desired state를 지정/관리
§ health check
§
replica 관리 (실행되는 컨테이너 수가 설정된 값과 같도록 관리)
§ scaling 관리
o Self Healing
§
service가 죽으면 도커 엔진이 다시 스케줄링함
§
k8s 같은 별도의 오케스트레이션 도구 필요 없음
§
Swarm 클러스터 위에서 실행되는 컨테이너에 대해 지속 실행과 스케일링을 지원함
§
데모 동영상 ~
https://www.youtube.com/watch?v=F7hoq0KwHD4&t=8m13s
o Security
§
도커에 인증서를 관리하는 CA 서버가 통합됨
§
추가 설정 없이 host 머신들 사이의 모든 통신을 암호화 처리함 (디폴트)
o Load Balancing
§
클러스터 위에 service를 publish 하면 클러스터에 속한 모든 host 머신의 해당 port에 접근 가능
§
도커가 모든 host 머신의 해당 port로 들어오는 service request를 적절한 컨테이너로 re-라우팅 & 로드밸런싱
o Rolling Deploys
§
replica 실행 중에 컨테이너를 한개씩 또는 두개씩(개수 설정 가능) 업데이트
§
새로 추가된 명령어 한방으로 처리
§
데모 동영상 ~
https://www.youtube.com/watch?v=F7hoq0KwHD4&t=6m38s
o 도커 1.11 대비 1.12 개선점 요약
·
Docker 1.12 Networking Model
o
모든 컨테이너는 3 종류의 오버레이 네트워크에 연결됨
§ ingress
·
도커가 정의하는 오버레이 네트워크
·
port를 publish (-p 옵션)한 service만 ingress 네트워크에 붙음 (port를 publish 하지 않은 컨테이너는 ingress 네트워크에 붙지 않음)
§ docker_gwbridge
·
도커가 정의하는 오버레이 네트워크
·
클러스터 외부와 연결하기 위한 네트워크
§ user-defined overlay
·
사용자가 정의하는 오버레이 네트워크
·
사용자는 다수의 오버레이네트워크를 정의할 수 있음
·
$ sudo docker network create -d overlay mynet
§
오버레이네트워크는 host 머신에 처음 컨테이너가 할당되어 실행될 때 생성됨
o Routing Mesh
§
도커는 내장된 Routing Mesh의 도움으로 클러스터 안의 모든 host 머신으로 유입되는 요청이 컨테이너가 실행되는 적절한 host 머신으로 re-라우팅되도록 보장함
§
클러스터 외부의 로드밸런서는 도커 클러스터 내부의 컨테이너 실행 상황(어떤 컨테이너가 어떤 host 머신에서 실행되는지)을 몰라도 됨
Ref
·
Apache Mesos 소개
o ~
http://www.mimul.com/pebble/default/2013/10/27/1382885361083.html
·
"Nexus: A Common Substrate
for Cluster Computing"
o ~
https://www2.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-158.pdf
·
"Mesos: A Platform for
Fine-Grained Resource Sharing in the Data Center"
o ~
https://amplab.cs.berkeley.edu/wp-content/uploads/2011/06/Mesos-A-Platform-for-Fine-Grained-Resource-Sharing-in-the-Data-Center.pdf
·
범용 PaaS 플랫폼 mesos(mesosphere)
o ~
http://www.slideshare.net/songaal/paa-s-mesosmesosphere
·
Mesosphere 튜토리얼
o ~
http://docs.mesosphere.com/intro-course
·
Mesosphere DC/OS on Google
Cloud Platform
o ~
https://mesosphere.com/google/
·
Docker Swarm
o ~
https://docs.docker.com/swarm/
·
Docker Swarm vs. Kubernetes
o ~
https://outofbedlam.github.io/docker/2016/03/12/DockerSwarm-vs-Kubernetes/
·
What's New In Docker 1.12
o ~ http://blog.nimbleci.com/2016/08/03/whats-new-in-docker-1.12/
·
Docker Engine 1.12 comes with
built-in Distribution & Orchestration System
o ~
http://collabnix.com/archives/1317
·
Docker 1.12 Networking Model
Overview
o ~
http://collabnix.com/archives/1391