С последним дополнением New Relic, Pixie

Цель

Отслеживание сетевого трафика в кластере Kubernetes (k8s), захват кортежа запроса-ответа и связанных метаданных. Потоковая передача захваченных данных из кластера для дальнейшего анализа.

Поскольку мы планируем отслеживать каждый сетевой запрос (уровень 7 OSI), есть несколько соображений, которые составляют часть наших требований. Они есть:

Соображения

  • Малый вес → Небольшой объем памяти и ЦП имеют решающее значение.
  • Масштабируемость → Новые узлы добавляются и удаляются из кластера, и решение должно соответствующим образом масштабироваться.
  • Независимость от языка и фреймворка → Контейнеры могут быть созданы на любом количестве языков и фреймворков, это не должно влиять на наше отслеживание.
  • Быстрота → Масштаб всех сетевых данных на сервере будет огромным. Наше решение должно иметь возможность отслеживать и сообщать нам эти данные в течение значительного периода времени.
  • Удобно → Пользователи должны чувствовать себя комфортно/безопасно/уверенно при развертывании этого на своих производственных кластерах.
  • Подключи и работай → Низкие затраты времени и средств на адаптацию. Никаких изменений в коде для прикрепления хуков.

Исходя из вышеизложенного, для этой задачи мы выбрали Пикси. Pixie — это платформа наблюдения с открытым исходным кодом, созданная New Relic, одним из лидеров в области APM.

Тот факт, что Pixie является проектом Cloud Native Computing Foundation и New Relic использует его для наблюдения за Kubernetes, придает проекту авторитет. Облегчение быстрых и удобных соображений, сделанных выше.

Что такое Пикси?

По их собственным словам:

«Наблюдаемость Kubernetes с открытым исходным кодом для разработчиков

Автоинструмент. Сценарий. Родной Kubernetes».

Для нас это означает простое развертывание, отслеживание настраиваемых точек данных (при необходимости) и собственный захват запросов и ответов, сделанных в кластере.

Итак, как Пикси это удается? И что делает его особенным?

Pixie использует технологию eBPF для запуска сценариев, управляемых событиями, на уровне ядра. Обход всех требований к коду, что делает ядро ​​Linux его первоклассным гражданином.

Это делает Pixie независимым от языка и фреймворка, а поскольку eBPF работает на любой системе с ядром Linux, у Pixie есть широкая установочная база.

Примечание. Это также означает, что Pixie не будет работать на серверах Windows, хотя объем рабочих кластеров k8s, работающих на серверах Windows, может быть довольно низким.

Полный список поддерживаемых сред Pixie и типов кластеров: «Установить | Требования".

[Необязательно] Дополнительные ресурсы по технологии eBPF:

Но все же, почему Пикси? В чем его преимущества?

  • Pixie Edge Module развертывается на уровне узла. Таким образом, независимо от запущенных модулей и служб, для каждого узла требуется развертывание только одного пограничного модуля. Решение легкое и масштабируемое.

  • У Pixie очень простое развертывание и установка. После аутентификации необходимо выполнить только команду px deploy. Адреса подключи и играй.
  • Как только он будет развернут, Pixie будет готов сообщить о Network data. Никаких других настроек не требуется.
  • Pixie предоставляет простой в использовании API (на Python и Go) для извлечения/выборки/потоковой передачи этих данных через Интернет. Он также поддерживает шифрование данных e2e при передаче.

Мы продолжаем использовать Pixie, так как он отвечает на большинство наших вопросов, предоставляя дополнительные функции, облегчающие разработку.

В следующих разделах мы обсудим особенности пикси, такие как:

  • Монтаж
  • Какие данные отслеживает Pixie и как они влияют на кластер?
  • Наконец, потоковая передача данных из кластера с использованием API Pixie.

Монтаж

Установить Pixie довольно просто, нужно выполнить всего несколько шагов. Документация Pixie: Полное руководство по установке Pixie Community Edition.

Если у вас уже есть доступный кластер Kubernetes, вы можете пропустить этот раздел и сразу перейти к шагам установки Pixie. Здесь мы собираемся установить и запустить кластер minikube для локального тестирования.

Шаги по настройке локальной среды Kubernetes:

Шаг 1: Установите minikube.

Шаг 2: Увеличьте сконфигурированные пределы ЦП и памяти. Это необходимо, так как мы будем развертывать Pixie и микросервис для моделирования запросов.

minikube config set cpus 4
minikube config set memory 8192

Если у вас уже установлено и запущено minikube, вам необходимо выполнить minikube delete до того, как ваши изменения вступят в силу.

Чтобы проверить, правильно ли произошли изменения, выполните приведенные ниже команды.

minikube config get memory
# Output: 8192
minikube config get cpus
# Output: 4

Шаг 3: Запустите minikube с драйвером hyperkit.

minikube start --driver=hyperkit

Действия по установке Pixie в кластере:

Шаг 1. Основным интерфейсом Pixie для взаимодействия с кластером является интерфейс командной строки. Установите его через:

# Copy and run command to install the Pixie CLI.
bash -c "$(curl -fsSL https://withpixie.ai/install.sh)"

Шаг 2: Pixie (также CLI) требует наличия учетной записи для работы и аутентификации в кластере. Чтобы аутентифицировать Pixie CLI, запустите:

px auth login

Шаг 3: После успешного входа в систему. Разверните Pixie в кластере.

px deploy

Вот и все ✅ для установки Pixie. Мы настроили кластер и установили на него Pixie. Но мы не можем отслеживать трафик, если его нет, поэтому мы развертываем демонстрационное приложение. Носочный цех ткацкого производства.

px demo deploy px-sock-shop

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

kubectl get pods -A

Если вы присмотритесь, то увидите под load-test-* в состоянии Init, который имитирует трафик.

Перейдите в Live UI Pixie, чтобы изучить все показатели, которые он собирает:

Некоторые примеры просмотров:

Наиболее актуальные для нас: http_data .

Какие данные отслеживает Pixie и как это влияет на кластер?

Pixie поставляется с множеством предустановленных скриптов, облегчающих отслеживание всех видов — «О Pixie | Источники данных"

Ниже приведен список важных вещей, на которые следует обратить внимание в отношении сбора данных и влияния на кластер:

  • Pixie хранит собранные данные в памяти на узлах вашего кластера; никакие данные не отправляются в централизованную серверную часть за пределами кластера.
  • У Pixie есть требования к памяти 2 ГБ. После установки Pixie обычно наблюдается временное увеличение использования памяти.
  • Сколько данных хранит Pixie?
    Время хранения зависит от уровня трафика в вашем кластере, но обычно составляет порядка нескольких часов. Каждая таблица данных в Pixie (например, http_events) имеет свой максимальный размер. Эти таблицы собирают данные до тех пор, пока не будет достигнут максимальный размер, а затем начинают отбрасывать самые старые данные.
  • Типичные потери производительности при использовании ЦП узла составляют от 2 до 5 %, в зависимости от объема и типа трафика. Однако мы находимся в процессе оптимизации этого, так что следите за тем, чтобы это пошло еще дальше.

Потоковая передача данных из кластера с использованием API Pixie

Теперь, когда мы установили Pixie и начали собирать данные о HTTP-событиях, наша цель — передать эти данные в потоковом режиме.

Pixie предоставляет API, который мы можем использовать. Для начала нам нужны два значения:

Когда у нас будут готовы эти значения, мы можем настроить новую виртуальную среду Python и установить в ней pxapi.

pip install pxapi

Если вышеуказанное не работает в MacOS, попробуйте:

GRPC_PYTHON_BUILD_SYSTEM_ZLIB=true pip install pxapi

Скрипт для трансляции http_data.

Pixie предоставляет очень мощный API и платформу для отладки и наблюдения за приложениями, развернутыми в Kubernetes. Этот пост лишь поверхностно рассказывает о том, что такое Pixie и что он может дать вашему бизнесу.

Для дальнейшего чтения, пожалуйста, пройдите через:

Дайте мне знать, если вы хотите рассмотреть вторую часть этой постановки задачи: Создание конвейера потоковой передачи для обработки огромных объемов сетевых данных.

А пока береги себя.

Want to connect?
Twitter: https://twitter.com/piyush_daga5