keda-operator-metrics-apiserver:找不到 s0-prometheus-http_requests_in_progress 的匹配指标

问题描述 投票:0回答:1

尝试使用 KEDA 进行扩展时,我在 keda-operator-metrics-apiserver pod 日志上遇到以下错误。

E0602 05:26:23.321583       1 status.go:71] apiserver received an error that is not an metav1.Status: &status.Error{s:(*status.Status)(0xc00105e2c0)}: rpc error: code = Unknown desc = error when getting metric values no matching metrics found for s0-prometheus-http_requests_in_progress

正如我们在这个错误中看到的,它说,

no matching metrics found for s0-prometheus-http_requests_in_progress
。它已自动将
s0-prometheus-
添加到 metricName 中。这是什么原因呢?

如何解决这个问题并读取指标并扩展我的容器?

我创建了一个 KEDA ScaledObject,如下所示。

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: keda-so-prmts
  namespace: mynamespace
spec:
  scaleTargetRef:
    name: abc-test-yy
  pollingInterval:  10
  cooldownPeriod:   300
  minReplicaCount:  1
  maxReplicaCount:  10
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://10.1.254.12:9090
      metricName: http_requests_in_progress
      query: sum(http_requests_in_progress{action="getData", container="abc-test-yy", controller="Fetching", endpoint="8080", exported_endpoint="api/FetchService/getData/{productId}", job="abc-test-yy", method="POST", namespace="mynamespace", service="abc-test-yy"})by(container)
      threshold: '1'
      namespace: mynamespace
kubernetes prometheus keda horizontalpodautoscaler
1个回答
0
投票

有同样的问题,最后这个对我有用:

  • 检查对象创建后由 KEDA 分配的 scaledObject 资源内的 status.externalMetricNames(这些名称与 KEDA 创建的 hpa 资源内的指标名称相匹配)
  • 对于基于 prometheus 的指标,您可以获得 s0-prometheus 和 s1-prometheus 等。
  • 似乎 KEDA 使用这些名称创建了某种伪 CRD,因为这些查询随后就可以工作了
  • kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/mynamespace/s0-prometheus?labelSelector=scaledobject.keda.sh%2Fname%3Dname-of-scaled-object
  • kubectl get --raw /apis/external.metrics.k8s.io/v1beta1/namespaces/mynamespace/s1-prometheus?labelSelector=scaledobject.keda.sh%2Fname%3Dname-of-scaled-object
© www.soinside.com 2019 - 2024. All rights reserved.