Рубрики
Uncategorized

Ткги: Задача наблюдаемости

Введение в этом посте мы собираемся просмотреть варианты наблюдения на Kubernetes … Помечено Kubernetes, DevOps, Monitoring, Prometheus.

В этом посте мы собираемся просмотреть параметры наблюдения на многокластере Kubernetes, управляемого VMware Tkgi (Tanzu Kubernetes Grid Integrated) Анкет

При развертывании с использованием инструментов TKGI Kubernetes поставляется с понятиями метрических раковин для сбора данных с платформы и/или из приложений. Основываясь на Telegraf, метрики выдвигаются в пункт назначения, который должен быть установлен в объекте ClusterMetricsInk CR.

В нашем варианте использования TKGI используется для развертывания одного кластера Kubernetes на приложение/среду (dev, QA, Prod), из которого нам нужно собирать метрики. У этого клиента мы также используем стек Prometheus, который используется для очистки данных с традиционных виртуальных машин и контейнеров, работающих на OpenShift, чтобы обрабатывать сигналы тревоги и предлагать панели инструментов конечным пользователям через Grafana. Мы исследовали различные архитектуры реализации, которые соответствуют нашей текущей системе мониторинга и нашему внутреннему процессу.

В этом сценарии мы используем использование (кластер), предоставленную VMware, настроенным для продвижения данных в центральную базу данных InfluxDB. Данные, выдвинутые Telegraf, могут поступить либо из топ -метрик от агента Telegraf, либо могут быть сокрушительными Scrape Telegraf. Затем запустив Telegraf, на каждом узле работает стручок, развернутый через Daemonset. Grafana имеет разъем базы данных, способный подключаться к InfluxDB.

Плюс

  • Самая простая реализация
  • Нет дополнительного программного обеспечения для развертывания на Kubernetes
  • Многоцелевое больное данные
  • RBAC для доступа к данным

Минусы

  • Influxdb не может масштабироваться, и в бесплатной версии нет HA
  • Необходимо переписать панели панели Grafana, чтобы соответствовать языку запросов InfluxDB
  • Интеграция с нашим текущим потоком тревоги

Telegraf может разоблачить данные, используя формат Prometheus по конечной точке HTTP. Эта конфигурация выполняется с использованием MetricsInk CR Анкет Прометей будет затем соскребить службу телеграфа. Когда Telegraf развернут на каждом узле с использованием Deamonset, он поставляется с службой Kubernetes, поэтому мы можем получить доступ к предоставлению услуги. Поскольку Прометей сидит за пределами целевого кластера, невозможно непосредственно получить непосредственный доступ к каждой конечной точке Telegraf, поскольку к ней необходимо получить доступ через службу Kubernetes. Основным недостатком этой архитектуры является то, что мы не можем гарантировать, что все конечные точки раскрашиваются равномерно, поэтому он может создать пробелы в метрик. Мы также заметили, что, когда Telegraf настроен на разоблачение данных Prometheus по HTTP, служба не обновляется в соответствии с новым открытым портом. Одним из решений было бы создать еще одну услугу в пространстве имен, где проживает Telegraf, но из -за RBAC нам не разрешают это делать.

apiVersion: pksapi.io/v1beta1
kind: ClusterMetricSink
metadata:
  name: my-demo-sink
spec:
  inputs:
  - monitor_kubernetes_pods: true
    type: prometheus
  outputs:
    - type: prometheus_client

Плюс

  • Мы можем использовать использование Telegraf и MetricsInks
  • Интеграция с нашим существующим стеком Prometheus
  • Прометеус обслуживался

Минусы

  • Нет прямых доступа к конечным точкам Telegraf
  • В зависимости от количества целей, которые можно найти для каждого
  • Kubernetes Cluster, обслуживание может быть затронуто с точки зрения производительности

В этой архитектуре мы настраиваем Prometheus, чтобы напрямую открепить экспортеры, работающие на каждом кластере. К сожалению, каждая копия стручки, управляющей экспортером, разоблачает свою конечную точку через службу Kubernetes. Как упомянуто в архитектуре 2, Прометея, живущая на улице, не может напрямую соскребить конечную точку, и поэтому мы не можем гарантировать, что соскабливание будет равномерно выполнено.

Плюс

  • Интеграция с нашим стеком Prometheus
  • Прометеус обслуживался

Минусы

  • Нет прямых доступа к конечным точкам экспортера
  • Не подходит для масштабирования

Это гибридный подход, в котором мы используем метрический инструмент, предоставляемый VMware. Мы подталкиваем все метрики в Exporter Influxdb действует как прокси-кэш, который откидывается Прометеей.

Плюс

  • Использование инструментов VMware

Минусы

  • Экспортер InfluxDB становится SPOF (единственная точка отказа)
  • Дополнительные компоненты для управления
  • № Prometheus serviced
  • Обработка срока действия данных

В этой архитектуре мы вводим PushProx, состоящий из прокси, работающего на том же кластере, что и Prometheus и агенты, которые работают на каждом кластере Kubernetes. Эти агенты инициируют связь с прокси, чтобы создать туннель, поэтому Прометею может напрямую соскребить каждую конечную точку через туннель.

Каждая конфигурация для соскоба должна будет иметь ссылку на прокси:

scrape_configs:
- job_name: node
  proxy_url: http://proxy:8080/
  static_configs:
    - targets: ['client:9100']

Плюс

  • Обход сегментация сети
  • Интеграция с нашим стеком Prometheus

Минусы

  • Нет Прометея обслуживаемого открытия
  • Проблема масштабирования
  • Дополнительный компонент для управления

В этой архитектуре экземпляр Prometheus развернут на каждом кластере, который будет соскребить цели, находящиеся в одном кластере. Используя этот дизайн, данные будут храниться в каждом экземпляре. Основное различие в этом подходе заключается в том, что только Alertmanager и Grafana разделяются для всех кластеров.

Плюс

  • Лучшая интеграция с нашим стеком Prometheus
  • Мульти аренды
  • Федерация возможна

Минусы

  • Память и процессора следов за повторение той же услуги
  • Пропустить, используя любой компонент TKGI
  • Несколько случаев для управления

После тестирования почти всех архитектур мы, наконец, пришли к выводу, что архитектура 6 является лучшим совпадением с нашей текущей архитектурой и потребностями. Мы также привилегировали Prometheus, так как его можно легко развернуть с помощью оператора, и такие функции, как HA, автоматически управляются. Однако мы должны были поставить некоторые компромиссы, такие как не использовать метрические компоненты TKGI и «заново изобрести колесо», поскольку мы считаем, что мониторинг и предупреждение следует выполнять путем вытяжения данных и не подталкивания.

Это исследование было проведено в среде TKGI, которая не была установлена и эксплуатирована Camptocamp.

Оригинал: «https://dev.to/camptocamp-ops/tkgi-observability-challenge-376f»