Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
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 внешним службам.
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/actionMicrosoft.Authorization/roleAssignments/write-
Microsoft.Network/virtualNetworks/subnets/read(требуется только в том случае, если вы определяете собственные подсети и идентификаторы CIDR)
- Подсеть, назначенная пулу узлов AKS, не может быть делегированной подсетью.
- AKS не применяет группы безопасности сети (NSG) к своей подсети и не изменяет группы безопасности сети, связанные с этой подсетью. Если вы предоставляете собственную подсеть и добавляете группы безопасности, связанные с этой подсетью, необходимо убедиться, что правила безопасности в группах разрешают трафик в CIDR-диапазоне узла. Дополнительные сведения см. в разделе "Общие сведения о группах безопасности сети Azure".