쿠버네티스/도커(부하에 따라 자동으로 파드 수를 조절하는 HPA)

맹민재·2022년 11월 15일
0

지금까지는 사용자 1명이 파드에 접근하는 방법을 알아봤다. 그런데 사용자가 갑자기 늘어나게 된다면 파드가 더 이상 감당할 수 없어서 해당 서비스를 정상적으로 유지하기 힘들 것이다. 쿠버네티스는 이런 경우를 대비해 부하량에 따라 디플로이먼트의 파드 수를 유동적으로 관리하는 기능을 제공한다. 이를 HPA(Horizontal Pod Autoscaler)라고 한다. 이번에는 HPA를 어떻게 설정하고 사용하는지 알아본다.

1. 디폴로이먼트 생성

2. 앞 포스터에서 구성한 MetalLB가 있으므로 expose를 실행해 로드밸런서 서비스 설정 및 부여된 ip 확인

 kubectl expose deployment hpa-hname-pods --type=LoadBalancer --name=hpa-hname-svc --port=80

HPA 작동 구조

그림을 보면 HPA가 자원을 요청할 때 메트릭 서버(Metrics-Server)를 통해 계측 값을 전달받는다. 현재 메트릭 서버가 없기 때문에 계측 값을 수집하고 전달해 주는 메트릭 서버를 설정해야 한다.

4. 메트릭 서버 오브젝트 스펙 파일로 설치, top 명령으로 파드의 자원이 어느 정도 사용되는지 파악

kubectl create -f ~/_Book_k8sInfra/ch3/3.3.5/metrics-server.yaml

쿠버네티스 메트릭 서버 파일은 깃허브에 올라와 있지만 실습을 위해 실습 파일로 대체(TLS 인증 무시, kubelet이 내부 주소를 우선 사용하게 변경)

현재는 아무런 부하가 없으므로 cpu와 memory 값이 매우 낮게 나온다.

현재 상태는 scale 기준 값이 설정돼 있지 않아서 파드 증설 시점을 알 수가 없다. 따라서 파드에 부하가 걸리기 전에 scale이 실행되게 디플로이먼트에 기준 값을 기록. 이때 Deployment를 새로 배포하기보다는 기존에 배포한 디플로이먼트 내용을 edit 명령으로 직접 수정

7. edit 명령을 통해 request, limits 항목과 그 값 추가

KUBE_EDITOR="vim" kubectl edit deployment hpa-hname-pods

8. autoscale 설정

 kubectl autoscale deployment hpa-hname-pods --min=1 --max=30 --cpu-percent=50

특정 조건이 만족되는 경우에 자동으로 scale 명령이 수행되도록 한다. min은 최소 파드의 수, max는 최대 파드의 수, cpu-percent는 cpu 사용량이 50% 넘게되면 autosclae하겠다는 뜻이다.

profile
ㄱH ㅂrㄹ ㅈr

0개의 댓글