Kubernetes-HPA副本问题

时间:2019-12-10 12:47:44

标签: kubernetes

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

我很困惑为什么创建了第二个副本,为什么它没有出现故障?我有东西吗?请提出建议。

1 个答案:

答案 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。