Рейтинг:0

Стек Istio-Prometheus-HPA не обменивается данными [HPA не удалось рассчитать количество реплик]

флаг us

У меня есть кластер с 1 панелью управления и 2 узлами.

Istio устанавливается как Service Mesh.

Я запрашиваю управление через istio ingress.

Я хочу, чтобы он автоматически масштабировался путем обмена метриками между Kubernetes HPA и istio prometheus, но не смог.

Мои модули в kube-system

модули kube-системы

root@ubuntu-master:~# kubectl get pods -n kube-system
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
coredns-78fcd69978-pk69f 1/1 Работает 1 (2д11ч назад) 2д12ч
coredns-78fcd69978-t5dkx 1/1 Работает 1 (2д11ч назад) 2д12ч
etcd-ubuntu-master 1/1 Работает 1 (2д11ч назад) 48д
kube-apiserver-ubuntu-master 1/1 Запуск 2 (2д11ч назад) 48д
kube-controller-manager-ubuntu-master 1/1 Работает 3 (2д11ч назад) 48д
kube-proxy-72q2r 1/1 Работает 0 2d10h
kube-proxy-8qgr9 1/1 Бег 1 (2д11ч назад) 48д
kube-proxy-t4wgr 1/1 Работает 0 2d10h
kube-scheduler-ubuntu-master 1/1 Запуск 3 (2д11ч назад) 48д
metrics-server-84b4bfc7fb-h8gd2 1/1 Работает 0 18h

Мои модули в istio-системе

istio-система

root@ubuntu-master:~# kubectl get pods -n istio-system
ИМЯ ГОТОВ СТАТУС ПЕРЕЗАПУСКА ВОЗРАСТ
grafana-6ccd56f4b6-bw5md 1/1 Бег 0 2d12h
istio-ingressgateway-57c665985b-wj5gr 1/1 Работает 0 2d12h
istiod-78cc776c5b-qkr6b 1/1 Бег 0 2d12h
jaeger-5d44bc5c5d-db2pj 1/1 Бег 0 2d12h
kiali-79b86ff5bc-mj8bn 1/1 Бег 0 2d12h
prometheus-64fd8ccd65-22znf 2/2 работает 0 2d12h
prometheus-adapter-6d9c6c8fdf-lxfbp 1/1 Работает 0 17h

Результат пользовательского интерфейса Прометея:

Результат пользовательского интерфейса Prometheus

Ответ сервера метрик;

Ответ сервера метрик

root@ubuntu-master:~# kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1"
{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"custom.metrics.k8s.io/v1beta1","resources":[{"name":"namespaces/network_transmit_packets_dropped"," singleName":"","namespaced":false,"kind":"MetricValueList","verbs":["get"]},{"name":"namespaces/processes","singularName":""," namespaced":false,"kind":"MetricValueList","verbs":["get"]},{"name":"namespaces/sockets","singularName":"","namespaced":false,"kind ":"MetricValueList","verbs":["get"]},{"name":"пространства имен/spec_memory_swap_limit_bytes","singularName":"","namespaced":false,"kind":"MetricValueList"," глаголы":["получить"]},{"имя":"jobs.batch/kiali_single_validation_processing_duration_seconds_sum","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":[" get"]},{"name":"jobs.batch/kiali_validation_processing_duration_seconds_count","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]}, {"name":"namespaces/kubelet_container_log_filesystem_used_bytes","singularName":"","namespaced":false,"kind":"M etricValueList","verbs":["get"]},{"name":"namespaces/cpu_system","singularName":"","namespaced":false,"kind":"MetricValueList","verbs": ["get"]},{"name":"pods/cpu_user","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]}, {"name":"namespaces/fs_reads_bytes","singularName":"","namespaced":false,"kind":"MetricValueList","verbs":["get"]},{"name":"services /kiali_validation_processing_duration_seconds_sum","singularName":"","namespaced":true,"kind":"MetricValueList","verbs":["get"]},......

здесь, в моем определении HPA

istio kubernetes hpa

root@ubuntu-master:~# kubectl описать hpa html-pdf-v2-hpa -n html-pdf-v2
Имя: html-pdf-v2-hpa
Пространство имен: html-pdf-v2
Ярлыки: <нет>
Аннотации: metric-config.object.istio-requests-total.prometheus/query:
                                                                   сумма(
                                                                     ставка(
                                                                       istio_requests_total {
                                                                         назначение_workload="html-pdf-развертывание",
                                                                         destination_workload_namespace="html-pdf-v2"
                                                                       }[1м]
                                                                     )
                                                                   ) /
                                                                   считать(
                                                                     считать(
                                                                       container_memory_usage_bytes{
                                                                         пространство имен = "html-pdf-v2",
                                                                         pod=~"html-pdf-развертывание.*"
                                                                       }
                                                                     ) по (стручку)
                                                                   )
CreationTimestamp: Ср, 19 января 2022 г., 18:11:14 +0300
Ссылка: Развертывание/html-pdf-развертывание
Метрики: (текущая / целевая)
  «istio-requests-total» в Pod/html-pdf-deploy (целевое значение): <неизвестно> / 10
Минимальные реплики: 1
Максимальное количество реплик: 10
Модули развертывания: 5 текущих / 0 желаемых
Условия:
  Тип Состояние Причина Сообщение
  ---- ------ ------ -------
  AbleToScale True SucceededGetScale контроллер HPA смог получить текущий масштаб цели
  ScalingActive False FailedGetObjectMetric HPA не удалось вычислить количество реплик: невозможно получить метрику istio-requests-total: Pod на html-pdf-v2 html-pdf-deploy/не удалось получить метрики из пользовательского API метрик: сервер не смог найти метрика istio-requests-total для подов
События:
  Тип Причина Возраст от сообщения
  ---- ------ ---- ---- -------
  Предупреждение FailedGetObjectMetric 55s (x4255 более 17 часов) горизонтальное средство автоматического масштабирования модуля не может получить метрику istio-requests-total: модуль на html-pdf-v2 html-pdf-deploy/не может получить метрики из пользовательского API метрик: сервер не может найти метрика istio-requests-total для подов

результат kubectl top pods

root@ubuntu-master:~# kubectl top pods -n istio-system
НАЗВАНИЕ ЦП(ядер) ПАМЯТЬ(байт)
графана-6ccd56f4b6-bw5md 2m 39Mi
istio-ingressgateway-57c665985b-wj5gr 10m 85Mi
istiod-78cc776c5b-qkr6b 7m 61Mi
jaeger-5d44bc5c5d-db2pj 3m 809Mi
киали-79b86ff5bc-mj8bn 4м 1125Ми
прометей-64fd8ccd65-22znf 34m 744mi
прометей-адаптер-6d9c6c8fdf-lxfbp 40m 76Mi

ГПА Ямл.

apiVersion: автомасштабирование/v2beta1
вид: HorizontalPodAutoscaler
метаданные:
  имя: html-pdf-v2-hpa
  пространство имен: html-pdf-v2
  аннотации:
    метрика-config.object.istio-requests-total.prometheus/запрос: |
      сумма(
        ставка(
          istio_requests_total {
            назначение_workload="html-pdf-развертывание",
            destination_workload_namespace="html-pdf-v2"
          }[1м]
        )
      ) /
      считать(
        считать(
          container_memory_usage_bytes{
            пространство имен = "html-pdf-v2",
            pod=~"html-pdf-развертывание.*"
          }
        ) по (стручку)
      )
спецификация:
  максимальное количество реплик: 10
  минРеплики: 1
  Масштабная целевая ссылка:
    apiVersion: приложения/v1
    вид: развертывание
    имя: html-pdf-развернуть
  показатели:
    - тип: Объект
      объект:
        metricName: istio-requests-total
        цель:
          апиВерсия: v1
          вид: стручок
          имя: html-pdf-развернуть
        целевое значение: 10

Я беспокоюсь о том, где я ошибся и шел ли я по правильному пути.

Первый пост Жду ответов. Надеюсь, я правильно объяснил.

Спасибо

c4f4t0r avatar
флаг nl
Не могли бы вы описать свою конфигурацию мониторинга k8s? Как настроен ваш прометей? У вас есть специальная установка prometheus или встроенная версия istio? Установлены ли в вашем кластере адаптер prometheus и сервер метрик?
флаг jp
Не размещайте текстовую информацию в виде ссылок на изображения.
флаг us
@AlexD Я не могу добавлять картинки, потому что; «Чтобы публиковать изображения, вам нужно как минимум 10 репутации».
флаг jp
Добавьте текстовую информацию в виде текста.
флаг us
@ c4f4t0r Установлено с настройками Prometheus istio [здесь] (https://istio.io/latest/docs/ops/integrations/prometheus/). Я установил сервер метрик с помощью helm и установил tls [здесь] (https://github.com/kubernetes-sigs/metrics-server). Я установил его с адаптером Prometheus [здесь] (https://github.com/kubernetes-sigs/prometheus-adapter).
флаг us
@AlexD Я уже добавил текстовый документ как текст. о каком ты говоришь
флаг jp
Консольный вывод из `kubectl`, который вы связали как изображения, представляет собой текст.
флаг us
@AlexD Понятно. Спасибо за информацию.
c4f4t0r avatar
флаг nl
@Orgenus, вы разместили различные ссылки. Сколько Prometheus у вас установлено?
флаг us
@ c4f4t0r Установлен только 1. в пространстве имен istio-system
c4f4t0r avatar
флаг nl
проверьте, указывает ли ваш адаптер prometheus туда, и проверьте, работает ли ваш сервер метрик с верхними модулями kubectl, в любом случае вы можете найти много информации о пользовательских метриках.
флаг us
@ c4f4t0r Сервер метрик работает и отвечает, я добавил его в ветку. Как я могу контролировать доступ адаптера?
c4f4t0r avatar
флаг nl
если вы установили адаптер prometheus с помощью диаграмм helm, по умолчанию он указывает на URL: http://prometheus.default.svc
флаг us
@ c4f4t0r Я могу получить доступ к интерфейсу Prometheus. Когда я запускаю пример запроса, он дает результаты. Прикрепил скриншот к теме.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.