[Kubernetes] 쿠버네티스 리소스 관리 - HPA
pod의 컴퓨팅 리소스 관리
https://github.com/sungsu9022/study-kubernetes-in-action/issues/14
deployment.yaml > spec.containers.resources
쿠버네티스 #21 - 리소스(CPU/Memory) 할당과 관리
Kubernetes Resource Request와 Limit의 이해
HPA
- HPA는 Deployment의 상위 개념으로, 쿠버네티스 API 및 Controller 형태로 구현된다.
- Metric Server로부터 메트릭을 수집하여 spec.metrics에 설정되어 있는 pod의 리소스 사용량을 기준으로 autoscaling 한다.
- 일반적으로 리소스 메트릭 API (metrics.k8s.io, custom.metric.k8s.io 또는 external.metrics.k8s.io)에서는 cpu 및 memory와 같은 리소스를 지원한다.
- 실행 주기는 kube-controller-manager의
--horizontal-pod-autoscaler-sync-period
파라미터에 의해 결정된다. (default : 15초)
- HPA가 Autoscaling할 때의 쿨다운 시간
- Autoscaling은 현재 시점의 데이터가 기준이 되는데, 그러다 보니 Autoscaling이 이뤄지고 나서 실제로 pod가 늘어 나고 있긴 하지만 아직 pod가 실행되고 있는 도중에 다시 Autoscaling을 통해서 pod를 늘리라는 요청이 발생할 수도 있다. 그래서 일단 한번 Autoscaling이 일어나면 일정시간 동안은 추가로 Autoscaling이 일어나지 않게 쿨다운 시간을 둘 수 있다.
- pod의 Scale up 기본 쿨다운 시간은 3분이며,
--horizontal-pod-autoscaler-upscale-delay
옵션을 사용한다. - pod의 Scale down 기본 쿨다운 시간은 5분이며,
--horizontal-pod-autoscaler-downscale-delay
옵션을 사용한다.
- Metrics Server에서 제공하는 API는 CPU나 Memory 리소스 밖에 수집하지 못한다.
- 그 외 수집할 리소스는 사용자가 직접 커스텀 메트릭 리소스를 만들어서 사용해야 함
- autoscaling/v2alpha1 API object 사용
- 별도의 configuration 과정이 다수 필요
- GKE에서는 Stackdriver apapter를 정식으로 지원
- 이외 환경에서는 Prometheus adapter를 사용해야 하지만 개발 상태는 초기 상태
- application에서 Prometheus format으로 custom metrics를 expose 해야 함
Leave a comment