测试HPA
1. HPA 工作原理
Pod 弹性伸缩器(HPA)是 Kubernetes 的一项功能,可以对您的应用进行自动扩容和自动缩容。
1.1 为什么要使用 HPA?
使用 HPA,您可以自动缩放在 Replication Controller,Deployment 或者 Replica Set 中的 Pod。HPA 将自动缩放正在运行的 Pod 的数量,以实现最高效率。HPA 中影响 Pod 数量的因素包括:
- 用户定义的允许运行的 Pod 的最小和最大数量。
- 资源指标中报告的观察到的 CPU 或内存使用情况。
- 第三方指标应用程序(例如 Prometheus,Datadog 等)提供的自定义指标。
HPA 通过以下方式改善您的服务:
- 释放因过多的 Pod 而浪费的硬件资源。
- 按照应用需要的性能,自动提高或降低 Pod 数量。
1.2 HPA 是如何工作的?

HPA 是通过循环控制来实现的,其循环周期由下面的 kube-controller-manager
启动参数控制:
参数 | 默认值 | 描述 |
---|---|---|
–horizontal-pod-autoscaler-sync-period | 30s | HPA 审核应用使用资源情况或自定义指标的频率。 |
–horizontal-pod-autoscaler-downscale-delay | 5m0s | 缩容操作完成后,HPA 必须等待多长时间才能进行另外一次缩容操作。 |
–horizontal-pod-autoscaler-upscale-delay | 3m0s | 扩容操作完成后,HPA 必须等待多长时间才能进行另外一次扩容操作。 |
2. 创建nginx资源
要使用HPA创建的负载需要配置资源限制
资源预留为容器启动时必须占用的资源
资源限制为容器最大使用量

3. 通过 Rancher UI 管理 HPA
登录rancher点击资源创建HPA

根据实际情况配置相关参数,这里模拟测试cpu使用大于%1随即触发

等待hpa资源激活

4. 模拟压测
1 | while true; do curl http://192.168.10.21:31274; done |
查看hpa资源情况,已经超过阈值使用量
1 | root@node02:~# kubectl get hpa |
可以看到已经达到最大预期3个pod

停止压测,稍等几分钟后,查看资源使用情况将为0%

缩容的统计窗口时间为5分钟,k8s会评估此窗口内的信息,以此消除突发的指标波动产生的神经质操作。

5. 总结
rancher2.2.2升级到2.3.2后,通过rancherUI配置HPA测试正常通过。
评论
TwikooGiscus