我想了解hpa是如何工作的,但我有一些担忧:
如果我的服务设置如下:
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 250m
memory: 512Mi
和我这样配置hpa:
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: test-service
minReplicas: 3
maxReplicas: 6
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
是否妨碍我的服务达到极限(500m),对吗?
设置更高的值如80%是否更好?
我有这个疑问,因为在这个配置下,我看到pod扩展到最大数量,即使它们使用的cpu少于限制:
NAME CPU(cores) MEMORY(bytes)
test-service-76f8b8c894-2f944 189m 283Mi
test-service-76f8b8c894-2ztt6 183m 278Mi
test-service-76f8b8c894-4htzg 117m 233Mi
test-service-76f8b8c894-5hxhv 142m 193Mi
test-service-76f8b8c894-6bzbj 140m 200Mi
test-service-76f8b8c894-6sj5m 149m 261Mi
使用的CPU数量小于服务定义中配置的请求。
此外,我看到这里也讨论过这个问题,但我没有得到答案。使用水平Pod自动伸缩以及资源请求和限制
是否妨碍我的服务达到极限(500m) ?
不,hpa没有阻止它(尽管resources.limits))。hpa所做的是当所有pod的平均cpu利用率超过所请求的的50%时启动新的副本。CPU资源,即125m以上。
通过设置更高的值(如80%)来配置是否更好?
不能说,这是特定于应用程序的
水平自动缩放在文档中有很好的描述。