Horizontal Pod Autoscaler(HPA)
Horizontal Pod Autoscaler(HPA)与 RC、Deployment 一样,也属于一种 Kubernetes 资源对象。通过追踪分析指定 RC 控制的所有目标 Pod 的负载变化情况,来确定是否需要有针对性地调整目标 Pod 的副本数量。当前,HPA 有以下两种方式作为 Pod 负载的度量指标。
CPUUtilizationPercentage。
应用程序自定义的度量指标,比如服务在每秒内的相应请求数(TPS 或 QPS)。
在 CPUUtilizationPercentage 计算过程中使用到的 Pod 的 CPU 使用量通常是 1min 内的平均值。
CPUUtilizationPercentage 是一个算术平均值,即目标 Pod 所有副本自身的 CPU 利用率的平均值。一个 Pod 自身的 CPU 利用率是该 Pod 当前 CPU 的使用量除以它的 Pod Request 的值,如果某一时刻 CPUUtilizationPercentage 的值超过 80%,则意味着当前 Pod 副本数量很可能不足以支撑接下来更多的请求,需要进行动态扩容,而在请求高峰时段过去后,Pod 的 CPU 利用率又会降下来,此时对应的 Pod 副本数应该自动减少到一个合理的水平。
如果目标 Pod 没有定义 Pod Request 的值,则无法使用 CPUUtilizationPercentage 实现 Pod 横向自动扩容。
HPA 需要 Metrics Server 获取度量指标。
定义HPA
YAML
下面是 HPA 定义的一个具体例子:
根据上面的定义,我们可以知道这个 HPA 控制的目标对象是一个名为 php-apache 的 Deployment 里的 Pod 副本,当这些 Pod 副本的 CPUUtilizationPercentage 的值超过 90% 时会触发自动动态扩容行为,在扩容或缩容时必须满足的一个约束条件是 Pod 的副本数为 1~10。
kubectl create
除了可以通过直接定义 YAML 文件并且调用 kubectl create 的命令来创建一个 HPA 资源对象外,还可以通过下面的简单命令行直接创建等价的 HPA 对象:
最后更新于
这有帮助吗?