Шаги Kubernetes CNI при использовании фланели - PullRequest
0 голосов
/ 06 ноября 2018

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

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

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

  1. A cni0 мост.
  2. A 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 Ответ

0 голосов
/ 07 ноября 2018

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

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

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

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

Что такое CNI?

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...