Kubernetes 自动缩放:HPA 无法使用 Java Netty API 的自定义指标

Kubernetes autoscaling : HPA not working with custom metrics for Java Netty API

我正在根据自定义指标设置 HPA - 基本上没有。部署的线程数。

我创建了一个 PrometheusRule 来获取平均线程数(基于 5 分钟)。在容器上,我正在做续。负载增加线程和平均值也越来越高。

我从 2 个副本开始,当当前值超过目标值时,我没有看到我的部署扩展。

如您所见,已将目标设置为 44,当前值为 51.55 超过 10 分钟,但仍然没有放大。

版本信息

普罗米修斯规则

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  name: rdp-rest
  namespace: default   
  labels:
    app.kubernetes.io/name: node-exporter
    app.kubernetes.io/version: 1.0.1
    prometheus: k8s
    role: alert-rules
    run: rdp-rest
    app: rdp-rest
spec:
  groups:
  - name: hpa-rdp-rest
    interval: 10s
    rules:
    - expr: 'avg_over_time(container_threads{container="rdp-rest"}[5m])'
      record: hpa_custom_metrics_container_threads_rdp_rest
      labels:
        service: rdp-rest

清单 - https://github.com/prometheus-operator/kube-prometheus/tree/release-0.7/manifests

更新(7 月 6 日) - 具有自定义指标的 HPA 适用于 nodejs/ngnix 等任何其他技术,但不适用于 netty api

有什么想法吗?

终于在一周后找到了根本原因。

所以问题出在标签上。我有 2 个具有相同标签的部署。所以内部 hpa 正在做的是获取所有带有该标签的 pods 的统计数据,然后进行缩放 up/down。一旦我更正了标签,hpa 就按预期工作了。

但在普罗米修斯 UI 上同样显示了仅一种类型 pods 的统计数据。 看起来像一些内部错误或其他东西。当我们提供名称时没有得到它为什么会根据标签获取统计信息。

要记住的一点:始终仔细检查您的标签。