도커와 쿠버네티스가 뭘까요?
우선 서버 운영에 대한 세대 전환을 먼저 알아볼 필요가 있습니다.
도커는 컨테이너 관리 및 실행을 위한 것이고, 쿠버네티스는 컨테이너 배포 및 운영을 위한 것이기 때문입니다.
일대일 : 서버 운영 1세대 : 물리적 서버를 직접 일대일로 대응시켰습니다.
1개의 하드웨어 서버에 1개의 OS를 설치하고, 그 OS에 여러 애플리케이션을 설치했습니다.
1개의 하드웨어에 1개의 OS가 있는 서버의 구조입니다.
잘 안쓰는 서버는 CPU, RAM 리소스 낭비가 발생할 수 있고 그로 인해 비용이 증가하는 문제가 발생해 2세대로 전환 압력이 발생했습니다.
가상화 : 서버 운영 2세대 : 1세대의 가용공간 활용 효율성 개선을 위해 virtual machine을 적용합니다.
이러한 가상 머신은 Host OS 위에서 hypervisor을 사용하여 Guest OS를 제어하는 방식입니다.
게스트 OS에 대한 애플리케이션 종속성과 리소스 낭비(OS가 두개가 돌아가니까)로 3세대로 전환 압력이 발생했습니다.
컨테이너 : 서버 운영 3세대 : 2세대의 Guest OS를 제거하여 더욱 효율화한 형태입니다.
결국 서버를 운영하는 이유는, 즉 원하는 것은 ‘애플리케이션의 운영’인데 이를 충족가능하다면 Guest OS가 굳이 있을 필요가 없습니다.
그래서 컨테이너 개념이 도입되며 3세대로 전환됩니다. 서비스를 컨테이너로 분리하고, Host OS에서 해당 컨테이너에 직접 리소스를 부여합니다. hypervisor나 guest os에 별도로 리소스를 사용할 필요가 없고, 종속성 문제 줄일 수 있는 장점이 있습니다.
= 이러한 컨테이너 위주의 운영을 가능하게 해 주는 것이 Docker입니다.
컨테이너 위주의 개발은 다른 장점을 가져왔습니다.
= 도커 repository 를 통해서 다른 사람이 공유한 컨테이너를 바로 받고 시작할 수도 있습니다.
쿠버네티스는 컨테이너로 운영하는 구글 서버들을 다루기 위해 구글에서 만들어서 쓰다가 오픈소스로 공개한 솔루션입니다.
쿠버네티스는 3세대 컨테이너 개발 세대를 위한 배포 관리 도구라고 할 수도 있습니다.
- 컨테이너별 네트워크 트래픽에 대한 로드밸런싱 기능을 제공합니다.
- 스토리지 오케스트레이션
- 오케스트레이션은 [단일의 자동화된 태스크]들을 자동으로 실행할 수 있도록 배치하는 것을 말합니다.
- 버전 관리 편의성 : 롤아웃 및 롤백 자동화를 지원합니다. (롤아웃=출시)
- 운영편의 기능 제공
- Secret & configuration: 암호, OAuth token, SSH Key 같은 중요 정보들을 저장 및 관리가 가능하며, 배포 및 업데이트 중에도 스택 구성에 시크릿을 노출하지 않음.
쿠버네티스에 대한 대표적인 오해들은 다음과 같습니다.
- 쿠버네티스는 PaaS이다.
- PaaS가 아니다. 배포, 스케일링, 로드밸런싱, 로깅, 모니터링 기능을 추가할 수는 있지만, 사용자가 취사선택할 수 있다.
- 쿠버네티스는 로깅과 모니터링을 위한 솔루션이다.
- Logging, Monitoring 을 위한 솔루션이 아닙니다. 그러나 그러한 기능을 추가할 수는 있습니다.
- 오케스트레이션 시스템이 아님