본문 바로가기
gcp

Google Kubernetes Engine(GKE) 오토스케일

by 초특급하품 2022. 1. 23.

Google Kubernetes Engine(GKE)은 kubernetes를 관리형으로 제공하는 gcp 서비스이다. 더 정확히는 master node에 대한 완전 관리와 worker node 기능 일부를 책임진다.

 

쿠버네티스를 GKE로 운영하는 데 그 이점 중 오토스케일 관련된 부분도 상당하다. 부하에 따라 병렬적으로 스케일링은 물론이고, 리소스를 수직적으로 확장할 수도 있다. 각 컴포넌트에 맞는 적절한 오토스케일 전략이 필요하므로, 아래 지원되는 기능을 잘 활용하면 서비스를 안정적으로 돌릴 수 있다.

 

pod 단위

Horizontal Pod Autoscaler(HPA)

pod에 부하가 늘어남에 따라 임계치와 비교해서 pod의 개수를 조절한다.

kubectl autoscale deployment 를 사용하면 적용되고 HPA가 적용된다. --cpu-percent, --min, --max같은 값을 넘기면 측정되는 메트릭에 따라 오토스케일 된다. 이렇게 생성한 HPA는 kubectl get hpa로 확인할 수 있다.

 

Vertical Pod Autoscaler(VPA)

경우에 따라서는 스케일 아웃만으로 부족할 수 있다. OutOfMemory로 컨테이너가 죽는다거나 cpu가 피크를 찍는다면 성능을 올려야 한다. 이 경우 VPA가 스케일 업을 담당한다. pod의 사용률을 모니터링해서 cpu, memory를 분석하고, 리소스가 부족하다고 판단될 경우 pod 리소스를 늘리고 재배치한다. 자동으로 pod의 스케일 업도 가능하고, 필요하다면 적절한 수치를 제안하는 recommendation 필드만 참조하는 것도 의미가 있다.

 

 

node 단위

Cluster Autoscaler(CA)

pod이 증가하는데 할당할 node가 부족한 경우 node pool에서 node를 추가한다. 필요한 pod 수가 줄어들어 node가 비거나, 재배치로 인해 불필요한 노드가 생기면 node를 제거한다.

 

Node Auto Provisioning(NAP)

새로운 pod을 프로비저닝 해야 하는데, 수용 가능한 node가 없는 경우 새로운 node pool을 추가한다.

 

댓글