Kubernetes는 워크로드의 부하에 따라 리소스를 자동으로 조정하는 다양한 오토스케일링(Auto Scaling) 기법을 제공한다. 오토스케일링은 클러스터의 리소스 사용을 최적화하고 비용을 절감하는 데 중요한 역할을 한다. Kubernetes에서 제공하는 주요 오토스케일링 기법은 다음과 같다.
1. HPA(Horizontal Pod Autoscaler)
개요
Horizontal Pod Autoscaler(HPA)는 애플리케이션의 부하에 따라 Pod의 개수를 자동으로 조절하는 기능이다. CPU 사용량 또는 사용자 정의 메트릭을 기준으로 스케일링이 이루어진다.
동작 방식
- Metrics Server에서 제공하는 CPU 및 메모리 사용량 또는 Custom Metrics API를 통해 정의한 메트릭을 모니터링한다.
- 특정 임계값을 초과하거나 부족하면 Pod의 개수를 동적으로 조정한다.
- Deployment, ReplicaSet, StatefulSet 등의 컨트롤러와 연동되어 동작한다.
설정 예시
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: example-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: example-deployment
minReplicas: 2
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
장점
- 애플리케이션의 부하에 따라 자동으로 확장 및 축소 가능
- 트래픽 급증 시 유연한 대응 가능
단점
- Pod 개수를 조정하는 데 시간이 걸릴 수 있음
- CPU 및 메모리 기반 이외의 메트릭 활용 시 추가적인 설정이 필요함
2. VPA(Vertical Pod Autoscaler)
개요
Vertical Pod Autoscaler(VPA)는 Pod의 수를 변경하지 않고, 개별 Pod에 할당된 CPU 및 메모리 리소스를 자동으로 조정하는 기능이다.
동작 방식
- Kubernetes Metrics Server를 통해 Pod의 리소스 사용량을 지속적으로 모니터링한다.
- 사용량이 증가하면 CPU 및 메모리 요청(Request)과 제한(Limit) 값을 동적으로 조정한다.
- 기존 Pod를 삭제하고 새롭게 업데이트된 리소스 설정으로 재시작한다.
설정 예시
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: example-vpa
spec:
targetRef:
apiVersion: apps/v1
kind: Deployment
name: example-deployment
updatePolicy:
updateMode: Auto
장점
- 개별 Pod의 리소스를 최적화하여 불필요한 리소스 낭비 방지
- CPU 및 메모리 사용량을 기반으로 자동 조정 가능
단점
- Pod가 재시작되므로 무중단 배포 전략과 함께 고려해야 함
- HPA와 동시에 적용할 경우 충돌 가능성 있음
3. CA(Cluster Autoscaler)
개요
Cluster Autoscaler(CA)는 클러스터의 노드 개수를 자동으로 조정하는 기능이다. 스케줄링할 수 없는 Pod이 존재하면 새로운 노드를 추가하고, 불필요한 노드는 자동으로 축소한다.
동작 방식
- 스케줄링되지 못한 Pending Pod이 감지되면 새 노드를 추가
- 사용되지 않는 노드는 자동으로 축소하여 비용 절감
- 클라우드 프로바이더(AWS, GCP, Azure 등)의 오토스케일링 그룹과 연동 가능
설정 예시 (AWS EKS)
AWS EKS에서는 CA를 사용하기 위해 Auto Scaling Group과 연동하여 설정할 수 있다.
kubectl apply -f cluster-autoscaler-autodiscover.yaml
장점
- 노드 수를 자동으로 조정하여 리소스 최적화
- HPA 및 VPA와 함께 사용 가능하여 클러스터 확장성 향상
단점
- 노드 추가 및 제거는 시간이 다소 걸릴 수 있음
- 클라우드 환경에 따라 구성이 다를 수 있음
4. HPA, VPA, CA의 비교
오토스케일링 기법 | 동작 방식 | 주요 목적 | 주요 사용 사례 |
---|---|---|---|
HPA | Pod 개수 조정 | 트래픽 변화 대응 | 웹 서비스, API 서버 |
VPA | Pod 리소스 조정 | 리소스 최적화 | 배치 작업, 데이터 처리 |
CA | 노드 개수 조정 | 클러스터 리소스 최적화 | 클라우드 기반 클러스터 |
결론
Kubernetes의 오토스케일링 기법은 다양한 환경과 워크로드에 맞춰 사용될 수 있다. HPA는 트래픽 변동이 심한 애플리케이션에 적합하고, VPA는 리소스 최적화가 중요한 워크로드에 효과적이며, CA는 클러스터 수준의 확장성을 관리하는 데 필수적이다. 이러한 오토스케일링 기법을 적절히 활용하면 Kubernetes 클러스터의 성능과 비용을 효과적으로 최적화할 수 있다.