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
我很困惑为什么创建了第二个副本,为什么它没有出现故障?我有东西吗?请提出建议。
答案 0 :(得分:2)
没有下降的原因:
HPA控制器计算副本数的方式是
C:\Users\MassDotNet\AppData\Local\Temp\2ae2dbc4-c709-475b-b762-72108b8ecb9f
在您的情况下,desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )]
是根据Pod中给定指标的平均值计算得出的,因此currentMetricValue
是因为设置了(463 + 471)/2 = 467Mi
。
targetAverageValue
为700Mi,因此desiredMetricValue
为
desiredReplicas
ceil(x)将为您提供大于或等于x的最小整数。
上升的原因:
假设第一个吊舱位于大约463Mi,则ceil[2 * (467 / 700)] = ceil[1.34] = 2
是
desiredReplicas
因此,如果您希望它只是该工作负载的一个容器,则ceil[2 * (463 / 700)] = ceil[1.32] = 2
必须至少为950Mi。