
도커로 이미지를 만들고 컨테이너를 띄우는 법을 익혔다면, 이제 관리의 영역인 쿠버네티스(Kubernetes)로 넘어갈 차례입니다.
실무에서는 컨테이너가 수십, 수백 개로 늘어납니다. 이걸 사람이 일일이 모니터링하고 제어하는 건 불가능하죠. 😱
이런 수동 운영을 자동화하기 위해 탄생한 게 컨테이너 오케스트레이션(Container Orchestration)입니다.
이번 포스팅에서는 쿠버네티스를 본격적으로 다루기 전, 컨테이너 런타임과 오케스트레이션의 핵심 개념부터 정리하겠습니다. 🚀
가상머신(VM): 하드웨어 전체를 가상화. 각 VM마다 게스트 OS를 별도 설치해야 해서 무겁고 부팅이 느림
컨테이너(Container): 호스트 OS 커널을 공유하며 프로세스만 격리. 별도 OS 설치 불필요로 가볍고 빠름
OS 부팅 없이 몇 초 만에 실행되고, 시스템 자원을 적게 차지해 같은 서버에 더 많은 애플리케이션을 띄울 수 있습니다.
빠른 배포와 확장이 중요한 클라우드 환경에서 컨테이너는 최적의 선택입니다.
컨테이너 런타임은 컨테이너를 실행하는 데 필요한 환경입니다.
1) Containerd
2) Docker
💡 이미지 빌드는 Docker Engine이, 컨테이너 실행은 Containerd가 담당합니다.
3) CRI-O
과거 쿠버네티스는 Docker를 기본 런타임으로 썼습니다. 하지만 Docker는 CLI, volume 등 사람을 위한 기능이 많아 컨테이너 실행만 필요한 쿠버네티스에는 과했죠.
이에 쿠버네티스는 CRI(Container Runtime Interface) 라는 표준 인터페이스를 만들었습니다.
현재는 Docker 전체를 거치지 않고, 가볍고 CRI를 준수하는 Containerd나 CRI-O를 직접 사용합니다.
💡 쿠버네티스가 Docker를 안 쓴다는 건 서버(노드) 내부 구동 환경 얘기입니다. 개발자가 로컬에서 이미지를 만들 땐 여전히 Docker를 써도 됩니다.
로컬이나 소규모 프로젝트에서는 docker run이나 docker-compose로 충분합니다.
하지만 서버가 수십 대, 컨테이너가 수백 개로 늘어나면? 사람이 일일이 관리하는 건 불가능합니다.
컨테이너 오케스트레이션은 OS가 프로세스를 스케줄링하듯, 다수의 컨테이너를 여러 서버에 배치하고 관리하는 지휘자입니다.
🚀 스케줄링: 컨테이너를 어느 서버에 배치할지 자동 결정
🏥 자가 치유: 컨테이너나 서버가 죽으면 자동으로 새 컨테이너를 띄워 서비스 유지
⚖️ 오토 스케일링: 트래픽에 따라 컨테이너 수를 자동 조절

💡 어렵지만 확장성과 생태계 때문에 결국 K8s를 배우는 게 추세입니다.
오늘은 쿠버네티스를 본격적으로 배우기 전 런타임과 오케스트레이션 개념을 정리했습니다.
Docker Swarm으로 가볍게 맛볼 수도 있지만, 거대한 트래픽과 무중단 배포를 완벽히 제어하려면 결국 쿠버네티스를 알아야 합니다.
다음 포스팅에서는 쿠버네티스의 핵심 개념과 아키텍처를 정리해보겠습니다. 🚀