Phase 6레슨 29

Kubernetes

Pod, Service, Deployment, Ingress, HPA — 컨테이너 오케스트레이션

💡ELI5·

오케스트라 지휘자와 Kubernetes

Kubernetes Cluster
  ├── Control Plane (지휘자)
  │     ├── API Server
  │     ├── Scheduler (Pod를 어디에 배치?)
  │     ├── Controller Manager (상태 유지)
  │     └── etcd (클러스터 상태 저장)
  └── Worker Nodes (악단)
        ├── Pod 1 (주문 서비스)
        ├── Pod 2 (주문 서비스)
        └── Pod 3 (결제 서비스)
💡 비유Kubernetes = 오케스트라 지휘자. 악단(Node)에 있는 악기(Pod/Container)를 조율. 누가 어디서 연주할지(Scheduler), 악기가 고장 나면 교체(Controller), 전체 균형 유지. 지휘자가 없으면 악기마다 제멋대로 연주.
🔬Deep Dive·

핵심 리소스

리소스역할비유
Pod컨테이너 그룹 (최소 배포 단위)악기 하나
DeploymentPod의 복제본 수 + 업데이트 관리악기 파트 관리
ServicePod에 대한 고정 IP + 로드 밸런싱악기 파트 입구
Ingress외부 트래픽을 Service로 라우팅 (HTTP)공연장 입구
ConfigMap/Secret설정/비밀 정보 주입악보 / 비밀 지시
HPACPU/메트릭 기반 Pod 수 자동 조정악기 수 조절
💻Code·

Deployment + Service 예시

apiVersion: apps/v1
kind: Deployment
metadata:
  name: order-service
spec:
  replicas: 3                    # 3개 Pod 유지
  selector:
    matchLabels:
      app: order-service
  template:
    metadata:
      labels:
        app: order-service
    spec:
      containers:
      - name: order
        image: order-service:v2
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
  name: order-service
spec:
  selector:
    app: order-service
  ports:
  - port: 80
    targetPort: 8080
  type: ClusterIP              # 클러스터 내부 IP
🔬Deep Dive·

HPA (Horizontal Pod Autoscaler)

HPA 주기적 확인 (15초):
  CPU 사용률 > 70% → Pod 증가 (최대 10개)
  CPU 사용률 < 30% → Pod 감소 (최소 3개)

  트래픽 3배 증가:
    Pod 3개 (CPU 90%) → Pod 6개 (CPU 45%) → Pod 9개 (CPU 30%)
  
  주의: 메트릭 수집 지연으로 초기 1-2분은 과부하 가능
⚖️Trade-off·

Kubernetes의 Trade-off

이점대가
자동 확장/축소학습 곡선 매우 가파름
자가 치유 (Pod 재시작)컨트롤 플레인 관리 복잡
선언적 설정 (GitOps)Stateful 워크로드에 부적합
멀티 클라우드 이식성작은 서비스에 과도함
Kubernetes는 '언제'가 아니라 '필요한가?'를 먼저 물어야 한다. 관리형(EKS/GKE)을 써도 운영 부담이 크다.

❓ 체크포인트 질문

  1. 1.Pod가 컨테이너가 아닌 컨테이너 그룹인 이유는?
  2. 2.Service가 필요한 이유는?
  3. 3.Deployment가 Pod를 직접 관리하지 않고 ReplicaSet을 거치는 이유는?
  4. 4.HPA(Horizontal Pod Autoscaler)의 동작은?
  5. 5.Kubernetes가 만능이 아닌 이유는?