(여기서부터는 오직 회사 내부에서 정리를 위한 글)
설치 이유
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 대비 퍼센트이다.
'DevOps와 Infra > AWS EKS' 카테고리의 다른 글
10. [AWS EKS] Argocd 설치 (0) | 2023.09.10 |
---|---|
09. [AWS EKS] istio와 istio gateway 설치 (0) | 2023.09.10 |
07. [AWS EKS] 특정 node에 선택적으로 배포하기 위한 labelling (0) | 2023.09.09 |
06. [AWS EKS] AWS CLI2와 kubectl (0) | 2023.09.09 |
05. Jenkins 설치 (0) | 2023.09.09 |