Знаете ли вы, чем занимается ваш кластер 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
) может быть безболезненным, если вы видите утечку пакетов наружу. Сделайте обзор сторонних библиотек для проверки связи с миром.