•
클라우드 컴퓨팅의 유용한 기능 중 하나
•
쿠버네티스의 기본 오토스케일링 기능: 수평적 파드 오토스케일러(Horizontal Pod Autoscaler, HPA)
◦
HPA: CPU 사용률 기반으로 디플로이먼트를 이용해 실행된 파드 개수를 늘리거나 줄임
1. HPA의 구조
RC: Replication Controller
•
HPA는 컨트롤러 매니저(kube-controller-manager) 안에서 주기적으로 실행하면서 설정된 HPA의 상태를 확인함
•
디플로이먼트에 속한 파드들의 상태를 모니터링하다가 지정된 조건에 이르면 디플로이먼트를 scale해서 파드 개수를 늘리거나 줄임
•
실행할 때마다 지정된 자원의 사용량을 쿠버네티스 API로 확인한 후, 설정된 HPA 조건에 맞을 때 오토스케일링 실행
오토스케일링 기준
: 대상 파드 개수 = (현재 파드의 CPU 사용률을 모두 더한 값 / 목표 CPU 사용률) → 올림
타겟 CPU 사용률을 60이라고 설정한 HPA가 있을 때, 파드 2개가 있다고 가정하고 CPU 사용률 각각이 50, 80이라고 하자
⇒ (50 + 80) / 60 = 2.17 → 3 (기존 파드 개수 2개에 추가로 1개의 파드를 더 실행)
•
오토스케일링 중 추가로 오토스케일링하지 않도록 대기 시간 설정 가능
2. HPA 설정하기
# autoscaling/autoscaling.yaml
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: kubernetes-simple-app-hpa
namespace: default
spec:
maxReplicas: 10 # 파드 개수를 최대 몇 개까지 늘릴 것인가
minReplicas: 1 # 파드 개수를 최소 몇 새까지 줄일 것인가
scaleTargetRef: # 오토스케일링 대상 설정
apiVersion: apps/v1
kind: Deployment
name: kubernetes-simple-app
targetCPUUtilizationPercentage: 30 # 오토스케일링을 적용할 CPU 사용률 (30%)
Python
복사
# 별도의 템플릿으로 저장하지 않고도 kubectl 명령으로 클러스터에 적용 가능
kubectl autoscale deployment kubernetes-simple-app --cpu-percent=30 --min=1 --max=10
Python
복사
•
CPU 사용률 정상적으로 모니터링 하는지 확인하기