Kubernetes/Kubernetes Best Practices

[Scenario Playbook Ep.8] 🚀 Deployment 편 #3 | AutoScaling 및 장애 대응

ygtoken 2025. 3. 15. 13:44
728x90

 

쿠버네티스에서 애플리케이션이 증가하는 트래픽을 자동으로 처리하고, 장애 발생 시 빠르게 대응하는 방법은 필수적입니다.

이번 글에서는 Horizontal Pod Autoscaler(HPA)와 Pod 장애 감지를 위한 Liveness & Readiness Probe 설정 방법을 다룹니다.

 


📌 글에서 다루는 상황들

 

1️⃣ Horizontal Pod Autoscaler(HPA) 적용

2️⃣ Liveness & Readiness Probe 설정

 

각 문제를 실무에서 바로 활용할 수 있도록 Manifest 템플릿과 예상 결과 값을 제공합니다.

 


1️⃣ Horizontal Pod Autoscaler(HPA) 적용

 

📍 상황 설명

 

운영팀에서 트래픽이 증가할 때 자동으로 Pod 개수를 확장하여 처리량을 유지하도록 설정하려 합니다.

이를 위해 Horizontal Pod Autoscaler(HPA)를 적용하여 CPU 사용량이 일정 수준을 넘으면 자동으로 확장되도록 해야 합니다.

Deployment의 이름은 web-autoscale이어야 합니다.

기본적으로 2개의 Replica를 실행해야 합니다.

CPU 사용량이 50%를 초과하면 최대 5개까지 자동으로 확장해야 합니다.

 


🛠️ 해결 방법

 

1. Horizontal Pod Autoscaler(HPA)를 사용하여 CPU 사용량에 따라 Pod 개수를 자동 조정해야 합니다.

kubectl autoscale deployment 명령어를 활용하여 HPA 생성

spec.metrics.resource.name: cpu를 설정하여 CPU 기준으로 확장

 


✅ 정답 Manifest (HPA가 적용된 Deployment)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-autoscale  # Deployment의 이름
spec:
  replicas: 2  # 기본 실행 Pod 개수
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:latest  # 웹 애플리케이션 컨테이너
        ports:
        - containerPort: 80
        resources:
          requests:
            cpu: "250m"  # 기본 요청 CPU
          limits:
            cpu: "500m"  # 최대 사용 CPU

---

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: web-autoscale-hpa  # HPA 이름
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-autoscale  # 타겟 Deployment
  minReplicas: 2  # 최소 Pod 개수
  maxReplicas: 5  # 최대 Pod 개수
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50  # CPU 사용률이 50%를 넘으면 확장

 

 


📌 적용 후 예상 결과 값

 

1. HPA 및 Deployment 생성 확인

kubectl get hpa,deployments

 

💡 예상 출력 값

NAME                        REFERENCE                  TARGETS   MINPODS   MAXPODS   AGE
hpa/web-autoscale-hpa       Deployment/web-autoscale  10%/50%   2         5         5s

NAME                READY   UP-TO-DATE   AVAILABLE   AGE
web-autoscale      2/2     2            2          5s

 

2. CPU 부하 증가 시 자동 확장 확인

kubectl get hpa

 

💡 예상 출력 값

NAME                        REFERENCE                  TARGETS   MINPODS   MAXPODS   AGE
hpa/web-autoscale-hpa       Deployment/web-autoscale  70%/50%   2         5         1m

 

3. 확장된 Pod 개수 확인

kubectl get pods

 

💡 예상 출력 값

NAME                          READY   STATUS    RESTARTS   AGE
web-autoscale-5c9d4b7c5f-abc  1/1     Running   0          10s
web-autoscale-5c9d4b7c5f-def  1/1     Running   0          10s
web-autoscale-5c9d4b7c5f-ghi  1/1     Running   0          5s
web-autoscale-5c9d4b7c5f-jkl  1/1     Running   0          5s

 

 

728x90