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: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: nginx
image: nginx:1.20.0
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: "100m"
ports:
- name: http
protocol: TCP
containerPort: 80
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: nginx-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: dy-nginx
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 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