
✨ 쿠버네티스는 뭐지? 그럼 도커는? 도커와 쿠버네티스의 관계는? 어떤 상황에서 쿠버네티스가 필요한지 궁금하다면 Q&A로 배워보자.
Q: 쿠버네티스는 뭐에요?
Q: 워크로드(Workload)뭐에요?
워크로드는 시스템에 의해 수행되거나 처리되어야 하는 작업의 양 또는 종류를 포괄적으로 일컫는 말입니다.
웹 서버(Nginx, Apache), 데이터베이스(MySQL, PostgreSQL), 백엔드 API 서비스, 배치 처리 프로그램, 머신러닝 모델 추론 서비스 등 사용자에게 서비스를 제공하거나 내부 시스템을 운영하는 모든 애플리케이션이나 프로세스가 워크로드에 해당합니다.
Q: "컨테이너화"된다는 것은 무슨 의미인가요?
Q: 컨테이너 이미지는 무엇인가요?
Q: 도커의 역할은 무엇인가요?
이미지 생성: 개발자는 도커(Docker) 플랫폼을 사용하여 애플리케이션 코드와 모든 종속성을 묶어 컨테이너 이미지를 만듭니다.
컨테이너 실행: 도커 엔진은 이 컨테이너 이미지를 로드하여 도커 컨테이너라는 격리된 실행 환경을 생성합니다. 컨테이너가 실행되면, 이는 독립된 하나의 워크로드가 됩니다.
Q: 쿠버네티스의 역할(오케스트레이션)은 무엇인가요?
배포 및 확장: 서비스 규모가 커지면, 수십, 수백 개의 컨테이너가 필요해지고 이들을 여러 대의 서버(노드)에 분산시켜야 합니다. 이때 쿠버네티스가 등장합니다.
클러스터 관리: 쿠버네티스는 레지스트리에서 컨테이너 이미지를 다운로드받아 클러스터 내의 각 서버에 도커 컨테이너를 생성하고 관리합니다.
운영 자동화: 쿠버네티스는 컨테이너의 상태를 모니터링하며, 컨테이너가 죽으면 자동으로 다시 시작하고(Self-healing), 트래픽이 몰리면 컨테이너 수를 자동으로 늘립니다(Scaling).
Q: 도커, 쿠버네티스의 관계는 뭐에요?
Q: 그럼 쿠버네티스의 오케스트레이션과 자동화의 차이는 뭔가요?
자동화 (Automation): 개별적이고 반복적인 작업을 스크립트나 도구를 사용해 인간의 개입 없이 처리하는 것입니다. (예: 서버에 패치 설치, 백업 실행)
오케스트레이션 (Orchestration): 여러 개의 자동화된 작업과 시스템들을 통합하고, 이들 간의 복잡한 상호 작용 및 순서를 조율하여 전체적인 목표(워크플로)를 달성하는 것입니다.
오케스트레이션은 여러 자동화된 구성 요소를 엮어내는 상위 관리 기술이며, 쿠버네티스가 바로 이 컨테이너 오케스트레이션의 가장 강력하고 널리 사용되는 도구입니다.
Q: 쿠버네티스의 오케스트레이션이 제공하는 주요 기능은 뭔가요?
| 기능 | 설명 |
|---|---|
| 스케줄링 (Scheduling) | 컨테이너를 실행할 최적의 서버(노드)를 찾아 컨테이너를 배치합니다. |
| 자동 복구 (Self-healing) | 컨테이너가 실패하거나 서버가 다운되면 자동으로 컨테이너를 재시작하거나 다른 서버로 옮겨 재배치합니다. |
| 스케일링 (Scaling) | 사용자의 명령이나 트래픽 부하에 따라 컨테이너 복제본 수를 자동으로 늘리거나(Scale Out) 줄입니다(Scale In). |
| 서비스 디스커버리 및 로드 밸런싱 | 컨테이너 그룹에 단일 진입점(Service)을 제공하고, 들어오는 요청을 실행 중인 여러 컨테이너에 균등하게 분산시킵니다. |
| 롤아웃 및 롤백 | 새로운 버전의 애플리케이션을 배포할 때 점진적으로 교체하며, 문제가 생기면 즉시 이전 버전으로 안전하게 되돌립니다. |
| 스토리지 오케스트레이션 | 컨테이너가 데이터를 저장하고 접근할 수 있도록 영구 스토리지(Persistent Storage)를 자동으로 마운트하고 관리합니다. |
Q: 도커, 도커 이미지, 컨테이너, 쿠버네티스의 상관 관계 정리
| 기술 요소 | 핵심 역할 | 생성/실행 관계 | 상위/하위 관계 |
|---|---|---|---|
| 컨테이너 이미지 | 애플리케이션의 설계도 (정적 패키지) | 컨테이너를 만드는 원본 템플릿 | 가장 하위의 "무엇을 실행할지" 정의 |
| 도커 (Docker) | 컨테이너를 만들고 실행하는 기술 플랫폼/엔진 | 이미지를 기반으로 컨테이너를 생성하고 실행 | 컨테이너 기술의 기반 |
| 도커 컨테이너 (Docker Container) | 실행 중인 애플리케이션의 격리된 인스턴스 | 이미지가 도커 엔진에 의해 실행된 결과물 | 쿠버네티스의 주요 관리 대상 |
| 쿠버네티스 (Kubernetes) | 컨테이너의 대규모 배포 및 자동 관리 (오케스트레이션) | 실행 중인 컨테이너의 라이프사이클을 통제 | 가장 상위의 "어떻게 운영할지" 결정 |