HPA 구성하기

Horizontal Pod AutoScaler 구성

1. 메트릭 서버 배포

Metrics Server는 쿠버네티스에 내장된 autoscaling을 위한 확장 가능하고 효율적인 컨테이너 리소스 메트릭 소스입니다.

이러한 메트릭은 deployments의 확장 동작을 유도 합니다.

Kubernetes Metrics Server를 사용하여 Metrics Server를 배포 합니다.

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.4.1/components.yaml

Metrics Server APIService의 상태를 확인합니다. (몇 분 정도 소요될 수 있습니다).

kubectl get apiservice v1beta1.metrics.k8s.io -o json | jq '.status'

이제 배포된 애플리케이션을 확장할 준비가 되었습니다.

2. HPA로 애플리케이션 확장하기

예제 애플리케이션을 배포하고 TCP 포트 80으로 서비스를 노출 합니다. 이 애플리케이션은 php-apache 이미지를 기반으로 하는 커스텀 빌드 이미지 입니다. index.php 페이지는 계산을 수행하여 CPU 부하를 생성 합니다. 자세한 정보는 여기에서 확인할 수 있습니다.

kubectl create deployment php-apache --image=us.gcr.io/k8s-artifacts-prod/hpa-example
kubectl set resources deploy php-apache --requests=cpu=200m
kubectl expose deploy php-apache --port 80

kubectl get pod -l app=php-apache

HPA 리소스를 만듭니다.이 HPA는 컨테이너 리소스로 할당된 CPU가 50%를 초과할 때 확장됩니다.

kubectl autoscale deployment php-apache `#The target average CPU utilization` \
    --cpu-percent=50 \
    --min=1 `#The lower limit for the number of pods that can be set by the autoscaler` \
    --max=10 `#The upper limit for the number of pods that can be set by the autoscaler`

kubectl을 사용하여 HPA를 봅니다. 1-2분 동안 <unknown>/50%가 표시되고 0%/50%가 표시 될 것입니다.

kubectl get hpa

부하를 생성하여 Pod가 확정 되도록 합니다.

Cloud9 환경에서 새 터미널을 열고 다음 명령을 실행하여 새 컨테이너의 셸로 이동합니다.

kubectl --generator=run-pod/v1 run -i --tty load-generator --image=busybox /bin/sh

while 루프를 실행하여 http:///php-apache 를 계속 가져 옵니다.

while true; do wget -q -O - http://php-apache; done

이전 탭에서 다음 명령을 사용하여 HPA를 확인합니다.

kubectl get hpa -w

HPA는 CPU 평균이 목표(50%)보다 낮아 질 때까지 설정된 최대 값(10)까지 파드를 확장하는 것을 볼 수 있습니다.

Last updated