-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HPA MEMORY #159
Comments
您提供的文本包含了对Horizontal Pod Autoscaler (HPA) 工作原理的详细解释以及一些具体的数学公式。以下是格式化后的数学公式: 公式:[ 这个公式用于计算基于当前指标值和期望指标值的期望副本数, 分析 CPU从2个副本缩容到1个副本的条件 375%: [ 分析 Memory从2个副本缩容到1个副本的条件 40%: [ CPU 扩容和缩容的触发条件
[
[
[
[ Memory扩容和缩容的触发条件
[
[
[
[ 请注意,这些公式是根据您的描述进行格式化的,确保它们在您的环境中正确显示可能需要一些调整。 |
Horizontal Pod Autoscaler (HPA) 详解
Horizontal Pod Autoscaler (HPA) 通过监控 Pod 的资源利用率(如 CPU、内存等)来动态调整 Pod 的副本数量。其基本工作原理如下:
公式:
其中,ceil 表示向上取整。
describe information
kubectl describe hpa aibang-deployment-hpa -n aibang
根据kubernets官方文档,如果创建Horizontal Pod Autoscaler时 指定了多个指标,那么会按照每个指标分别计算扩缩的副本数,然后选择最大的那个值进行扩缩
,比如我的场景中,内存计算后为最大值,因此理论上进行扩缩,但取最大值为2,因此副本数为2,保持不变
对于我上面的配置,HPA 将根据 CPU 和内存的利用率来调整 Pod 的副本数量。
分析 CPU
所以,当 CPU 利用率低于 375% 时,HPA 将删除一个副本。
分析 Memory
所以,当内存利用率低于 40% 时,HPA 将删除一个副本。
结论
虽然CPU 利用率低于375%,但内存利用率为58%,因此HPA将选择内存利用率的计算结果作为最终的副本数,即2个副本。
HPA 配置
CPU 扩容和缩容的触发条件
1. 从1个副本扩容到2个副本的条件 825%
具体公式如下:
所以,当 CPU 利用率超过 825% 时,HPA 将创建第二个副本。
2. 从2个副本扩容到3个副本的条件 825%
具体公式如下:
所以,当 CPU 利用率超过 825% 时,HPA 将创建第三个副本。
3. 从3个副本缩容到2个副本的条件 500%
具体公式如下:
所以,当 CPU 利用率低于 675% 时,HPA 将不会立即删除一个副本。
再看下如果是500%的情况:
所以,当 CPU 利用率低于 500% 时,HPA 将删除一个副本,副本数变为 2。
4. 从2个副本缩容到1个副本的条件 375%
具体公式如下:
所以,当 CPU 利用率低于 675% 时,HPA 将不会立即删除一个副本。
再看下如果是500%的情况:
所以,当 CPU 利用率低于 500% 时,HPA 将不会立即删除一个副本。
所以再看下如果是375%的情况:
所以,当 CPU 利用率低于 375% 时,HPA 将删除一个副本,副本数变为 1。
验证结论
根据上面的分析和计算,您的结论是正确的:
Memory扩容和缩容的触发条件
公式:desiredReplicas = ceil[currentReplicas * (currentMetricValue / desiredMetricValue)]
其中,ceil 表示向上取整。
根据您的 HPA 配置,当内存利用率超过 80% 时,HPA 将尝试增加副本数量。具体来说,当内存利用率超过 80% 时,HPA 将根据以下公式计算所需的副本数量:
代入原始公式验证:
desiredReplicas = ceil[3 * (50 / 80)]
= ceil[3 * 0.625]
= ceil[1.875]
= 2
1. 从1个副本扩容到2个副本的条件 88%
具体公式如下:
所以,当内存利用率超过 88% 时,HPA 将创建第二个副本。
例如 当内存利用率超过 90%的时候
所以,当内存利用率超过 90% 时,HPA 将创建第二个副本。
2. 从2个副本扩容到3个副本的条件 88%
具体公式如下:
3. 从3个副本缩容到2个副本的条件 53%
具体公式如下:
所以,当内存利用率低于 72% 时,HPA 将不会立即删除一个副本。
再看下如果是70%的情况:
所以,当内存利用率低于 70% 时,HPA 将不会立即删除一个副本。
再看下如果是60%的情况:
所以,当内存利用率低于 60% 时,HPA 将不会立即删除一个副本。
再看下如果是55%的情况:
所以,当内存利用率低于 55% 时,HPA 将不会立即删除一个副本。
再看下如果是53%的情况:
所以,当内存利用率低于 53% 时,HPA 将删除一个副本,副本数变为 2。
4. 从2个副本缩容到1个副本的条件 40%
具体公式如下:
所以,当内存利用率低于 72% 时,HPA 将不会立即删除一个副本。
再看下如果是70%的情况:
所以,当内存利用率低于 70% 时,HPA 将不会立即删除一个副本。
再看下如果是60%的情况:
所以,当内存利用率低于 60% 时,HPA 将不会立即删除一个副本。
再看下如果是55%的情况:
所以,当内存利用率低于 55% 时,HPA 将不会立即删除一个副本。
再看下如果是50%的情况:
所以,当内存利用率低于 50% 时,HPA 将不会立即删除一个副本。
再看下如果是40%的情况:
所以,当内存利用率低于 40% 时,HPA 将删除一个副本,副本数变为 1。
验证结论
根据上面的分析和计算,您的结论是正确的:
关键点:
总的来说,您的理解是正确的,只是在具体数值的计算上需要小心。HPA 的行为确实如您所描述,会根据当前的资源使用情况动态调整副本数,以保持资源利用率接近目标值[1].
Citations:
[1] https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
[2] https://kubernetes.io/ja/docs/tasks/run-application/horizontal-pod-autoscale/
[3] https://kubernetes.io/ja/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
[4] https://qiita.com/sheepland/items/37ea0b77df9a4b4c9d80
[5] https://blog.studysapuri.jp/entry/2020/04/10/hpa
The text was updated successfully, but these errors were encountered: