【发布时间】:2019-12-11 00:21:56
【问题描述】:
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: myservice
namespace: mynamespace
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myservice
minReplicas: 1
maxReplicas: 3
metrics:
- type: Resource
resource:
name: memory
targetAverageValue: 700Mi
15 分钟后,我看到 REPLICAS 长到了 2 个。从那以后它就没有下来了。
C:\Users\myuser>kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
myservice Deployment/myservice 490412032/700Mi 1 3 2 4h14m
这些服务没有流量,如下所示,MEMORY 远低于 700Mi(如 HPA 指标中所述)。
C:\Users\myuser>kubectl top pod
NAME CPU(cores) MEMORY(bytes)
myservice-6ff6bdc8d-jx4pc 29m 463Mi
myservice-6ff6bdc8d-zktnm 29m 471Mi
我很困惑为什么创建了第二个副本,为什么它没有下降?我错过了什么吗?请提出建议。
【问题讨论】:
-
平均值是否考虑了所有 pod 的总数,而不是仅考虑一个 pod?
-
这就是我的问题,如果第一个 pod 内存是 463Mi,为什么它创建了 2nd pod?
-
接受的答案是正确的。但是,请记住,内存使用量通常不是合适的缩放指标,因为它不是“流动的”。例如,添加一个额外的副本并不一定会减少现有副本的内存使用量(在某些应用程序中可能是这种情况,但通常并非如此)。 CPU 使用率通常是一个更好的扩展指标。
-
@weibeld 感谢您指出这一点。我的应用程序是内存密集型的,而不是 CPU 密集型的。你在这里建议什么?
-
可能是 CPU 利用率而不是内存利用率。您只需将
memory更改为cpu并调整该值即可。
标签: kubernetes