问题描述
下午好。我正在使用HPA(HorizontalPodAutoscaler)来自动缩放Pod的副本,在这种情况下,我使用内存使用作为参考,我声明如下:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
Metadata:
name: find-complementary-account-info-1
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: find-complementary-account-info-1
minReplicas: 2
maxReplicas: 5
metrics:
- type: Resource
resource:
name: memory
target:
type: utilization
averageutilization: 70
我想要的是在Pod的内存百分比使用率大于70%时自动缩放我的Pod,并且当此百分比下降时,我的副本将返回到声明的最小值,但是,在进行测试时,我将限制设置为70 ,如果没有,但是,当内存使用率低于此值时,副本将在4中继续。
[dockermd@tmp108 APP-MM-ConsultaCuentaPagadoraPospago]$ kubectl get hpa -o wide
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
find-complementary-account-info-1 Deployment/find-complementary-account-info-1 65%/70% 2 5 4 2d4h
我对HPA的概念有误,或者我以错误的方式声明了HPA的配置,或者一旦内存使用量低于指示的使用量,如何减少副本数
我的环境是本地环境,并且已配置了Metalb,并且我使用LoadBalancer公开了我的服务
解决方法
它正在按设计工作。通过使用以下公式,algorithm counts所需的副本数:
desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
因此,如果您的desiredMetricValue
为70%,而currentMetricValue
为65%,则
desiredReplicas=4*(65%/70%)=~3.7
CEIL()函数返回大于或等于数字的最小整数值,因此在这种情况下为4。
如果要将数量减少到3个副本,则必须将利用率降低到52.5%:
3=4*(`currentMetricValue`/70)
currentMetricValue=52.5%