Kubernetes와 Docker 관계

Youngho LEE·2025년 10월 12일

  • Kubernetes(K8s): 컨테이너화된 애플리케이션의 배포·스케일링·운영을 자동화하는 오케스트레이션 플랫폼. 선언적 구성과 자동화를 핵심 철학으로 함.
  • Docker: 애플리케이션을 이미지로 패키징하고 단일 호스트에서 컨테이너 실행을 제공하는 개발·런타임 도구 세트. K8s는 여러 호스트에 걸친 운영(오케스트레이션)을 담당하며 서로 보완 관계.
  • 관계 변화: K8s는 v1.24부터 dockershim 제거 → 기본 런타임은 containerd/CRI-O 등(CRI 표준). 여전히 Docker로 이미지를 빌드해 K8s에서 사용할 수 있음.

왜 필요한가

마이크로서비스/분산 환경에서 수십~수백 개 컨테이너의 배치(placement), 복구(self-healing), 롤링 업데이트, 서비스 디스커버리 등을 자동화해 운영 복잡도를 줄인다.

핵심 개념

  • 클러스터/노드: 컨트롤 플레인(API 서버, 스케줄러, 컨트롤러, etcd) + 워커 노드(kubelet, CNI/CSI 통합 런타임).
  • Pod: K8s의 최소 배포 단위(하나 이상의 컨테이너의 논리적 그룹). Deployment가 Pod 집합의 선언적 업데이트/스케일링을 관리.
  • Service: Pod 집합에 안정적인 가상 IP를 부여(서비스 디스커버리). 유형: ClusterIP, NodePort, LoadBalancer, ExternalName.
  • Ingress: L7 규칙(호스트/경로 기반)으로 HTTP(S) 트래픽을 서비스로 라우팅(Ingress Controller 필요).
  • 구성/비밀/스토리지: ConfigMap, Secret, 볼륨/PersistentVolume으로 설정·자격증명·데이터 영속화 관리.
  • CRI & 런타임: kubelet↔컨테이너 런타임을 추상화하는 CRI 표준. 구현체로 containerd, CRI-O 등을 사용.
구분DockerKubernetes
주 역할컨테이너 빌드/패키징/단일 호스트 실행컨테이너 오케스트레이션(다중 호스트 배포·스케일링·자가복구)
사용 범위로컬 개발·단일 서버 실행프로덕션급 클러스터 운영
이미지 처리이미지 빌드/푸시 제공이미지를 소비(레지스트리에서 pull)
런타임Docker Engine(내부에 containerd 포함)CRI 호환 런타임(containerd/CRI-O 등)
CLIdockerkubectl(선언적 매니페스트)

-> Docker로 만든 이미지를 K8s가 대규모로 운영한다는 분업 구조


출처
Kubernetes
Docker

profile
개발자

0개의 댓글