이종관
글 목록으로

Kubernetes 핵심 개념 정리

Pod, Deployment, 네임스페이스 등 Kubernetes 핵심 개념과 컨테이너 오케스트레이션 기초

2025년 2월 4일·5 min read·
infra
kubernetes
docker
containerization

컨테이너화 vs 컨테이너 오케스트레이션

컨테이너화 (Containerization)

애플리케이션과 의존성을 하나의 이미지로 패키징하여 어떤 환경에서도 일관되게 동작하도록 하는 기술이다.

특성설명
이식성개발/테스트/프로덕션 환경 차이 최소화
격리성독립적 실행 환경, 다른 서비스와 간섭 없음
경량성VM 대비 자원 소모 적고, 빠른 시작/종료

컨테이너 오케스트레이션

여러 컨테이너를 자동으로 배포, 관리, 확장, 업데이트 및 모니터링하는 기술이다.

  • 자동화: 수백 개의 컨테이너 반복 작업 자동화
  • 자동 스케일링: 트래픽 변화에 따라 컨테이너 수 자동 조절
  • 롤링 업데이트: 단계별 업데이트 후 문제 시 롤백
  • 셀프-힐링: 비정상 컨테이너 자동 재시작

오케스트레이션의 필요성

수동 관리의 문제점:

  • 수십~수백 개 컨테이너 모니터링 불가능
  • 트래픽 변화에 실시간 대응 어려움
  • 장애 복구 시간 증가
  • 운영 비용 및 오류 가능성 증가

쿠버네티스의 역할

핵심 기능

기능설명
자동 배포/확장YAML로 정의한 상태 자동 유지
서비스 디스커버리동적 IP에도 고정 엔드포인트 제공
로드 밸런싱트래픽 균등 분산
자원 관리CPU/메모리 효율적 분배
이식성온프레미스/클라우드 동일 운영

쿠버네티스 아키텍처

제어 플레인 (Master)

컴포넌트역할
API Server클러스터의 유일한 API 접점
Controller현재 상태와 원하는 상태를 동기화
Scheduler새 Pod를 배치할 노드를 선택
etcd클러스터 상태를 저장하는 분산 Key-Value 저장소

워커 노드

컴포넌트역할
kubelet제어 플레인과 통신하며 Pod 상태 유지
kube-proxyService 네트워크 프록시 및 로드밸런싱 처리
Container Runtime실제 컨테이너 실행 (containerd, CRI-O 등)

핵심 오브젝트

Pod

쿠버네티스의 최소 배포 단위이다.

  • 하나 이상의 컨테이너 포함
  • 동일 네트워크 네임스페이스 공유
  • 같은 스토리지 볼륨 공유 가능
  • 일시적(Ephemeral) 특성
yaml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: app
    image: nginx:latest
    ports:
    - containerPort: 80

Service

Pod 집합에 대한 고정된 네트워크 엔드포인트를 제공한다.

타입설명
ClusterIP클러스터 내부 전용 (기본값)
NodePort노드 포트로 외부 접근
LoadBalancer클라우드 LB 연동
yaml
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - port: 80
    targetPort: 8080
  type: ClusterIP

Deployment

Pod의 선언적 업데이트를 관리한다.

  • 롤링 업데이트 지원
  • 롤백 기능
  • 스케일링
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: app
        image: my-app:v1

kubectl 기본 명령어

bash
# 클러스터 정보
kubectl cluster-info
 
# 리소스 조회
kubectl get pods
kubectl get services
kubectl get deployments
 
# 리소스 상세 정보
kubectl describe pod <pod-name>
 
# 로그 확인
kubectl logs <pod-name>
 
# 배포
kubectl apply -f deployment.yaml
 
# 스케일링
kubectl scale deployment my-deployment --replicas=5
 
# 롤백
kubectl rollout undo deployment my-deployment

정리

쿠버네티스는 컨테이너 오케스트레이션의 사실상 표준(de facto standard)이다.

핵심 개념:

  • Pod: 최소 배포 단위
  • Service: 네트워크 추상화
  • Deployment: 선언적 배포 관리
  • 제어 플레인 + 워커 노드 아키텍처

다음 글에서는 네트워킹, 스토리지, 보안 등 고급 주제를 다룬다.