【问题标题】:Kubernetes - some HPA's are scaling up based on other HPA's metrics not their ownKubernetes - 一些 HPA 正在根据其他 HPA 的指标而不是他们自己的指标进行扩展
【发布时间】:2021-11-05 03:52:12
【问题描述】:

我想知道是否有人能够帮助我了解我在这里做错了什么。我的命名空间中有 3 个部署,每个部署都配置了一个 Horizo​​ntal Pod Autoscaler。然而,尽管每个 HPA 都配置了各自部署的目标,但它们似乎都对相同的 CPU 指标做出反应

$ kubectl get hpa -n my-namespace
NAME       REFERENCE         TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
app1-hpa   Deployment/app1   54%/100%   2         5         5          11h
app2-hpa   Deployment/app2   54%/100%   10        40        39         11h
app3-hpa   Deployment/app3   54%/100%   10        50        39         11h

在我的示例中,app3 是唯一一个忙碌的,但是如果您查看 TARGETS 列,所有 3 个 HPA 的利用率百分比计算相同,因此它们都已按比例放大...例如 app1 ,完全空闲(每个 pod 仅使用 1m cpu)已扩展到 5,因为指标显示它处于 54%/100% ....

我试图实现的是每个 HPA 仅对其配对的部署的 CPU 指标做出反应。因此在上面的例子中,app1 显然会停留在 2 个实例中

我的 HPA 配置如下所示(以下是 app1 的示例)

---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: app1-hpa
  namespace: my-namespace
spec:
  maxReplicas: 5
  minReplicas: 2
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: app1
  targetCPUUtilizationPercentage: 100

这里是 app1 的部署代码(app2 和 app3 都是一样的,只是名称相同)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app1
  labels:
    app: my-namespace
spec:
  replicas: 2
  selector:
    matchLabels:
      app: app
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: app
    spec:
      imagePullSecrets:
      - name: container-registry-access
      containers:
      - name: app
        image: "path_to_registry/location/imagename"
        resources:
          requests:
            memory: 512Mi
            cpu: 500m
          limits:
            memory: 512Mi
            cpu: 1000m
        env:
        - name: LOG_LEVEL
          value: info
        command: ["/entrypoint-app1.sh"]
        imagePullPolicy: Always
      restartPolicy: Always

有谁知道我在这里做错了什么?它似乎正在扩展所有 pod 的整体 CPU 平均值或类似的东西?如果 app3 真的很忙,我不希望 app1 和 app2 在它们实际空闲时也扩大规模

对此的任何帮助将不胜感激

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes?另请附上您的部署 yaml。
  • 嗨 Mikolaj,我正在运行 kubernetes 版本 1.20.9(相当新)...并且我在原始帖子中为上面的 app1 添加了一个示例部署 yaml...

标签: kubernetes autoscaling horizontal-pod-autoscaling


【解决方案1】:

如果除了名称之外所有部署都相同,我建议您更改 spec.template.metadata.labels.app 和 spec.selector.matchLabels.app 以对应正确的应用程序,这意味着每个app1 的这些值将是 app1 而不是 app。 我猜部署认为所有应用程序都是相同的,这就是为什么所有应用程序的 cpu 平均值相同。

【讨论】:

  • 谢谢丹尼...成功了,今天下午让我发疯了 :-)
猜你喜欢
  • 1970-01-01
  • 2021-07-08
  • 2020-10-15
  • 2021-02-17
  • 2020-07-03
  • 1970-01-01
  • 2020-09-27
  • 2021-04-12
  • 2021-11-26
相关资源
最近更新 更多