水平 Pod 自动扩展(HPA)是 Kubernetes 的一项功能,可根据观察到的 CPU 和内存使用情况自动调整部署中 Pod 的数量。这可确保您的应用程序能高效处理不同的负载,而无需人工干预。


下面的代码演示了如何创建一个 HPA 资源,根据 CPU 利用率调整 Pod 的数量。

[代码清单]

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
 name: my-app-hpa
spec:
 scaleTargetRef:
  apiVersion: apps/v1
  kind: Deployment
  name: my-app
 minReplicas: 1
 maxReplicas: 10
 metrics:
  - type: Resource
   resource:
​    name: cpu
​    target:
​     type: Utilization
​     averageUtilization: 50

[执行结果]

该 YAML 配置在应用时不会产生直接输出,但会创建一个 HPA 资源,用于监控 my-app 部署中 Pod 的 CPU 使用情况。如果 CPU 平均使用率超过 50%,HPA 就会增加 Pod 的数量,最多不超过 10 个。

HPA 资源以 YAML 格式定义,指定目标部署和所需的 CPU 利用率百分比。minReplicas 和 maxReplicas 字段决定了扩展限制。当 CPU 使用率超过定义的阈值时,Kubernetes 会自动创建更多 Pod 来平衡负载,反之,如果负载减少,它就会减少 Pod 的数量。

[小知识]

HPA 还可以根据自定义指标进行扩展,而不仅仅是 CPU 和内存。

HPA 控制器会持续监控指标,并默认每 30 秒调整一次 Pod 的数量。

要有效使用 HPA,请确保在群集中安装了 metrics-server,因为它会收集资源使用数据。