Автоматическое масштабирование AKS с метриками KEDA Prometheus - HPA не может получить метрики

Мы успешно развернули следующую настройку для моего приложения обработки изображений в Azure (AKS):

  • Кластер AKS с 1 узлом графического процессора (который необходимо масштабировать с учетом входящего трафика)
  • 1 модуль, на котором запущена модель Tensorflow на узле графического процессора (максимум 1 модуль на узел из-за ограничений памяти)
  • Prometheus для очистки показателей использования графического процессора (экспортер NVIDIA DCGM)
  • Масштабируемый объект KEDA для горизонтального автомасштабирования модулей (HPA) - в том же пространстве имен, что и наше развертывание
  • Запрос: ceil(avg_over_time(DCGM_FI_DEV_GPU_UTIL{namespace="myproject"}[2m])

Развертывание основано на:

https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stackhttps://keda.sh/docs/1.4/scaler/prometheus/

При такой настройке он может автоматически масштабировать модули (по горизонтали) на основе показателей использования графического процессора DCGM, от 1 до 2 модулей. Следовательно, автоматическое масштабирование кластера следует и масштабирует количество узлов графического процессора в кластере от 1 до 2. Новый требуемый модуль успешно назначается этому новому узлу, и средняя загрузка графического процессора уменьшается. Однако после того, как вновь добавленный узел и второй модуль назначены ему, объект KEDA HPA больше не может получать метрики внешнего графического процессора. Как следствие, объект HPA не работает и не может уменьшить размер модулей, поэтому количество модулей (и узлов) остается равным 2.

Кажется, что все модули и службы на обоих узлах исправны. Кроме того, на новом узле работает модуль экспорта DCGM, поэтому он должен иметь возможность очищать метрики от этого узла.

Есть ли у кого-нибудь опыт с этим? Или знаете, как я могу отлаживать? Ниже вывод, когда я описываю HPA.

Если мы будем использовать другие показатели помимо DCGM, например http_request_total, мы можем получить метрики со всех узлов, поэтому мы ожидаем ошибки в части DCGM, которая нам нужна для метрик графического процессора. Мы установили DCGM в dcgm-exporter пространство имен, а также настроил это в Prometheus additionalScrapeConfig раздел.

Если вам нужна дополнительная информация, чтобы помочь каким-либо образом, пожалуйста, дайте мне знать! Заранее спасибо.

       kubectl describe hpa keda-hpa-prometheus-scaled-object -n myproject

Name:                                                                                  keda-hpa-prometheus-scaled-object
Namespace:                                                                             myproject
Labels:                                                                                app.kubernetes.io/managed-by=keda-operator
                                                                                       app.kubernetes.io/name=keda-hpa-prometheus-scaled-object
                                                                                       app.kubernetes.io/part-of=prometheus-scaled-object
                                                                                       app.kubernetes.io/version=2.0.0
                                                                                       deploymentName=myproject-deployment
                                                                                       scaledObjectName=prometheus-scaled-object
Annotations:                                                                           <none>
CreationTimestamp:                                                                     Thu, 22 Apr 2021 13:30:57 +0200
Reference:                                                                             Deployment/myproject-deployment
Metrics:                                                                               ( current / target )
  "prometheus-http---XX-X-XXX-XXX-9090--DCGM_FI_DEV_GPU_UTIL" (target average value):  41 / 60
Min replicas:                                                                          1
Max replicas:                                                                          2
Deployment pods:                                                                       2 current / 2 desired
Conditions:
  Type            Status  Reason                   Message
  ----            ------  ------                   -------
  AbleToScale     True    SucceededGetScale        the HPA controller was able to get the target's current scale
  ScalingActive   False   FailedGetExternalMetric  the HPA was unable to compute the replica count: unable to get external metric myproject/prometheus-http---XX-X-XXX-XXX-9090--DCGM_FI_DEV_GPU_UTIL/&LabelSelector{MatchLabels:map[string]string{scaledObjectName: prometheus-scaled-object,},MatchExpressions:[]LabelSelectorRequirement{},}: unable to fetch metrics from external metrics API: No matching metrics found for prometheus-http---XX-X-XXX-XXX-9090--dcgm_fi_dev_gpu_util
  ScalingLimited  False   DesiredWithinRange       the desired count is within the acceptable range
Events:
  Type     Reason                        Age                    From                       Message
  ----     ------                        ----                   ----                       -------
  Warning  FailedComputeMetricsReplicas  45m (x12 over 47m)     horizontal-pod-autoscaler  invalid metrics (1 invalid out of 1), first error is: failed to get prometheus-http---XX-X-XXX-XXX-9090--DCGM_FI_DEV_GPU_UTIL external metric: unable to get external metric myproject/prometheus-http---XX-X-XXX-XXX-9090--DCGM_FI_DEV_GPU_UTIL/&LabelSelector{MatchLabels:map[string]string{scaledObjectName: prometheus-scaled-object,},MatchExpressions:[]LabelSelectorRequirement{},}: unable to fetch metrics from external metrics API: No matching metrics found for prometheus-http---XX-X-XXX-XXX-9090--dcgm_fi_dev_gpu_util
  Warning  FailedGetExternalMetric       2m55s (x178 over 47m)  horizontal-pod-autoscaler  unable to get external metric myproject/prometheus-http---XX-X-XXX-XXX-9090--DCGM_FI_DEV_GPU_UTIL/&LabelSelector{MatchLabels:map[string]string{scaledObjectName: prometheus-scaled-object,},MatchExpressions:[]LabelSelectorRequirement{},}: unable to fetch metrics from external metrics API: No matching metrics found for prometheus-http---XX-X-XXX-XXX-9090--dcgm_fi_dev_gpu_util

0 ответов

Другие вопросы по тегам