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