k8s从入门到放弃之HPA控制器

发布于:2025-06-10 ⋅ 阅读:(22) ⋅ 点赞:(0)

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