Шаги Kubernetes CNI при использовании фланели

Я настраивал Kubernets с помощью kubeadm, и я использовал Flannel для настройки сети pod. Настройка в основном работала, но я сталкивался с различными проблемами (и ошибками), и теперь я пытаюсь лучше понять различные этапы процесса настройки сети (например, CNI и фланель).

С точки зрения конечного пользователя / администратора я просто передаю --pod-network-cidr с некоторым сетевым аргументом kubeadm а затем позже я применяю конфигурацию стручка для фланели, используя kubectl, Kubernetes тогда запустит фланелевую капсулу на каждом из моих узлов. Предполагая, что все работает, фланелевая сторона должна затем использовать сетевые интерфейсы контейнеров (CNI) Kubernetes для настройки сети pod.

В результате этого процесса я должен получить сеть pod, которая включает в себя следующее:

  1. cni0 мост.
  2. flannel.x интерфейс.
  3. Записи iptables для маршрутизации между хостом и сетью pod.

Следующие файлы и двоичные файлы, кажется, участвуют в установке:

  1. kubectl читает конфигурацию CNI, такую ​​как /etc/cni/net.d/10-flannel.conflist и вызывает плагин CNI, описанный в файле конфигурации.
  2. Как-то папка /var/lib/cni создается, который, кажется, содержит файлы конфигурации для настройки сети.
  3. Плагин CNI, такой как /opt/cni/bin/flannel работает, я еще не понимаю, что он делает.

Что мне не хватает в этом списке и как (2.) вписывается в эти шаги. Как /var/lib/cni создать и какая программа отвечает за это?

1 ответ

Как я вижу из кода CNI:

var  (
   CacheDir  =  "/var/lib/cni"
)

эта папка используется в качестве директории кеша для CNI и выглядит как созданная плагином CNI.

Здесь вы можете найти подробную документацию по CNI.

Что такое CNI?

CNI (Контейнерный сетевой интерфейс), проект Cloud Native Computing Foundation, состоит из спецификации и библиотек для написания плагинов для настройки сетевых интерфейсов в контейнерах Linux, а также ряда поддерживаемых плагинов. CNI занимается только сетевым подключением контейнеров и удалением выделенных ресурсов при удалении контейнера. Из-за этого внимания, CNI имеет широкий спектр поддержки, и спецификация проста в реализации.

Все проекты, такие как Calico, Flannel, используют CNI в качестве базы. Вот почему они назвали CNI-плагины

Здесь вы можете найти документацию о том, как kubernetes взаимодействуют с CNI.

Другие вопросы по тегам