DevOps와 Infra/AWS EKS / / 2023. 9. 10. 09:39

08. [AWS EKS] metrics server 설치 / HPA autoscaling

(여기서부터는 오직 회사 내부에서 정리를 위한 글)

 

설치 이유

HPA(Horizontal Pod Autoscaler)가 auto scale out하기 위해서는 CPU와 메모리 등 자원의 사용량을 모니터링 하고 그 데이터를 기반으로 해야하는데 이를 위해 metrics server 설치해야한다. Metrics server를 설치해야 다음 명령어도 동작한다.

kubectl top nodes

 

설치

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

다른 설정 파일을 수정할 필요는 없다.

 

metric은 pull 방식으로 15초마다 한 번씩 갱신된다.

 

HPA 실습

다음과 같이 각 deployment에 대해 command로 min, max를 설정해 줄 수도 있고

kubectl get deployment -n venus
kubectl autoscale deployment venus-x2bee-api-bo-vanilla-deploy -n venus --cpu-percent=80 --min=2 --max=4
kubectl get hpa -n venus

pipeline 코드를 통해서 수정할 수도 있다.

dev-values.yaml

    resources:
      requests:
        memory: 100Mi
        cpu: 100m
      limits:
        memory: 2000Mi
        cpu: 1000m
    replicas:
      min: 2
      max: 4

hpa.yaml

targetCPUUtilizationPercentage: 80

 

request > cpu 기준 70%가 넘으면 scale out 수행

⇒ 100m x 0.7 = 70m (1pod) ⇒ request 기준으로 산정된다.

→ CPU 사용률 1분 간격 체크

⇒ 1분동안 산정된 CPU가 만약 request가 280m가 들어오면

70m x 4 (400%) = 280m (4pod - replicas)가 생성된다.

pod 스케쥴링 sync는 15초 간격으로 수행

Pod downscaling은 5분 간격으로 수행

위 모두 metric server를 통해서 수집된 정보를 바탕으로 수행된다.

 

$ kubectl get hpa -n venus

Targets에 나타나는 첫 숫자 (0%/80% 에서 0%)는 request에 적힌 CPU 대비 퍼센트이다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유