在后面的文章中,咱们理解了 Kubernetes 的弹性伸缩机制,以及如何应用 Deployment、StatefulSet、DaemonSet 等控制器来实现容器的主动扩缩容。其中,Horizontal Pod Autoscaler(HPA)是一种基于 CPU 使用率的主动缩容计划,能够主动调整 Pod 的数量,以保证系统的资源利用率和稳定性。
一、HPA 的原理
HPA 是 Horizontal Pod Autoscaler 的简称,它能够主动依据 CPU 使用率来调整 Pod 的数量。HPA 的工作原理是基于 Kubernetes 的 API 对象裸露的资源使用率数据,通过自定义的 HorizontalPodAutoscaler 对象来实现主动缩容。
具体来说,HPA 的工作流程如下:
抉择须要监控的 Pod 对象,并设置 MinReplicas 和 MaxReplicas 两个参数,别离示意最小正本数和最大正本数。
通过 Kubernetes 的 API 对象裸露的资源使用率数据,计算出均匀 CPU 使用率。
依据均匀 CPU 使用率,主动调整 Pod 的数量,以保证系统的资源利用率和稳定性。
在 HPA 的实现中,Kubernetes 应用了一个叫做 ReplicaCalculator 的类来计算须要扩缩容的 Pod 数量。在计算过程中,ReplicaCalculator 类会依据 CPU 使用率和指标正本数之间的差别来调整 Pod 的数量。具体来说,HPA 采纳了线性插值算法,计算出 Pod 数量调整的比例,而后再通过 LabelSelectorQuery 对象查问出须要调整的 Pod 对象,最初通过创立或删除 Pod 对象来实现主动缩容。
二、HPA 的演进
在 Kubernetes 1.10 版本中,HPA 引入了一些新的个性,使得 HPA 的应用更加灵便和不便。
1、自定义指标
在之前的版本中,HPA 只能依据 CPU 使用率来进行主动缩容。而在 1.10 版本中,用户能够自定义监控指标,例如内存使用率、网络带宽等,以便更好地满足零碎的需要。要实现自定义指标,用户只须要创立一个自定义的指标处理器(自定义资源对象),而后在 HorizontalPodAutoscaler 对象中援用该处理器即可。
2、HPA 的条件判断
在之前的版本中,HPA 只能依据一个指标来进行主动缩容。而在 1.10 版本中,HPA 反对条件判断,能够依据多个指标来进行主动缩容。例如,能够设置当 CPU 使用率超过 80% 且内存使用率超过 70% 时才进行主动缩容。要实现条件判断,能够在 HorizontalPodAutoscaler 对象中设置 If 属性,指定一个 IfBlock 类来进行条件判断。
3、HPA 的提早限度
在之前的版本中,HPA 在进行主动缩容时没有思考提早的问题。而在 1.10 版本中,HPA 反对提早限度,能够设置最大延迟时间,以保证系统的稳定性和性能。要实现提早限度,能够在 HorizontalPodAutoscaler 对象中设置 MaxScaledDelay 属性,指定最大延迟时间。
三、总结
HPA 是 Kubernetes 中重要的弹性伸缩计划之一,能够主动依据 CPU 使用率来调整 Pod 的数量,以保证系统的资源利用率和稳定性。在 Kubernetes 1.10 版本中,HPA 引入了一些新的个性,使得 HPA 的应用更加灵便和不便。
本文由 mdnice 多平台公布