[Знания – маяк жизни. Только непрерывное обучение может осветить путь вперед.]
Kubernetes требует использования сетевых плагинов для обеспечения сетевой связи внутри и за пределами кластера, а также для обеспечения масштабируемой и высокопроизводительной сетевой архитектуры. Его основные концепции заключаются в следующем:
основные понятия
ключевые компоненты
А функция сетевого плагина в Kubernetes заключается в управлении настройкой сетевого интерфейса через плагин CNI (контейнерный сетевой интерфейс), поэтому сетевой плагин в кластере Kubernetes должен соответствовать стандартной спецификации CNI.
Что такое ЦНИ?
CNI (Container Network Interface) — проект Cloud Native Computing Foundation, содержащий спецификации и библиотеки для написания серии плагинов для настройки сетевых интерфейсов в контейнерах Linux. CNI заботится только о сетевых подключениях контейнера и удаляет выделенные ресурсы при удалении контейнера. Kubernetes использует CNI в качестве интерфейса между сетевыми провайдерами и сетью Kubernetes Pod. Дополнительную информацию можно найти в проекте CNI на GitHub.
Какие сетевые модели использует CNI?
Сетевой плагин CNI использует инкапсулированную сетевую модель (например, Virtual Extensible Lan или VXLAN) или неинкапсулированную сетевую модель (например, протокол пограничного шлюза или BGP) для реализации сетевой структуры.
Проще говоря, эта сетевая модель создает расширенный мост между рабочими процессами Kubernetes, к которым подключены модули. Вы можете выбрать эту сетевую модель, если предпочитаете использовать расширенный мост L2. Сетевые плагины CNI, использующие эту сетевую модель, включают Flannel, Canal, Weave и Cilium. Примечание. Calico не использует эту модель по умолчанию, но вы можете ее настроить.
Схема модели сети, инкапсулированной в weiyigeek.top
Короче говоря, эта сетевая модель создает расширенный сетевой маршрутизатор между работниками Kubernetes, предоставляя информацию о том, как подключать модули. Вы можете выбрать эту сетевую модель, если предпочитаете использовать сеть L3. Эта модель динамически обновляет маршруты для рабочих Kubernetes на уровне операционной системы. Менее чувствителен к задержке. Сетевые плагины CNI, использующие эту сетевую модель, включают Calico и Cilium. Примечание. Cilium можно настроить с использованием этой модели, даже если это не режим по умолчанию.
weiyigeek.top-схема модели неинкапсулированной сети
Сетевой плагин CNI в Kubernetest
В среде производственного обучения обычно используется следующая Сетевая штекер, как уже говорилось ранее в кластере K8S в Сетевой плагиннужно быть удовлетвореннымCNI (сетевой интерфейс контейнера)
Стандартные характеристики,Поэтому использование взаимозаменяемо.
Обычно используется
)。weiyigeek.top-Схема коммуникации модели фланели
Обычно используется
)。weiyigeek.top-схема связи модели Calico
eBPF (Extended Berkeley Packet Filter)
Технология из Сетевой плагин,этоиспользовать Linux Ядро из динамического плагина для обеспечения таких функций, как дорога. от、балансировка нагрузки、безопасностьисетевая стратегияждать(Обычно используется
)。weiyigeek.top-Схема архитектуры модели Cilium
OVS (Open vSwitch)
Технология из Сетевой плагин,этопоставлять Понятноконтейнермеждукоммуникация、сетевая стратегияибезопасностьждать Функция,возвращаться Поддержка Различные топологии сетей。weiyigeek.top-схема связи модели Antrea
OVN/OVS
из Сетевой плагин,поставлятьподсеть、Статический IP、ACL、QoS И так далее по функциям высокого уровня.weiyigeek.top-Kube-OVN схема связи модели
В следующей таблице приведены показатели GitHub для различных плагинов CNI, чтобы дать вам представление о четырех самых популярных сетевых плагинах CNI в Kubernetes на данный момент.
поставщик | Введение в проект | Адрес проекта | Stars |
---|---|---|---|
Flannel | Flannel — это простой и легкий способ настройки сетевых структур уровня 3, предназначенных для Kubernetes. | https://github.com/flannel-io/flannel | 8.7k |
Calico | Calico, созданный и поддерживаемый Tigera, представляет собой проект с открытым исходным кодом, а также контейнерное сетевое решение и решение для обеспечения безопасности. | https://github.com/projectcalico/calico | 5.8k |
Cilium | Cilium — это сетевое решение, решение для наблюдения и безопасности с плоскостью данных на основе eBPF, которое обеспечивает простую плоскую сеть уровня 3 с возможностью охвата нескольких кластеров в режиме собственной маршрутизации или наложения. | https://github.com/cilium/cilium | 19.5k |
Antrea | Antrea — это сетевое решение Kubernetes, которое работает на уровне 3/4, предоставляя сетевые услуги и услуги безопасности кластерам Kubernetes, используя Open vSwitch в качестве плоскости сетевых данных. | https://github.com/antrea-io/antrea | 1.6k |
Kube-OVN | Kube-OVN — это проект уровня песочницы CNCF, который интегрирует виртуализацию сети на основе OVN с Kubernetes. | https://github.com/kubeovn/kube-ovn | 1.9k |
Ниже приведена сравнительная таблица функций, возможностей и сценариев применения трех наиболее часто используемых сетевых плагинов: Flannel, Calico и Cilium:
Особенности/Функции | Flannel | Calico | Cilium |
---|---|---|---|
Основные принципы | Создайте плоскую сеть, используя наложенную сеть | Эффективная пересылка пакетов с использованием маршрутизации BGP и eBPF. | Высокопроизводительная сеть и управление безопасностью с помощью eBPF |
сетевой режим | VXLAN、Host-Gateway、UDP、IPIP、AWS VPC | IP、IPIP、VXLAN、BGP、WireGuard、AWS VPC、GCE | Direct Routing、VXLAN、Geneve、IPIP、Egress Gateway、Cluster Mesh、Host-Reachable Services、Transparent Encryption |
производительность | ниже | высокий | большинствовысокий |
сложность | Простой | середина | сложный |
сетевая стратегия | Не поддерживается | поддерживать | поддерживать |
безопасность | Базовый | высокий | большинствовысокий |
Связь между подсетями | поддерживать(VXLAN、IPIP) | поддерживать | поддерживать |
шифрование | Не поддерживается | поддерживать(WireGuard) | поддерживать(IPsec、WireGuard) |
Несколько кластеровподдерживать | Не поддерживается | поддерживать(использоватьBGP) | поддерживать(Cluster Mesh) |
Масштабируемость | середина | высокий | высокий |
Мониторинг и визуализация | Базовый | высокий | высокий |
Контейнерный сетевой интерфейс (CNI) | поддерживать | поддерживать | поддерживать |
Сценарии применения | ПростойизKubernetes кластер, небольшой кластер | Средние и крупные кластеры,нуждатьсявысокийпроизводительностьигибкийсетевая стратегия | нуждаться要высокийпроизводительность、высокийбезопасностьи Масштабируемостьиз Большой кластер |
Конфигурация установки | Простой, подходит для пользователей начального уровня | середина, подходит для пользователей с определенным опытом | сложный,Подходит для пользователей высокого уровня и крупномасштабного развертывания. |
поддерживатьизKubernetes版本 | широкоподдерживать | широкоподдерживать | широкоподдерживать |
Отладка и устранение неполадок | Простой | сравниватьсложный | сложный |
Сообществоподдерживать | активный | Оченьактивный | Оченьактивный |
Бизнесподдерживать | Базовый | поставлять | поставлять |
Сценарии применения:
Если статья хорошо написана, не стесняйтесь подписываться, пересылать ее, ставить лайки и читать. Если у вас есть вопросы, оставляйте свои мысли в комментариях💬.