핵심 한 줄

쿠버네티스는 파드(컨테이너 묶음)를 컨트롤러(디플로이먼트→레플리카셋)로 자동 관리하고, 서비스로 네트워크를 추상화한다. 키워드는 셀프힐링·오토스케일·무중단 배포.


1. 파드 (Pod)

쿠버네티스의 최소 배포 단위. 1개 이상의 컨테이너를 묶고, 네트워크(같은 IP)·볼륨을 공유한다.

사이드카 패턴 (Sidecar)

  • 한 파드에 메인 컨테이너 + 보조 컨테이너(로그 수집기, 프록시 등)를 함께 배치
  • 볼륨 공유로 메인이 쓴 로그를 사이드카가 읽어 수집·외부 전송
  • 메인 컨테이너 코드를 건드리지 않고 부가 기능(로깅·모니터링·통신)을 분리하는 게 목적

대표 사례

메인 앱 + 로그 컨테이너(Fluentd 등) → 공유 볼륨의 로그를 사이드카가 외부로 전송. 서비스 메시(Envoy 프록시 주입)도 같은 패턴.


2. 워크로드 컨트롤러

디플로이먼트 (Deployment)

  • 파드 셀프힐링 가능: 파드가 죽으면 자동 재생성
  • 정확한 구조: 디플로이먼트 → 레플리카셋 → 파드
    • 레플리카셋(ReplicaSet): 지정한 개수의 파드를 유지·관리 (실제로 파드를 직접 감시)
    • 디플로이먼트: 레플리카셋을 관리하며 배포(rollout)·롤백 담당
  • 즉, 셀프힐링은 레플리카셋이, 버전 관리는 디플로이먼트가 한다.
Deployment ──관리──▶ ReplicaSet ──관리──▶ Pod, Pod, Pod
   (배포/롤백)          (개수 유지/셀프힐링)

롤링 업데이트 (Rolling Update)

  • 새 버전 파드를 하나씩 만들면서 기존 파드를 하나씩 제거하는 과정을 반복
  • 서비스 중단 없이 점진 교체 → 무중단 배포
  • 문제 발생 시 디플로이먼트로 롤백 가능

HPA (Horizontal Pod Autoscaling)

  • 부하량(CPU·메모리·커스텀 지표)에 따라 파드 개수를 자동 조절
  • 수평 확장(파드 수 늘리기) — 트래픽 급증 시 자동 스케일아웃, 한산하면 스케일인
  • (cf. 수직 확장 VPA는 파드 자원 자체를 키움 — HPA와 구분)

3. 서비스 (Service)

파드는 죽고 살아나며 IP가 계속 바뀐다. 서비스는 고정 진입점(고정 IP/DNS) + 부하분산을 제공해 클라이언트가 파드에 쉽게 접근하게 한다.

타입접근 범위용도
ClusterIP클러스터 내부 파드 간 통신만내부 서비스 연결 (기본값)
NodePort내부 통신 + 외부에서 특정 포트로 접근테스트·개발용
LoadBalancer외부 로드밸런서 통해 노출클라우드 환경 외부 노출

외부 노출 전략

NodePort는 테스트용, 프로덕션 외부 노출은 보통 **인그레스(Ingress)**를 활용한다. 인그레스는 L7(HTTP) 라우팅·도메인/경로 기반 분기·TLS 종료를 한곳에서 처리한다.


4. 한눈에 정리

  • 파드: 컨테이너 묶음, 네트워크·볼륨 공유 → 사이드카로 부가기능 분리
  • 레플리카셋: 파드 개수 유지(셀프힐링)
  • 디플로이먼트: 레플리카셋 관리 + 롤링업데이트/롤백
  • HPA: 부하 기반 파드 수 자동조절
  • 서비스: 고정 IP + 부하분산 (ClusterIP=내부, NodePort=외부테스트, Ingress=프로덕션 외부)

5. 더 채울 거리 (다음 행동)

  • ConfigMap / Secret (설정·민감정보 주입)
  • 인그레스(Ingress) 컨트롤러 동작 상세
  • 프로브(livenessProbe / readinessProbe)와 셀프힐링의 관계
  • StatefulSet vs Deployment (상태 보존 워크로드)
  • 결제 취소 MSA를 k8s에 올린다면 서비스 경계별 배포 구성

관련 노트