HPA详解
HPA详解
HPA是Pod水平自动扩缩Horizontal Pod Autoscaler的简称,可以基于多指标,比如CPU利用率、内存利用率等自动扩缩ReplicationController Deployment ReplicaSet 和 StatefulSet这些工作负载中的Pod数量,当然,它不能作用于无法扩缩的对象,比如DaemonSet(一次运行一个Pod)
HPA的具体调整由K8S API Server来调控实现,资源决定了控制器的行为,这个API Server 会去操作对应的对象控制器,比如Deployment Controller,从而去操控对应工作负载的具体Pod数量,以使得Pod的平均CPU利用率与用户所设定的目标值匹配
HPA的控制调整一般是15S一次,这个时间由控制器的--horizontal-pod-autoscaler-sync-period参数指定周期,HPA会把HPA定义中资源使用率和Metrics服务器获取到的具体指标使用率作比较,然后生成一个扩缩比例
算法细节 [code] 期望副本数 = ceil[当前副本数 *(当前指标/期望指标)] 例如,当前度量值为 200m,目标设定值为 100m,那么由于 200.0/100.0 == 2.0, 副本数量将会翻倍。 如果当前指标为 50m,副本数量将会减半,因为50.0/100.0 == 0.5。 如果计算出的扩缩比例接近 1.0 (根据—horizontal-pod-autoscaler-tolerance 参数全局配置的容忍值,默认为 0.1 将会放弃本次扩缩。 [/code]
如果创建HPA的时候指定了多个指标,那么会按照每个指标分别计算扩缩副本数,取最大值进行扩缩。如果有任何一个指标无法顺利计算出扩缩副本数,那么本次扩缩会被跳过
HPA是K8S autoscaling API组的资源,