Пользовательские метрики Kubernetes HPA из другого развертывания с адаптером Prometheus

#kubernetes #prometheus

Вопрос:

Можно ли масштабировать модуль на основе метрики в Prometheus, которая была удалена из другого модуля, а не из масштабируемого модуля?

модуль репортера, который сообщает метрики
рабочему модулю Prometheus, который должен быть масштабирован в соответствии с этой метрикой

В «Прометее» у меня есть метрика, которая была соскоблена с модуля «репортер-1»:

 custom_metric{endpoint="http",job="reporter",namespace="ns1",pod="reporter-1",service="reporter"} 1
 

Я также создал фиктивную метрику (pod=рабочий) в prometheus:

 custom_metric{endpoint="http",job="reporter",namespace="ns1",pod="worker-1",service="reporter"} 2
 

Я хочу использовать эту метрику (1) для масштабирования рабочих модулей

настраиваемая метрика api:

 kubectl get --raw="/apis/custom.metrics.k8s.io/v1beta1/namespaces/ns1/pods/*/custom_metric" | jq .
 

выход:

 {
  "kind": "MetricValueList",
  "apiVersion": "custom.metrics.k8s.io/v1beta1",
  "metadata": {
    "selfLink": "/apis/custom.metrics.k8s.io/v1beta1/namespaces/ns1/pods//custom_metric"
  },
  "items": [
    {
      "describedObject": {
        "kind": "Pod",
        "namespace": "ns1",
        "name": "worker-1",
        "apiVersion": "/v1"
      },
      "metricName": "custom_metric",
      "timestamp": "2021-10-06T16:25:26Z",
      "value": "2",
      "selector": null
    }
  ] 
}
 

Это неверная метрика! Я ожидаю, что получу :

«значение»: «1» , которое исходит от репортера-1

от HPA:

 spec:
  maxReplicas: 5
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: worker
 

from promotheus afapter config map:

 rules:
- seriesQuery: custom_metric{namespace="ns1",service="reporter}
  seriesFilters: []
  resources:
    overrides:
      namespace:
        resource: namespace
      pod:
        resource: pod
  name:
    matches: custom_metric
    as: custom_metric
  metricsQuery: custom_metric{namespace="ns1",service="reporter}