Шаги Kubernetes CNI при использовании фланели
Я настраивал Kubernets с помощью kubeadm, и я использовал Flannel для настройки сети pod. Настройка в основном работала, но я сталкивался с различными проблемами (и ошибками), и теперь я пытаюсь лучше понять различные этапы процесса настройки сети (например, CNI и фланель).
С точки зрения конечного пользователя / администратора я просто передаю --pod-network-cidr
с некоторым сетевым аргументом kubeadm
а затем позже я применяю конфигурацию стручка для фланели, используя kubectl
, Kubernetes тогда запустит фланелевую капсулу на каждом из моих узлов. Предполагая, что все работает, фланелевая сторона должна затем использовать сетевые интерфейсы контейнеров (CNI) Kubernetes для настройки сети pod.
В результате этого процесса я должен получить сеть pod, которая включает в себя следующее:
cni0
мост.flannel.x
интерфейс.- Записи iptables для маршрутизации между хостом и сетью pod.
Следующие файлы и двоичные файлы, кажется, участвуют в установке:
kubectl
читает конфигурацию CNI, такую как/etc/cni/net.d/10-flannel.conflist
и вызывает плагин CNI, описанный в файле конфигурации.- Как-то папка
/var/lib/cni
создается, который, кажется, содержит файлы конфигурации для настройки сети. - Плагин 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.