← 목록으로
인프라·클라우드
#쿠버네티스#컨테이너#오케스트레이션#Pod#MSA#133회
최종 업데이트 · 2026-07-07

쿠버네티스(Kubernetes, K8s)

1. 개요

가. 정의

컨테이너화된 애플리케이션의 배포·확장·운영을 선언적으로 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼으로, 구글의 내부 시스템(Borg)에서 출발해 현재 CNCF의 졸업 프로젝트다.

나. 등장 배경 및 필요성

Docker로 컨테이너를 표준화했지만, 운영 현장에서는 컨테이너 하나가 아니라 수백~수천 개를 다뤄야 한다. 어느 서버에 어떤 컨테이너를 띄울지, 죽으면 누가 재기동할지, 트래픽이 몰리면 어떻게 늘릴지를 사람이 수동으로 관리하는 것은 불가능하다. MSA와 클라우드 네이티브가 확산되며 이 복잡도는 폭증했다. 쿠버네티스는 이 "대규모 컨테이너 운영의 자동화"라는 문제를 풀기 위해 등장했으며, 관리자가 "원하는 상태(Desired State)"만 선언하면 시스템이 알아서 그 상태를 유지하도록 한다.

다. 특징

핵심 철학은 선언적 구성(Declarative) 이다. "이렇게 하라(명령형)"가 아니라 "이런 상태여야 한다(선언형)"를 YAML로 기술하면, 쿠버네티스가 현재 상태와 비교해 스스로 맞춘다. 이 덕에 자동 복구·오토스케일링·무중단 배포가 가능하고, 인프라에 독립적이라 온프레미스·멀티 클라우드 간 이식성이 높다.

2. 아키텍처

flowchart LR
  subgraph CP[Control Plane · 두뇌]
    API[API Server] --- ETCD[(etcd)]
    API --- SCH[Scheduler]
    API --- CM[Controller Manager]
  end
  CP --> N1[Worker Node<br/>kubelet·kube-proxy·Pod]
  CP --> N2[Worker Node<br/>kubelet·kube-proxy·Pod]

쿠버네티스는 명령·의사결정을 담당하는 Control Plane(마스터) 과 실제 컨테이너를 실행하는 Worker Node로 나뉜다. 이 분리는 "결정(제어)과 실행(작업)을 분리"해, 노드가 죽어도 제어부는 살아 있고, 제어부가 재시작돼도 노드의 워크로드는 계속 도는 견고함을 준다.

  • API Server: 모든 요청이 거치는 유일한 관문(REST). 인증·검증 후 상태를 etcd에 기록하며, 모든 구성요소는 이 API Server를 통해서만 소통한다.
  • etcd: 클러스터의 모든 상태(원하는 상태·현재 상태)를 저장하는 분산 Key-Value 저장소. 사실상 클러스터의 "단일 진실 원천(SSOT)"이라 손상되면 클러스터 전체가 위험하므로 백업이 필수다.
  • Scheduler: 새 Pod를 자원·제약(CPU·메모리·affinity)을 고려해 어느 노드에 배치할지 결정한다.
  • Controller Manager: 아래에서 설명할 조정 루프(Reconcile)를 돌리는 각종 컨트롤러의 집합이다.
  • kubelet: 각 노드에서 API Server의 지시를 받아 Pod를 실제로 실행·감시한다.
  • kube-proxy: 노드의 네트워크 규칙을 관리해 Service로 향하는 트래픽을 적절한 Pod로 라우팅·부하분산한다.
구성 역할
API Server 모든 요청의 관문(REST)
etcd 클러스터 상태 저장(분산 KV, SSOT)
Scheduler Pod를 적합 노드에 배치
Controller Manager 상태 조정(Reconcile Loop)
kubelet 노드에서 Pod 실행·관리
kube-proxy 네트워크 라우팅·로드밸런싱

3. 핵심 오브젝트

쿠버네티스에서 다루는 모든 것은 "오브젝트"로 선언된다. 최소 단위는 컨테이너가 아니라 Pod인데, 밀접히 결합된 컨테이너(예: 앱 + 로그 수집 사이드카)를 하나로 묶어 같은 네트워크·스토리지를 공유시키기 위함이다. Pod는 일시적(언제든 죽고 재생성)이라 IP가 바뀌므로, 안정적 접근점을 주는 Service가 필요하다.

오브젝트 설명
Pod 최소 배포 단위(컨테이너 묶음, 일시적)
ReplicaSet/Deployment 복제본 수 유지·롤아웃·롤백
Service Pod 집합에 안정적 접근점·로드밸런싱
Ingress 외부 HTTP(S) 라우팅·경로 기반 분배
ConfigMap/Secret 설정·비밀정보를 코드와 분리
Namespace 논리적 격리(멀티테넌시·환경 분리)

예를 들어 웹 앱을 배포하면, Deployment가 "복제본 3개"를 선언적으로 관리하고, 그 앞에 Service가 3개 Pod로 트래픽을 분산하며, Ingress가 외부 도메인을 이 Service로 연결한다.

4. 핵심 메커니즘 — 조정 루프(Reconciliation)

쿠버네티스의 자동화가 작동하는 근본 원리는 조정 루프다. 각 컨트롤러는 "선언된 상태(예: 복제본 3개)"와 "현재 상태(실제 2개)"를 끊임없이 비교하고, 차이가 있으면 현재를 원하는 상태로 수렴시킨다. 노드가 죽어 Pod가 사라지면, 컨트롤러가 이를 감지해 다른 노드에 새 Pod를 띄운다. 이 루프가 있기에 "자동 복구"가 마법이 아니라 필연이 된다.

  • 오토스케일링: HPA(부하에 따라 Pod 수평 증감)·VPA(자원 요청 수직 조정)·Cluster Autoscaler(노드 자체 증감)로 수요에 탄력 대응.
  • 롤링 업데이트/롤백: 새 버전 Pod를 조금씩 교체해 무중단 배포하고, 문제가 생기면 이전 리비전으로 즉시 롤백한다.

5. 고려사항 및 시사점

  • 운영 복잡도: 강력한 만큼 러닝커브가 가파르다. 그래서 직접 구축보다 관리형 서비스(EKS·GKE·AKS) 로 Control Plane 운영 부담을 덜어내는 경우가 많다.
  • 보안: 기본 설정은 관대하므로 RBAC(권한 최소화)·네트워크 정책·이미지 취약점 스캔을 반드시 적용해야 한다.
  • 관측성: Pod가 수시로 생멸하므로 Prometheus·Grafana·로그 수집 등 모니터링이 운영 필수다.
  • 표준 인프라·전망: 쿠버네티스는 MSA·DevOps·CI/CD의 사실상 표준 기반이며, Git 저장소를 원하는 상태의 원천으로 삼는 GitOps(ArgoCD 등) 로 배포 자동화가 확장되고 있다.

한 줄 요약: 쿠버네티스는 컨테이너 배포·확장·운영을 선언적으로 자동화 하는 오케스트레이션 플랫폼으로, Control Plane과 Node가 조정 루프(Reconcile)로 Pod를 원하는 상태에 지속 수렴시키며, 관리형 서비스·GitOps와 함께 클라우드 네이티브의 표준 인프라가 되었다.