🥞 BE
home

Ch18. 오토스케일링

클라우드 컴퓨팅의 유용한 기능 중 하나
쿠버네티스의 기본 오토스케일링 기능: 수평적 파드 오토스케일러(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 사용률 정상적으로 모니터링 하는지 확인하기