Визуализация трафика TCP-пакетов для kubernetes с помощью k8spacket и Grafana

Знаете ли вы, чем занимается ваш кластер k8s, когда вы за ним не наблюдаете? Кто устанавливает с ним TCP-коммуникацию? Кого он вызывает, например, из сторонних библиотек?

С помощью k8spacket и Grafana вы можете визуализировать TCP-трафик в кластере. Посмотрите, как ваши рабочие нагрузки взаимодействуют друг с другом. Посмотрите, сколько соединений устанавливается, сколько байт обменивается и как долго эти соединения активны.
 

Описание

k8spacket — это инструмент, написанный на языке Golang и использующий стороннюю библиотеку gopacket для обнюхивания TCP-пакетов на ваших рабочих нагрузках (входящих и исходящих). Он создает TCP-слушателей на сетевых интерфейсах запущенных контейнеров. Когда Kubernetes создает новый контейнер, плагин CNI отвечает за предоставление возможности общения либо с другими контейнерами, либо из кластера в мир. Наиболее распространенный подход использует linux namespace для изоляции сетей и veth pair для соединения изолированного пространства имен с мостом. Если вы хотите узнать больше, обратитесь к замечательной статье, написанной Safak (How Docker Container Networking Works — Mimic It Using Linux Network Namespaces). Помимо типа bridge, плагин CNI может использовать и другие типы (vlan, ipvlan, macvlan), но все они создают сетевой интерфейс для пространства имен linux контейнера, которое является основным ручкой для k8spacket снифферов.

k8spacket запускается с опцией

hostNetwork: true
Войти в полноэкранный режим Выйти из полноэкранного режима

для устранения изоляции, упомянутой ранее. Он собирает TCP-потоки, обрабатывает данные и передает результаты через API для использования Grafana.

Дополнительно,

  • Он запускается как DaemonSet для прослушивания сетевых интерфейсов на всех узлах.
  • Реализованный watcher проверяет каждые 10s (по умолчанию), есть ли новый (или старый) сетевой интерфейс для наблюдения (или забыт).

Помимо отображения графика ресурсов вашего кластера, он также отображает метрики Prometheus.


 

Установка

Чтобы установить k8spacket, у вас должны быть установлены Helm и Grafana. Кроме того, инструмент требует плагин Hamad’s Node Grafana API (Node Graph API).
Смотрите все шаги по установке здесь.
 

Использование

Типы статистики

Фильтры

Сводка

Если вы хотите узнать, что происходит с TCP-трафиком в вашем кластере, попробуйте k8spacket. Расследование о сокращении трафика (network policy) может быть безболезненным, если вы видите утечку пакетов наружу. Сделайте обзор сторонних библиотек для проверки связи с миром.

Оцените статью
devanswers.ru
Добавить комментарий