# k8s autoscale - 파드 수를 부하에 맞게 자동으로 조절하는 기능으로 수평 파드 오토스케일러(Horizontal Pod Autoscaler, [[HPA]])를 사용할 수 있다. - [[HPA]]는 [[CPU]]의 평균 사용률과 목표 사용률이 일치하도록 레플리카 수를 조절한다. - 스케일 업은 이전 동작에서 3분 뒤에 발동하고, 스케일 다운은 5분 뒤에 발동된다. - HPA가 목표로 하는 CPU 사용률은 파드의 실제 CPU 사용 시간을 매니페스트에 기재한 CPU 요구 시간으로 나누어서 구한다 - HPA는 파드의 개수만 조절할 수 있기 때문에, 노드의 개수까지 조절하고 싶은 경우에는 클러스터 오토스케일러(Cluster Autoscaler, [[CA]])를 고려한다. 단, 이 기능은 클라우드 프로바이더의 기능 지원이 필수다 ## yml apiVersion: apps/v1 kind: Deployment metadata: name: web-php spec: replicas: 1 selector: matchLabels: run: web-php template: metadata: labels: run: web-php spec: containers: - image: maho/web-php:0.2 name: web-php resources: requests: cpu: 200m --- apiVersion: v1 kind: Service metadata: name: web-php spec: type: NodePort selector: run: web-php ports: - port: 80 protocol: TCP nodePort: 31446 ## Command $ kubectl autoscale deployment web-php --cpu-percent=50 --min=1 --max=10 horizontalpodautoscaler.autoscaling/web-php autoscaled ^ 커맨드 ^ 동작 ^ | kubectl describe node [노드명] | 노드의 자세한 내용을 출력.\\ 리소스 보유량이나 사용량 등 HPA 사용을 계획할 때 필요한 정보 확인 가능 | | kubectl autoscale [컨트롤러] [오브젝트명] | HPA 설정.\\ kubectl autoscale help 를 통해 사용법 확인 가능 | | kubectl get hpa | HPA 상태 출력.\\ get 을 describe로 바꾸면 상세 내용 출력 | ## Docs - [[kubectl_delete]]