Поделиться через


Обзор сетей CNI для Azure Kubernetes Service (AKS)

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

Служба Azure Kubernetes (AKS) предоставляет несколько подключаемых модулей CNI, которые можно использовать в кластерах в зависимости от требований к сети.

Сетевые модели в AKS

Выбор подключаемого модуля CNI для кластера AKS в значительной степени зависит от того, какая сетевая модель лучше всего соответствует вашим потребностям. Каждая модель имеет собственные преимущества и недостатки, которые следует учитывать при планировании кластера AKS.

AKS использует две основные сетевые модели:

  • Сеть наложения:

    • Сохраняет пространство IP-адресов для виртуальных сетей с помощью логически отдельных диапазонов безклассовой междоменной маршрутизации (CIDR) для подов.
    • Обеспечивает максимальную поддержку масштабирования кластера.
    • Обеспечивает простое управление IP-адресами.
  • Плоская сеть:

    • Предоставляет полное подключение к виртуальной сети для pod. К узлам под можно обращаться напрямую через их частный IP-адрес из подключенных сетей.
    • Для виртуальных сетей требуется большое, не фрагментированное пространство IP-адресов.

Обе сетевые модели имеют несколько поддерживаемых вариантов для подключаемых модулей CNI. Основными различиями между моделями являются назначение IP-адресов pod и способ выхода трафика из кластера.

Наложение сетей

Наложение сети — это наиболее распространенная сетевая модель, используемая в Kubernetes. В сетях наложения поды получают IP-адрес из частного, логически изолированного CIDR подсети виртуальной сети Azure, где развертываются узлы AKS. Эта конфигурация позволяет упростить и часто повысить масштабируемость, чем модель плоской сети.

В сетях наложения поды могут напрямую общаться друг с другом. Трафик, который покидает кластер, подвергается трансляции исходного сетевого адреса (SNAT) на IP-адрес узла. Входящий IP-трафик pod направляется через службу, например подсистему балансировки нагрузки. Затем IP-адрес POD становится невидимым за IP-адресом узла. Этот подход сокращает количество IP-адресов, необходимых для виртуальных сетей в кластерах.

Схема, показывающая два узла с тремя подами каждый, работающими в оверлейной сети. Трафик подов к конечным точкам за пределами кластера направляется через преобразование сетевых адресов.

Для оверлейных сетей AKS предоставляет плагин Azure CNI Overlay. Мы рекомендуем этот плагин CNI для большинства сценариев.

Неструктурированные сети

В отличие от сети наложения, модель плоской сети в AKS назначает IP-адреса подам из той же подсети виртуальной сети Azure, что и узлы AKS. Трафик, который покидает кластеры, не проходит через SNAT, и IP-адрес пода напрямую подключен к назначению. Этот подход может оказаться полезным для некоторых сценариев, таких как при необходимости предоставлять IP-адреса pod внешним службам.

Схема, демонстрирующая два узла с тремя pod каждый, работающими в плоской сетевой модели.

AKS предоставляет два подключаемых модуля CNI для плоских сетей.

  • Подсеть Pod Azure CNI — рекомендуемый подключаемый модуль CNI для сценариев с плоской сетью.
  • Подсеть узла CNI Azure— устаревшая модель CNI для неструктурированных сетей. Как правило, рекомендуется использовать его только в том случае, если для кластера требуется управляемая виртуальная сеть.

Выбор подключаемого модуля CNI

При выборе плагина CNI необходимо учитывать несколько факторов. Каждая сетевая модель имеет свои собственные преимущества и недостатки. Оптимальный выбор для кластера зависит от конкретных требований.

Сравнение вариантов использования

Подключаемый модуль CNI Сетевая модель Основные моменты вариантов использования
Сетевой слой Azure CNI Overlay — Лучше всего сохранять IP-адреса для виртуальных сетей
— максимальное количество узлов, которое поддерживается сервером API, плюс 250 pod на узел
— упрощенная конфигурация
— нет прямого доступа к IP-адресам внешнего модуля pod
Подсеть Pod Azure CNI Flat — прямой доступ к внешнему модулю pod
— режимы эффективного использования IP-адресов для виртуальных сетей или поддержки крупных кластеров (предварительная версия)
Kubenet (устаревшая версия) Overlay — приоритет сохранения IP-адресов
— ограниченное масштабирование
— ручное управление маршрутами
Подсеть узла CNI Azure (устаревшая версия) Flat — прямой доступ к внешнему модулю pod
— упрощенная конфигурация
— ограниченное масштабирование
— неэффективное использование IP-адресов для виртуальных сетей

Сравнение функций

Feature Сетевой слой Azure CNI Подсеть Pod Azure CNI Подсеть узла CNI Azure (устаревшая версия) Kubenet (устаревшая версия)
Развертывание кластера в существующей или новой виртуальной сети Supported Supported Supported Поддерживается вручную определяемыми пользователем маршрутами (UDR)
Подключение между pod и виртуальной машиной, находящейся в одной виртуальной сети или в одноранговой виртуальной сети. Pod инициализирован Оба способа Оба способа Pod инициализирован
Локальный доступ через виртуальную частную сеть (VPN) и Azure ExpressRoute Под инициализирован Оба способа Оба способа Pod инициализирован
Доступ к конечным точкам службы Supported Supported Supported Supported
Предоставление доступа к службам через балансировщик нагрузки Supported Supported Supported Supported
Доступность служб через Ingress-контроллер Azure шлюза приложений Supported Supported Supported Supported
Предоставление доступа к службам через шлюз приложений для контейнеров Supported Supported Supported Не поддерживается
пулы узлов Windows; Supported Supported Supported Не поддерживается
Служба доменных имен Azure по умолчанию и частные зоны Supported Supported Supported Supported
Совместное использование подсетей виртуальной сети в нескольких кластерах Supported Supported Supported Не поддерживается

Область поддержки между сетевыми моделями

В зависимости от используемого подключаемого модуля CNI можно развернуть ресурсы виртуальной сети для кластера одним из следующих способов:

  • Платформа Azure может автоматически создавать и настраивать ресурсы виртуальной сети при создании кластера AKS, например в Azure CNI Overlay, Подсети узла Azure CNI и Kubenet.
  • Вы можете вручную создать и настроить ресурсы виртуальной сети и присоединить их к этим ресурсам при создании кластера AKS.

Хотя поддерживаются такие возможности, как конечные точки службы или определяемые пользователем ресурсы, политики поддержки для AKS определяют, какие изменения можно внести. Рассмотрим пример.

  • Если вы вручную создаете ресурсы виртуальной сети для кластера AKS, вы получите поддержку при настройке собственных UDRs или служебных конечных точек.
  • Если платформа Azure автоматически создает ресурсы виртуальной сети для кластера AKS, то невозможно будет вручную изменить ресурсы, управляемые AKS, чтобы настроить собственные UDR и служебные конечные точки.

Prerequisites

При планировании конфигурации сети для AKS следует учитывать следующие требования и рекомендации.

  • Виртуальная сеть для кластера AKS должна разрешать исходящее подключение к Интернету.
  • Кластеры AKS не могут использовать диапазоны 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16, 192.0.2.0/24 адресов для службы Kubernetes, pod или виртуальных сетей кластера.
  • В сценариях, когда вы используете собственную виртуальную сеть, удостоверение кластера, используемое кластером AKS, должно иметь как минимум разрешения обработчика сети на подсеть вашей виртуальной сети. Если вы хотите определить пользовательскую роль вместо использования встроенной роли участника сети, необходимы следующие разрешения:
    • Microsoft.Network/virtualNetworks/subnets/join/action
    • Microsoft.Authorization/roleAssignments/write
    • Microsoft.Network/virtualNetworks/subnets/read (требуется только в том случае, если вы определяете собственные подсети и идентификаторы CIDR)
  • Подсеть, назначенная пулу узлов AKS, не может быть делегированной подсетью.
  • AKS не применяет группы безопасности сети (NSG) к своей подсети и не изменяет группы безопасности сети, связанные с этой подсетью. Если вы предоставляете собственную подсеть и добавляете группы безопасности, связанные с этой подсетью, необходимо убедиться, что правила безопасности в группах разрешают трафик в CIDR-диапазоне узла. Дополнительные сведения см. в разделе "Общие сведения о группах безопасности сети Azure".