Термин · Глоссарий B2B-ПО

CNI (CNI)

CNI (Container Network Interface) – стандартный интерфейс и спецификация для настройки сетевого взаимодействия контейнеров в Kubernetes и других оркестраторах. Плагины CNI обеспечивают IP-адресацию, маршрутизацию и сетевую политику для Pod'ов.

Буква «C» В категориях: 3 Платформ: 4+

Введение

CNI (Container Network Interface) – открытый стандарт и спецификация, определяющая интерфейс между исполняющей средой контейнеров (container runtime) и сетевыми плагинами. CNI описывает формат конфигурационных файлов и набор операций (ADD, DEL, CHECK, VERSION), которые плагин должен поддерживать для подключения и отключения контейнеров от сети.

В Kubernetes каждый Pod должен получить уникальный IP-адрес и иметь возможность общаться с любым другим Pod'ом в кластере без NAT. Именно CNI-плагин обеспечивает выполнение этих требований сетевой модели Kubernetes. Без CNI-плагина Pod'ы не смогут взаимодействовать друг с другом.

История и контекст

До появления CNI каждый оркестратор контейнеров имел собственную сетевую реализацию. Docker использовал libnetwork, rkt – свой подход. В 2015 году CoreOS и Google совместно разработали спецификацию CNI как нейтральный стандарт, не привязанный к конкретному оркестратору. Спецификация была принята CNCF и поддерживается в рамках проекта containernetworking.

Сегодня CNI поддерживается Kubernetes, CRI-O, containerd, Podman и другими container runtime'ами. Экосистема плагинов CNI насчитывает десятки реализаций, от простых (Flannel) до продвинутых с eBPF (Cilium).

Как это работает

Когда Kubernetes создаёт Pod, kubelet вызывает CNI-плагин через стандартный интерфейс:

  1. ADD: плагин создаёт сетевой интерфейс (veth-pair), назначает IP-адрес из пула IPAM (IP Address Management), настраивает маршруты и возвращает информацию о сети.
  2. Pod получает IP-адрес и начинает принимать трафик.
  3. При удалении Pod'а kubelet вызывает DEL: плагин освобождает IP и удаляет сетевой интерфейс.

CNI-плагин состоит из нескольких компонентов:

  • Network плагин: отвечает за создание сетевых интерфейсов и настройку overlay/underlay сети.
  • IPAM плагин: управляет пулами IP-адресов (host-local, dhcp, Whereabouts для мультикластера).
  • Chained plugins: несколько плагинов могут работать последовательно (например, основной + bandwidth).

Типы сетей CNI:

  • Overlay-сети: инкапсуляция трафика через VXLAN или GENEVE поверх физической сети (Flannel, Weave). Простые в настройке, но с накладными расходами на инкапсуляцию.
  • Underlay/BGP-сети: маршрутизация Pod-трафика напрямую через физическую сеть с помощью BGP (Calico). Высокая производительность, требует настройки сетевой инфраструктуры.
  • eBPF-based: Cilium использует eBPF в ядре Linux для высокопроизводительной обработки пакетов и применения политик без iptables.

Популярные CNI-плагины

  • Calico: наиболее распространённый в enterprise. Поддерживает BGP-маршрутизацию, богатые NetworkPolicy, WireGuard-шифрование. Компания Tigera.
  • Flannel: простейший overlay-плагин с VXLAN. Идеален для разработки и небольших кластеров.
  • Cilium: использует eBPF вместо iptables. Высокая производительность, L7 NetworkPolicy (HTTP, gRPC), встроенная observability через Hubble. Рекомендован для cloud-native сред.
  • Weave Net: простой overlay с автоматическим обнаружением пиров. Поддерживает шифрование.
  • Multus: мета-плагин, позволяющий подключить Pod к нескольким сетям (актуально для телекоммуникаций, 5G).

Сетевые политики (NetworkPolicy)

Kubernetes NetworkPolicy – ресурс для управления трафиком между Pod'ами. Сам по себе Kubernetes не применяет NetworkPolicy – это делает CNI-плагин. Не все плагины поддерживают NetworkPolicy: Flannel, например, не поддерживает; Calico и Cilium – поддерживают в полной мере.

NetworkPolicy позволяет:

  • Разрешить трафик только между определёнными namespace'ами или Pod'ами с определёнными labels.
  • Заблокировать весь входящий/исходящий трафик по умолчанию (default deny).
  • Ограничить доступ к базам данных только от Pod'ов приложения.

Связь с другими понятиями

  • Kubernetes Operator – операторы Calico и Cilium упрощают установку и управление CNI в кластере.
  • Service Mesh (Istio, Linkerd) – работает поверх CNI, добавляя L7 observability и mTLS. CNI обеспечивает базовую связность, service mesh – расширенное управление трафиком.
  • Ingress – для работы Ingress Controller'а необходима исправно функционирующая CNI-сеть.
  • eBPF – современные CNI-плагины (Cilium) используют eBPF для замены iptables, достигая значительного ускорения обработки пакетов.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «CNI».

Платформы класса «CNI»

Решения из каталога Цифрового маркетплейса, относящиеся к этому классу ПО. Карточки ведут на полные карточки платформ с тарифами, обзорами и кейсами внедрения.

ПБ

Платформа боцман

Kubernetes и контейнерная оркестрация
Российская гибридная Kubernetes-платформа для централизованного управления мультикластерами контейнеров в корп...
Цена по запросу
★ 4.3
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «CNI».

Где применяется

Отрасли, в которых «CNI» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про CNI

Что будет, если не установить CNI-плагин в Kubernetes?

Без CNI-плагина все Pod'ы будут оставаться в статусе Pending – kubelet не сможет настроить сеть для контейнеров. Кластер не будет работать.

Какой CNI-плагин выбрать для production?

Для корпоративных сред рекомендуется Calico (богатые политики, BGP, enterprise-поддержка) или Cilium (eBPF, высокая производительность, L7 политики). Flannel – для простых окружений и разработки.

Чем Cilium отличается от Calico?

Cilium использует eBPF вместо iptables, что даёт лучшую производительность и L7 политики (HTTP, gRPC). Calico более зрелый для BGP-сред и имеет более широкую enterprise-поддержку.

Можно ли использовать несколько CNI-плагинов одновременно?

Да, через Multus CNI – мета-плагин, позволяющий подключить Pod сразу к нескольким сетям. Активно используется в телекоммуникациях для 5G-приложений.

Что такое IPAM в контексте CNI?

IPAM (IP Address Management) – компонент CNI-плагина, отвечающий за выделение IP-адресов из пула для новых Pod'ов и освобождение адресов при удалении Pod'ов.