Работали ли вы с сетевыми overlay-драйверами в контексте Docker или Kubernetes?

«Работали ли вы с сетевыми overlay-драйверами в контексте Docker или Kubernetes?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я работал с overlay-сетями, в основном в контексте Kubernetes, где они являются стандартным способом организации сетевого взаимодействия между Pod'ами на разных узлах.

Мой опыт касается следующих реализаций (CNI-плагинов):

  • Flannel (VXLAN): Простой и надежный драйвер для базовых кластеров. Настраивал host-gw backend в облачных средах для лучшей производительности.
  • Calico: Использовал как в режиме IP-in-IP, так и в pure L3 (с отключенной инкапсуляцией) для повышения производительности. Глубоко работал с Calico NetworkPolicies для изоляции трафика.
  • Cilium (eBPF): Наиболее продвинутый опыт. Внедрял Cilium для замены kube-proxy, использовал eBPF-возможности для observability (Hubble) и обеспечения безопасности на уровне L7.

Принцип работы и ключевые задачи: Overlay-драйвер создает виртуальную сеть поверх физической, инкапсулируя трафик (часто в VXLAN). Это позволяет Pod'ам общаться, как если бы они находились в одной плоской L2-сети, даже если узлы разнесены в разные подсети.

Практические аспекты и проблемы, которые решал:

  1. Производительность: Настройка MTU для избежания фрагментации пакетов (обычно физический_MTU - 50 для VXLAN).
  2. Отладка: Использование tcpdump для захвата инкапсулированного трафика на интерфейсе vxlan.calico или cilium_vxlan.
  3. Маршрутизация: Анализ таблиц маршрутизации (ip route) на узлах для понимания, как трафик идет до других Pod'ов.
  4. Безопасность: Настройка шифрования трафика между узлами с помощью WireGuard (интегрирован в Calico и Cilium).

Пример диагностики сетевой проблемы в Calico:

# Проверка состояния BGP-сессий (если используется)
calicoctl node status

# Проверка маршрутов до Pod-сети на узле
ip route | grep 10.244.0.0/16

# Проверка работы CNI-плагина на узле
journalctl -u kubelet -f | grep -i calico

Выбор overlay-драйвера зависит от требований к производительности, функциям безопасности и возможностям мониторинга.