我有一个 Java 应用程序在 K8s 上运行,部署中有 min:2 和 max:6 pod。堆最小值:256Mb,堆最大值:512Mb。请求和限制内存为 1Gi 这是 hpa 规范:
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 6
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 60
- type: Resource
resource:
name: memory
targetAverageUtilization: 60
在性能测试期间,我注意到部署正试图非常积极地扩展。
无负载时,内存利用率在 33% 左右,根据这个链接https://kubernetes.io/docs/tasks/run-application/horizontal -pod-autoscale/
的公式大致了解一下想要的豆荚是desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
从 K8s 监控中,我注意到它会在内存利用率增加到 40% 左右时尝试扩展。如果我正确理解上述公式的工作原理desiredReplicas = ceil[2*(0.4/0.6)] = 2
,那么它不应该按比例放大。
我理解正确吗?