TIL - Kubernetes 스터디 내용 정리 5 (Pod 오토스케일링, 배포 전략)

J_log·2025년 4월 11일
0
post-thumbnail

Pod 오토스케일링: HPA (Horizontal Pod Autoscaler)

HPA는 애플리케이션의 리소스 사용량(CPU, 메모리 등)을 기준으로 Pod 수를 자동으로 조절하는 오브젝트이다.
일반적으로 Deployment, ReplicaSet, StatefulSet에 적용 가능하다.
리소스 사용량을 기반으로, 정의된 임계치를 넘기면 Pod의 수를 늘리고, 사용량이 줄어들면 다시 줄인다.

HPA 예제 코드

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: example-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
    - type: Resource
      resource:
        name: cpu
        target:
          type: Utilization
          averageUtilization: 50
  • kubectl top pod으로 리소스 사용량 확인 가능
  • metrics-server 설치가 필요하다 (클러스터에 리소스 사용량 데이터를 제공)

다양한 배포 전략

  • Rolling Update
    • 쿠버네티스의 기본 배포 전략
    • 점진적으로 새로운 Pod를 생성하고, 이전 버전을 하나씩 종료함
    • 다운타임 없이 배포 가능
  • Blue/Green Deployment
    • 기존 버전(Blue)과 새로운 버전(Green)을 동시에 유지하다가, 트래픽을 전환하는 방식
    • 트래픽 전환이 완전히 이뤄진 후, 기존 버전을 제거
    • 롤백이 쉽고 안정성이 높다
    • 쿠버네티스에서는 서비스 객체를 이용해 label selector를 변경하여 트래픽을 전환
  • Canary Deployment
    • 새로운 버전을 일부 사용자에게만 점진적으로 배포한 뒤, 이상이 없으면 전체 배포한다
    • ex) 전체 트래픽의 10%만 Canary 버전에 전달 -> 이상이 없다면 점차 확대한다
    • Deployment를 복수로 관리하거나, Service 객체를 통해 레이블 조정 + 트래픽 분산을 조절함

0개의 댓글