k8s와 docker 관계
도커와 쿠버네티스 비교 예시
- 컨테이너를 하나만 띄워서 사용해야지! ⇒ 도커
- 0월 0시에 100개의 컨테이너를 자동으로 생성해야지! ⇒ 쿠버네티스
- 즉, 도커는 ‘이미지를 컨테이너에 띄우고 실행하는 기술’이고
- 쿠버네티스는 ‘도커를 관리하는 툴’이라고 생각하면 된다.
- 따라서 도커는 ‘한 개의 컨테이너를 관리’하는데 최적화 되어있고
- 쿠버네티스는 ’여러 개의 컨테이너를 서비스 단위로 관리’ 하는데 최적화 되어있다.
도커란?
- 도커는 ’컨테이너 기반 오픈소스 가상화 플랫폼’이다.
- 컨테이너란?
- 컨테이너는 ‘애플리케이션’과 ‘애플리케이션을 구동하는 환경’을 ‘host os’로부터 격리한 공간을 의미한다.
- 컨테이너는 보통 마이크로서비스로 사용된다.
- 마이크로서비스란, 거대한 어플리케이션을 기능별로 나누어, 변경/조합이 가능한 서비스를 의미하며,
- 컨테이너를 사용하면, 하나의 큰 어플을 서비스 단위로 잘라 빠르게 배포할 수 있기 때문에 마이크로서비스라고 설명된다.
- 또한, 각각 분리해서 사용하므로 개별 변경사항이 분리된 다른 기능들에 영향을 미치지 않는다.
기존의 가상머신(VM)과 컨테이너의 차이점

- 기존의 가상머신(VM) 서버
- [Server → Host OS → Hypervisor → 각각의 Guest OS가 설치된 VM 구동]
- 장점
- Host OS가 window여도 Guest OS로 linux를 사용할 수 있다.
- 보안적으로 Guest OS가 뚫렸을 경우, 다른 Guest OS와 Host OS가 완벽하게 분리되어 있기 때문에 각각의 VM에 피해가 가지 않는다.
- 단점
- VM마다 무거운 Guest OS를 띄우기 때문에 Container에 비해 속도가 느리다.
- 컨테이너 서버
- [Server → Host OS → Docker Engine → Container 구동]
- 장점
- 하나의 Host OS를 구동하기 때문에 Container 별로 무서운 OS를 띄우지 않아 Container의 속도가 훨씬 빠르다.
- 단점
- Host OS가 window라면, Guest OS로 linux를 사용할 수 없다.
- 보안적으로 Container가 뚫렸을 경우 다른 Container와 Host OS가 위험해질 수 있다.
컨테이너는 독립적이고, 동적이다.
- 트래픽에 따라 java 컨테이너의 수를 늘리고 줄일 수 있다.
- 즉, docker 덕분에 매번 새로운 서비스를 만들 때마다 새로운 서비스를 설정할 필요가 없는것이다.
- 또한, 하나의 서버에서 각기 다른 환경의 컨테이너를 설정할 수 있고,
- 이 컨테이너들은 각각 분리, 독립되어 있기 때문에 더구 효율적이다.
쿠버네티스란?

- 쿠버네티스는 ‘컨테이너 오케스트레이션’이다.
- 오케스트레이션이란?
- 컨테이너 역시 그 수가 많아지면 관리와 운영에 있어 어려움이 따른다.
- 컨테이너 오케스트레이션은 이러한 다수의 컨테이너 실행을 관리 및 조율하는 시스템이다.
- 쿠버네티스 특징
- 자동화된 복구(self-healing)
- 컨테이너들을 모니터링하며, 컨테이너 중 하나라도 죽으면 쿠버네티스는 이를 빠르게 재시작 시킨다.
- 로드 밸런싱(Load balancing)
- 유저가 갑자기 많아졌는데 웹에서는 준비가 되어있지 않은 경우 니즈를 수용하기 위해 자동으로 새로운 컨테이너를 생성한다.
- 니즈가 줄어드는 경우에도 자동으로 도와준다.
- 무중단(Fault tolerance-FT)서비스
- 쿠버네티스는 점진적 업데이트를 제공하기 때문에 서비스를 중단하지 않고도 어플리케이션을 업데이트할 수 있다.
- 호환성(Vendor Lock In 해결)
- Vendor Lock In : 클라우드 환경을 이전할때 서로 다른 업체의 클라우드 제품 간의 호환 문제가 발생하여 이전하기 어려운 상황을 말한다.
- 쿠버네티스는 도커 컨테이너를 기반으로 하는 오픈소스이기 때문에 사용자들이 특정 업체에 종속하지 않고 클라우드의 환경을 이전할 수 있다.
- 또한, 쿠버네티스를 익히면 provider 회사에 상관없이 공통된 마이크로서비스 아키텍쳐 개발이 가능하다.
요약
- 도커와 쿠버네티스는 상황마다 다르게 사용된다.
- 한 개의 컨테이너만 사용한다면 쿠버네티스는 필요없다.
- 쿠버네티스는 많은 컨테이너 관리에 유용하다.
Reference