В этом посте мы собираемся просмотреть параметры наблюдения на многокластере 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»