[Перевод] Визуальные карты сетей кластеров K8s для оценки их производительности
Создание производительных сервисов и систем — основа любого бизнеса. Ежедневно появляются кучи новых технологий, которые обещают дать возможности, позволяющие превзойти ваши бенчмарки производительности. Однако продакшен-среды — это хаотичные системы, мониторинг и поддержка которых требует большой доли ресурсов.
Хотя Kubernetes при выборе системы управления контейнерами является стандартом «де факто», многим организациям не удаётся её реализовать. Растущие организации в процессе увеличения масштабов своих сервисов ненамеренно вносят в систему усложнения. Критически важно понимать, как настраивать инфраструктуру и как кластеры могут работать и взаимодействовать между собой.
Основная часть инфраструктуры упорядочивается в виде сети систем, обменивающихся данными и разделяющих рабочие нагрузки. Очень удобна возможность визуального наблюдения за соединением систем и выявления влияющих на них факторов. Создание карты сети при помощи эффективного инструмента визуализации и контроля является обязательной задачей для мониторинга и поддержки сервисов.
Введение в визуальное картографирование сетей
Создание карт сетей — это процесс выявления и каталогизации всех устройств и соединений в сети. Визуальная карта сети — это визуальное представление сети, отображающее устройства и связи между ними. Визуальные карты сетей обеспечивают понимание топологии сети и выявляют потенциальные проблемы или узкие места, что позволяет создавать планы модификации и расширения, способные существенно улучшить процесс устранения проблем, планирования, анализа и мониторинга.
Для картографирования сетей и генерации визуальных карт сетей можно использовать опенсорсные инструменты безопасности наподобие OpenVAS, Nmap и Nessus. Эти инструменты бесплатны, что делает их экономичным решением для организаций, стремящихся повысить безопасность сетей. Кроме того, многие опенсорсные инструменты безопасности имеют активную поддержку сообщества, позволяя пользователям делиться знаниями, советами и рекомендациями по реализации полного потенциала инструмента.
Преимущества использования визуальных карт сетей
Визуальная карта сети — это эффективный инструмент для планирования и разработки новых сетей, расширения или модернизации имеющихся сетей и анализа сетевых проблем.
Правильная настройка визуальных карт сетей может существенно расширить возможности мониторинга, трекинга и устранения неполадок. Она предоставляет вам чёткую и полную картинку сети, позволяя выявлять потенциальные источники проблем и разрешать и их; также она помогает в мониторинге сетей в реальном времени и заранее уведомляет о любых изменениях или проблемах.
Знакомство с Caretta и Grafana
Caretta — это опенсорсный инструмент визуализации и мониторинга сетей, позволяющий просматривать и мониторить сети в реальном времени.
Grafana — это опенсорсная платформа визуализации и мониторинга данных, позволяющая создавать собственные дэшборды и алерты, а также исследовать и анализировать данные.
На основе Caretta и Grafana можно создать эффективное решение для понимания сети и управления ею.
▍ Как Caretta использует eBPF и Grafana
Предназначение Caretta заключается в том, чтобы помочь в понимании топологии и взаимосвязи между устройствами в распределённых средах. Она предлагает различные возможности, например, выявление устройств, мониторинг в реальном времени, алерты, уведомления и отчётность. Для сбора и публикации своих метрик она использует Victoria Metrics, а результаты её работы можно использовать в любом совместимом с Prometheus дэшборде.
Благодаря обеспечению допусков (toleration) Carreta позволяет принимать типичные аннотации узлов уровня управления. Она собирает информацию сети, например, сведения об устройствах и соединениях, при помощи функциональности ядра eBPF (extended Berkeley Packet Filter), а затем использует платформу Grafana для отображения информации на визуальной карте.
▍ Роль Grafana в визуализации карт сетей Caretta
Grafana спроектирована так, чтобы быть модульным и гибким инструментом, с лёгкостью интегрирующим и принимающим широкий диапазон источников данных и приложений.
Благодаря возможности настройки функций вы можете изменять способ отображения карты сети при помощи дэшборда Grafana. Кроме того, у вас есть широкий выбор из множества опций визуализации для отображения данных в понятном и полезном виде. Grafana критически важна и для демонстрации данных сетей, собранных Caretta, и для предоставления пользователям полной картины сети.
Использование Caretta и Grafana для создания визуальной карты сети
Чтобы использовать Caretta и Grafana в создании визуальной карты сети, их необходимо установить, внедрить и конфигурировать. Основной объект конфигурирования — это Caretta daemonset.
Для просмотра карты сети необходимо развернуть Caretta daemonset в выбранном кластере, который будет собирать метрики сети в базу данных, а также настроить источник данных Grafana так, чтобы указывал на базу данных Caretta.
▍ Обязательные требования для использования Caretta и Grafana
Caretta — современный инструмент, интегрированный с расширенными функциями. Он использует версию ядра Linux от 4.16 и выше и helm chart для 64-битной системы.
Давайте разберёмся, как установить и сконфигурировать это сочетание инструментов.
▍ Установка и конфигурирование Caretta и Grafana
При наличии заранее сконфигурированный helm chart для установки Caretta достаточно всего нескольких вызовов.
Рекомендуется устанавливать Caretta в новое уникальное пространство имён.
helm repo add groundcover https://helm.groundcover.com/
helm repo update
helm install caretta --namespace caretta --create-namespace groundcover/caretta
То же самое относится и к установке Grafana.
helm install --name my-grafana --set "adminPassword=secret" \n
--namespace monitoring -f custom-values.yaml stable/grafana
Наш файл custom-values.yaml
будет выглядеть примерно так:
## Grafana configuration
grafana.ini:
## server
server:
protocol: http
http_addr: 0.0.0.0
http_port: 3000
domain: grafana.local
## security
security:
admin_user: admin
admin_password: password
login_remember_days: 1
cookie_username: grafana_admin
cookie_remember_name: grafana_admin
secret_key: hidden
## database
database:
type: rds
host: mydb.us-west-2.rds.amazonaws.com
## session
session:
provider: memory
provider_config: ""
cookie_name: grafana_session
cookie_secure: true
session_life_time: 600
## Grafana data
persistence:
enabled: true
storageClass: "-"
accessModes:
- ReadWriteOnce
size: 1Gi
▍ Конфигурирование
Сконфигурировать Caretta можно при помощи значений helm. Значения в Helm — это позиции настройки chart. После установки chart можно изменить значения, перечисленные в файле values.yaml
, являющемся частью пакета chart, и настроить конфигурации на основании своих требований.
Ниже представлен пример конфигурации с переписыванием стандартных значений:
pollIntervalSeconds: 15 # set metrics polling interval
tolerations: # set any desired tolerations
- key: node-role.kubernetes.io/control-plane
operator: Exists
effect: NoSchedule
config:
customSetting1: custom-value1
customSetting2: custom-value2
victoria-metrics-single:
server:
persistentVolume:
enabled: true # set to true to use persistent volume
ebpf:
enabled: true # set to true to enable eBPF
config:
someOption: ebpf_options
pollIntervalSeconds
задаёт интервал опроса метрик. В нашем случае метрики будут запрашиваться каждые 15 секунд.
В разделе tolerations можно указать допуски для подов. В показанном выше примере поды могут работать только в узлах, имеющих метку node-role.kubernetes.io/control-plane
и с эффектом NoSchedule
.
Раздел config позволяет указать собственные опции конфигурации для приложения.
Раздел victoria-metrics-single позволяет сконфигурировать сервер Victoria-metrics-single. В примере мы включаем использование постоянного хранилища (persistent volume).
Раздел eBPF
позволяет включить eBPF и настроить его опции.
▍ Создаём визуальную карту сети с помощью Caretta и Grafana
Caretta состоит из двух частей: Caretta Agent и Caretta Server. Каждый узел в кластере выполняет Caretta Agent Kubernetes DaemonSet, собирающий информацию о состоянии кластера.
Для просмотра данных в виде карты сети и генерации карты сети необходимо добавить в Grafana данные, собранные Caretta.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: caretta-depoy-test
namespace: caretta-depoy-test
spec:
selector:
matchLabels:
app: caretta-depoy-test
template:
metadata:
labels:
app: caretta-depoy-test
spec:
containers:
- name: caretta-depoy-test
image: groundcover/caretta:latest
command: ["/caretta"]
args: ["-c", "/caretta/caretta.yaml"]
volumeMounts:
- name: config-volume
mountPath: /caretta
volumes:
- name: config-volume
configMap:
name: caretta-config
Данные из Caretta Agent получаются Caretta Server (который является Kubernetes StatefulSet), после чего он сохраняет их в базу данных.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: caretta-depoy-test
labels:
app: caretta-depoy-test
spec:
serviceName: caretta-depoy-test
replicas: 1
selector:
matchLabels:
app: caretta-depoy-test
template:
metadata:
labels:
app: caretta-depoy-test
spec:
containers:
- name: caretta-depoy-test
image: groundcover/caretta:latest
env:
- name: DATABASE_URL
value: mydb.us-west-2.rds.amazonaws.com
ports:
- containerPort: 80
name: http
Чтобы сделать это, нам нужно создать собственный плагин источника данных в Grafana для подключения к данным Caretta, а затем разработать визуализации в Grafana для отображения этих данных.
[datasources]
[datasources.caretta]
name = caretta-deploy-test
type = rds
url = mydb.us-west-2.rds.amazonaws.com
access = proxy
isDefault = true
▍ Опции настройки для карты сети и как получить к ним доступ
Карту сети, созданную Caretta и Grafana, можно настраивать множеством разных способов. Мы можем изменять следующие параметры:
- Опции отображения: при помощи опций настройки отображения вы можете управлять структурой карты, толщиной и цветом соединений и устройств.
- Опции данных: при помощи опций данных можно выбирать, какая информация будет отображаться на карте, в том числе уведомления, метрики производительности, сведения об устройстве и подключении.
- Опции алертов: при помощи опций алертов можно получать уведомления о любых изменениях и проблемах в сети, например, о большом трафике, низкой производительности или трудностях со связью.
- Опции визуализации: при помощи опций визуализации можно представлять собранные данные понятным и полезным образом.
Обычно для доступа к этим и другим опциям настройки требуется дэшборд Grafana. Доступ к опциям и параметрам зависит от версии Caretta и Grafana, а также от настроек и потребностей вашей системы.
Интерпретация и использование визуальной карты сети
Основные задачи визуальной карты сети, созданной Caretta и Grafana — помощь в понимании сетевой топологии, выявлении возможных узких мест или проблем и планировании и устранении сетевых проблем. Чтобы интерпретировать и использовать визуальную карту сети, нужно разобраться в компонентах карты и их значении.
Вот некоторые из типов информации, которые могут отображаться на карте:
- Устройства: присутствующие на карте конечные точки сети, в том числе серверы, коммутаторы и роутеры.
- Соединения: соединения между устройствами, например, сетевые кабели, беспроводные или виртуальные соединения; иногда тип соединения отображается на карте.
- Данные: на карте отображаются показатели производительности, уведомления и информация о конфигурации.
▍ Советы по использованию карты сети для оценки производительности кластера K8s
Создание курируемой, информативной и масштабируемой карты сети — довольно сложная задача. Однако при наличии подходящего набора инструментов её вполне можно решить.
Мы уже увидели, чего можно добиться при использовании Caretta и Grafana. Теперь давайте посмотрим, что нужно учитывать при использовании карт сетей, отображающих метрики производительности кластеров Kubernetes.
Первое и самое главное: необходимо понять сетевую топологию кластера, в том числе физические и виртуальные сети, в которых выполняются ваши сервисы. Далее необходимо убедиться, что используемый вами сетевой плагин совместим с вашим приложением. Наконец, установите сетевые политики, чтобы обезопасить обмен данными между подами, контролировать входной и выходной трафик, выполнять мониторинг и устранять неполадки. Разберитесь, как выполняется обмен данными между подами и как устроена сеть подов.
Заключение
Разбиение крупных систем на микросервисы, превращение систем в распределённые и управление ими — самый популярный подход для повышения производительности и аптайма. В этом лидерами рынка стали Kubernetes и Docker.
Несмотря на высокую производительность, проблемой крупномасштабных распределённых сетей является удобство наблюдения. Нам нужно учитывать все важные выбросы и аномалии, чтобы выполнять мониторинг и улучшать систему в целом с учётом оптимальной производительности. Новые технологии упрощают инновации и улучшения, однако вносят в систему неизвестные помехи. Необходим инструмент для наблюдений, способный отслеживать все операции в сети и презентовать их эффективным и информативным образом.
Grafana — лидирующий инструмент на рынке мониторинга. Соединив опенсорсный инструмент сетевой визуализации и мониторинга Caretta с Grafana, можно полностью раскрыть возможности своей инфраструктуры.
Играй в нашу новую игру прямо в Telegram!