Horizontal Pod Autoscaler(HPA)

Horizontal Pod Autoscaler(HPA)与 RC、Deployment 一样,也属于一种 Kubernetes 资源对象。通过追踪分析指定 RC 控制的所有目标 Pod 的负载变化情况,来确定是否需要有针对性地调整目标 Pod 的副本数量。当前,HPA 有以下两种方式作为 Pod 负载的度量指标。

  • CPUUtilizationPercentage

  • 应用程序自定义的度量指标,比如服务在每秒内的相应请求数(TPS 或 QPS)。

定义HPA

YAML

下面是 HPA 定义的一个具体例子:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
  namespace: default
spec:
  maxReplicas: 10
  minReplicas: 1
  scaleTargetRef:
    kind: Deployment
    name: php-apache
  targetCPUUtilizationPercentage: 90

根据上面的定义,我们可以知道这个 HPA 控制的目标对象是一个名为 php-apache 的 Deployment 里的 Pod 副本,当这些 Pod 副本的 CPUUtilizationPercentage 的值超过 90% 时会触发自动动态扩容行为,在扩容或缩容时必须满足的一个约束条件是 Pod 的副本数为 1~10。

kubectl create

除了可以通过直接定义 YAML 文件并且调用 kubectl create 的命令来创建一个 HPA 资源对象外,还可以通过下面的简单命令行直接创建等价的 HPA 对象:

kubectl autoscale deployment php-apache --cpu-percent=90 --min=1 --max=10

最后更新于

这有帮助吗?