Открыть сервис

Cilium

Cilium (от лат. cilium — ресница) — это программное обеспечение с открытым исходным кодом, предназначенное для обеспечения, мониторинга и управления сетевым взаимодействием между контейнеризированными приложениями, работающими в среде оркестрации Kubernetes. Cilium реализует сетевую модель для контейнеров на уровне ядра операционной системы, используя технологию eBPF (extended Berkeley Packet Filter), что позволяет обрабатывать сетевые пакеты и применять политики безопасности без модификации ядра или приложений.

История

Проект Cilium был основан в 2015 году Томасом Графом (Thomas Graf) и Дэниелом Боркманном (Daniel Borkmann) — ключевыми разработчиками подсистемы eBPF в ядре Linux. Первоначально Cilium разрабатывался как проект компании Covalent, которая позже была приобретена компанией Isovalent. В 2021 году Cilium стал инкубационным проектом Cloud Native Computing Foundation (CNCF), а в 2023 году получил статус «graduated» (завершённого) проекта CNCF, что подтвердило его зрелость и широкое промышленное применение.

Основной движущей силой разработки Cilium стала необходимость решить проблемы традиционных сетевых решений для контейнеров (например, Calico, Flannel, Weave), которые полагались на iptables и другие устаревшие механизмы ядра Linux, неэффективные при большом количестве контейнеров и частых изменениях в сети. Внедрение eBPF позволило Cilium обеспечить высокую производительность, низкую задержку и масштабируемость, недостижимые для старых подходов.

Архитектура и принципы работы

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

Компоненты Cilium

  • Cilium Agent — демон, работающий на каждом узле кластера Kubernetes. Он отвечает за управление сетевыми интерфейсами, маршрутизацию, применение политик безопасности и взаимодействие с API Kubernetes.
  • Cilium Operator — компонент, управляющий глобальными задачами, такими как распределение IP-адресов, управление сервисами и синхронизация состояний между узлами.
  • Cilium CNI (Container Network Interface) — плагин, реализующий стандарт CNI для подключения контейнеров к сети. Он создаёт виртуальные сетевые интерфейсы для подов и назначает им IP-адреса.
  • Cilium Hubble — подсистема мониторинга и визуализации сетевого трафика, предоставляющая информацию о соединениях, задержках, потерях пакетов и безопасности.
  • Cilium CLI — утилита командной строки для управления и диагностики Cilium.

eBPF и его роль

eBPF — это технология, позволяющая выполнять пользовательские программы в ядре Linux в безопасном изолированном окружении. Cilium использует eBPF для:

  • Маршрутизации пакетов — eBPF-программы перехватывают и перенаправляют пакеты между подами, узлами и внешними сетями.
  • Применения политик безопасности — eBPF-программы проверяют каждый пакет на соответствие правилам доступа на основе меток (labels) Kubernetes, IP-адресов, портов и протоколов.
  • Сбора метрик — eBPF-программы собирают статистику о трафике (количество пакетов, байтов, задержки) и передают её в Hubble.
  • Балансировки нагрузки — eBPF-программы реализуют механизмы балансировки трафика между подами сервисов.

Ключевые возможности

Сетевое взаимодействие

Cilium предоставляет полную сетевую модель для Kubernetes, поддерживая:

  • Overlay-сети — использование VXLAN, Geneve или других туннельных протоколов для изоляции трафика между узлами.
  • Direct-маршрутизацию — прямое соединение между подами на разных узлах без туннелирования, что снижает накладные расходы.
  • IPv6 — полная поддержка IPv6-адресации.
  • Multi-cluster networkingобъединение нескольких кластеров Kubernetes в единую сеть (Cilium Cluster Mesh).

Безопасность

Cilium реализует модель безопасности на основе идентификации (identity-based security), используя метки Kubernetes (labels) для определения субъектов и объектов доступа. Политики безопасности могут быть определены на уровне:

  • Сетевых политик (NetworkPolicy) — стандартные политики Kubernetes, расширенные Cilium для поддержки L3-L7 (HTTP, gRPC, Kafka, DNS и др.).
  • Политик на основе DNS — разрешение доступа к внешним ресурсам по доменным именам.
  • Политик на основе сертификатов — интеграция с mTLS (mutual TLS) для аутентификации и шифрования трафика между подами.
  • Политик на основе API — фильтрация запросов к API-серверам (например, HTTP-методы, пути, заголовки).

Наблюдаемость

Hubble предоставляет:

  • Карту сервисов — визуализацию всех сетевых соединений между подами, сервисами и внешними ресурсами.
  • Мониторинг в реальном времени — отображение метрик трафика (пропускная способность, задержки, количество ошибок).
  • Журналы потоковзапись всех сетевых соединений с метаданными (источник, назначение, протокол, порт, решение политики).
  • Интеграцию с Prometheusэкспорт метрик для систем мониторинга и алертинга.

Производительность

Благодаря использованию eBPF, Cilium демонстрирует высокую производительность:

  • Низкая задержка — обработка пакетов в ядре без переключения контекста.
  • Высокая пропускная способность — близкая к нативной производительности сети.
  • Масштабируемость — поддержка тысяч узлов и десятков тысяч подов без деградации производительности.

Сравнение с альтернативами

Cilium часто сравнивают с другими популярными сетевыми решениями для Kubernetes:

ХарактеристикаCiliumCalicoFlannelWeave
ТехнологияeBPFiptables, eBPF (опционально)VXLAN, host-gwVXLAN, weave mesh
ПроизводительностьВысокаяСредняяСредняяСредняя
Безопасность L7ПолнаяЧастичная (через прокси)НетНет
НаблюдаемостьHubblePrometheus (ограниченно)НетНет
МасштабируемостьВысокаяВысокаяСредняяСредняя
Сложность настройкиСредняяСредняяНизкаяНизкая

Применение

Cilium широко используется в промышленных средах, где требуются высокая производительность, безопасность и наблюдаемость. Основные сценарии применения:

  • Крупные кластеры Kubernetes — Cilium позволяет эффективно управлять сетью в кластерах с тысячами узлов и десятками тысяч подов.
  • Микросервисные архитектуры — политики безопасности на уровне L7 (HTTP, gRPC, Kafka) позволяют контролировать доступ между микросервисами.
  • Мультикластерные развёртывания — Cilium Cluster Mesh обеспечивает единую сеть и политики безопасности для нескольких кластеров.
  • Облачные среды — Cilium поддерживается всеми крупными облачными провайдерами (AWS, GCP, Azure, Яндекс.Облако), а также используется в Managed Kubernetes-сервисах.
  • Edge-вычисления — Cilium может работать на устройствах с ограниченными ресурсами, используя eBPF для минимизации накладных расходов.

Интересные факты

  • Cilium является одним из первых проектов, продемонстрировавших промышленное применение eBPF для сетевых задач.
  • Проект активно поддерживается компанией Isovalent, основанной создателями Cilium. В 2023 году Isovalent была приобретена Cisco.
  • Cilium используется в производственных средах таких компаний, как Adobe, Bloomberg, Datadog, GitLab, Lyft, Reddit и многих других.
  • В 2024 году Cilium стал самым популярным сетевым решением для Kubernetes по данным опроса CNCF.

Критика

Несмотря на преимущества, Cilium имеет и недостатки:

  • Сложность настройки — для эффективного использования Cilium требуется глубокое понимание eBPF и архитектуры Kubernetes.
  • Зависимость от версии ядра — для работы Cilium требуется ядро Linux версии 4.19 и выше, а для полной функциональности — 5.10 и выше. Старые версии ядер могут не поддерживать все возможности eBPF.
  • Ресурсные затраты — хотя Cilium эффективен, он потребляет больше ресурсов (память, CPU) по сравнению с более простыми решениями, такими как Flannel.
  • Отсутствие поддержки некоторых протоколов — на момент написания статьи Cilium не поддерживает фильтрацию трафика на уровне L7 для всех протоколов (например, UDP-приложений, не использующих HTTP/gRPC).

Источники

  • Официальная документация Cilium (cilium.io)
  • Cloud Native Computing Foundation (cncf.io) — статус проектов
  • Документация eBPF (ebpf.io)
  • «Cilium: eBPF-based Networking, Security, and Observability for Kubernetes» — книга Томаса Графа и Дэниела Боркманна (O'Reilly Media, 2022)
  • Статья «Cilium: The Next Generation of Container Networking» на портале The New Stack (2021)
  • Материалы конференций KubeCon + CloudNativeCon (2020–2024)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →