k8s从入门到放弃之HPA控制器
Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负载增加时保持性能,并在负载减少时节省资源。
工作原理:
HPA控制器定期查询资源指标API(对于CPU和内存等资源指标)和自定义指标API(对于其他自定义指标),以获取目标对象的平均利用率或平均值(根据所选指标的不同而不同)。基于此信息以及用户指定的目标值,HPA计算出所需的副本数,并更新目标对象的规格以达到该所需的副本数。
资源文档kubectl explain hpa
HPA控制器案例
apiVersion: apps/v1
kind: Deployment
metadata:name: dy-nginx
spec:selector:matchLabels:app: webtemplate:metadata:labels:app: webspec:containers:- name: nginximage: nginx:1.20.0imagePullPolicy: IfNotPresentresources:limits:cpu: "100m"ports:- name: httpprotocol: TCPcontainerPort: 80
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:name: nginx-hpa
spec:scaleTargetRef:apiVersion: apps/v1kind: Deploymentname: dy-nginxminReplicas: 1maxReplicas: 10metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50
查看pod状态和hpa状态
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
dy-nginx-665dbcdfbd-ddh58 1/1 Running 0 2m
[root@master ~]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx-hpa Deployment/dy-nginx 0%/50% 1 10 1 2m7s