Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure CNI Overlay — это сетевая модель для Azure Kubernetes Service (AKS), которая обеспечивает эффективное управление IP-адресами и высокопроизводительное взаимодействие подов. В этой статье представлен обзор наложения Azure CNI, включая архитектуру, планирование IP-адресов и различия в традиционной сетевой модели kubenet.
Общие сведения о наложенных сетях
Традиционный сетевой интерфейс контейнера Azure (CNI) назначает IP-адрес виртуальной сети каждому pod. Он назначает этот IP-адрес из зарезервированного набора IP-адресов на каждом узле или отдельной подсети, зарезервированной для модулей pod. Этот подход требует планирования IP-адресов и может привести к нехватке адресов, что приводит к трудностям масштабирования кластеров по мере роста требований приложения.
В сети наложения только узлы кластера Kubernetes получают IP-адреса из подсетей. Поды получают IP-адреса из частного диапазона бесклассовой междоменной маршрутизации (CIDR), предоставленного при создании кластера. Каждому узлу выделяется адресное пространство /24, вырезанное из одного и того же диапазона CIDR. Дополнительные узлы, созданные при горизонтальном масштабировании кластера, автоматически получают /24 адресные пространства из того же CIDR. Azure CNI назначает IP-адреса объектам pod из этого диапазона адресов /24.
Отдельный домен маршрутизации создается в сетевом стеке Azure для частного пространства CIDR pod. Этот домен создает оверлейную сеть для прямого обмена данными между подами. Нет необходимости подготавливать пользовательские маршруты в подсети кластера или использовать метод инкапсуляции для туннелирования трафика между модулями pod, что обеспечивает производительность подключения между модулями pod в паре с виртуальными машинами в виртуальной сети. Рабочие нагрузки, выполняемые в модулях pod, даже не знают, что происходит обработка сетевых адресов.
Обмен данными с конечными точками за пределами кластера, такими как локальные и пиринговые виртуальные сети, использует IP-адрес узла через преобразование сетевых адресов (NAT). Azure CNI преобразует исходный IP-адрес (наложенный IP-адрес pod) трафика на основной IP-адрес виртуальной машины. Этот перевод позволяет сетевому стеку Azure направлять трафик в место назначения.
Конечные точки за пределами кластера не могут подключиться к подам напрямую. Необходимо опубликовать приложение pod как службу Load Balancer Kubernetes, чтобы сделать ее доступной в виртуальной сети.
Вы можете предоставить исходящее подключение к Интернету для подов наложения с помощью стандартной подсистемы балансировки нагрузки или управляемого шлюза NAT. Вы также можете управлять исходящим трафиком, направив его в брандмауэр с помощью определяемых пользователем маршрутов в подсети кластера.
Подключение к кластеру можно настроить с помощью контроллера входящего трафика, например шлюза приложений для контейнеров, NGINX или надстройки маршрутизации приложений.
Различия между kubenet и оверлейной сетью Azure CNI
Как и Azure CNI Overlay, kubenet назначает IP-адреса pod из адресного пространства, которое логически отличается от виртуальной сети, но имеет ограничения на масштабируемость и другие ограничения. В следующей таблице приведено подробное сравнение kubenet и Azure CNI Overlay.
| Площадь | Оверлей Azure CNI | kubenet |
|---|---|---|
| Масштаб кластера | 5000 узлов и 250 подов на узел | 400 узлов и 250 pod на узел |
| Сетевая конфигурация | Простой— не требуется дополнительных конфигураций для сети pod | Сложный — требуются таблицы маршрутов и определяемые пользователем маршруты в подсети кластера для сети pod. |
| Производительность связи Pod | Производительность на уровне виртуальных машин в виртуальной сети | Дополнительный прыжок добавляет задержку |
| Сетевые политики Kubernetes | Политики сети Azure, Calico, Cilium | Ситец |
| Поддерживаемые платформы ОС | Linux, Windows Server 2022, Windows Server 2019 | только Linux. |
Замечание
Если вы не хотите назначать IP-адреса виртуальной сети подам из-за нехватки IP-адресов, рекомендуется использовать Azure CNI Overlay.
Планирование IP-адресов
В следующих разделах приведены рекомендации по планированию IP-адресного пространства для Azure CNI Overlay.
Узлы кластера
При настройке кластера AKS убедитесь, что подсети виртуальной сети достаточно места для дальнейшего масштабирования. Вы можете назначить каждому пулу узлов отдельную подсеть.
/24 Подсеть может вмещать до 251 узла, так как первые три IP-адреса зарезервированы для задач управления.
Подшипники
Размер /24, который назначает Azure CNI Overlay, является фиксированным и не может быть увеличен или уменьшен. На узле можно запустить до 250 подов. При планировании адресного пространства pod убедитесь, что частный CIDR достаточно велик, чтобы предоставить /24 адресные пространства для новых узлов для поддержки будущего расширения кластера.
При планировании пространства IP-адресов для модулей pod следует учитывать следующие факторы:
- Одно и то же пространство POD CIDR можно использовать в нескольких независимых кластерах AKS в одной виртуальной сети.
- Диапазон CIDR для pod не должен перекрываться с диапазоном подсети кластера.
- Пространство CIDR для подов не должно перекрываться с непосредственно подключенными сетями, такими как пиринг виртуальных сетей, Azure ExpressRoute или VPN. Если источник IP-адреса внешнего трафика попадает в диапазон pod CIDR, для взаимодействия с кластером он должен быть преобразован через SNAT в неперекрывающийся IP-адрес.
- Только пространство CIDR pod можно расширить.
Диапазон адресов службы Kubernetes
Размер CIDR адреса службы зависит от количества создаваемых служб кластера. Он должен быть меньше /12. Этот диапазон не должен перекрываться с диапазоном CIDR pod, диапазоном подсети кластера и диапазоном IP-адресов, используемым в одноранговых виртуальных сетях и локальных сетях.
IP-адрес службы Kubernetes для DNS
IP-адрес для DNS находится в диапазоне адресов службы Kubernetes, который использует кластерное обнаружение сервисов. Не используйте первый IP-адрес в диапазоне адресов, так как этот адрес используется для kubernetes.default.svc.cluster.local адреса.
Это важно
Частные диапазоны CIDR, доступные для CIDR pod, определены в RFC 1918 и RFC 6598. Хотя мы не блокируем использование диапазонов общедоступных IP-адресов, они считаются не в области поддержки Майкрософт. Мы рекомендуем использовать диапазоны частных IP-адресов для CIDR pod.
При использовании Azure CNI в режиме наложения убедитесь, что CIDR pod не перекрывается с внешними IP-адресами или сетями (такими как локальные сети, пиринговые виртуальные сети или ExpressRoute). Если внешний узел использует IP-адрес в ciDR pod, пакеты, предназначенные для этого узла из pod, могут быть перенаправлены в сеть наложения и SNAT узла. Эта ситуация приводит к тому, что внешняя конечная точка становится недоступной.
Группы безопасности сети
Трафик pod-to-pod с наложениями Azure CNI не инкапсулируется, а правила группы безопасности сети подсети (NSG) применяются. Если группа безопасности сети подсети содержит правила запрета, которые влияют на трафик CIDR pod, убедитесь, что были соблюдены следующие правила, чтобы обеспечить правильную функциональность кластера (помимо выполнения всех требований к исходящему трафику AKS):
- Трафик от CIDR узла к узлу CIDR на всех портах и протоколах
- Трафик от CIDR узла к CIDR pod на всех портах и протоколах (необходимых для маршрутизации трафика службы)
- Трафик из CIDR pod в CIDR pod для всех портов и протоколов (что требуется для трафика pod-to-pod и pod-to-service, включая DNS)
Трафик из pod в любое место за пределами блока CIDR pod использует SNAT для назначения исходного IP-адреса IP-адресу узла, на котором выполняется pod.
Если вы хотите ограничить трафик между рабочими нагрузками в кластере, рекомендуется использовать политики сети.
Максимальное число pod на каждом узле
Максимальное количество объектов pod на узел можно настроить во время создания кластера или при добавлении нового пула узлов. Значение по умолчанию для наложения Azure CNI равно 250. Максимальное значение, которое можно указать в наложении Azure CNI, равно 250, а минимальное значение — 10. Значение максимального количества pod на узел, настраиваемое во время создания пула, применяется только к узлам в этом пуле.
Выбор сетевой модели
Azure CNI предлагает два варианта IP-адресации для модулей pod: наложение сети и традиционную конфигурацию, которая назначает IP-адреса виртуальной сети модулям pod. При выборе варианта для кластера AKS учитывается баланс гибкости и потребностей в расширенной конфигурации. Следующие рекомендации помогут определить, когда каждая сетевая модель может быть наиболее подходящей.
Используйте наложение сети, когда:
- Вы хотите масштабировать до большого количества подов, но ограничены пространством IP-адресов в виртуальной сети.
- Большая часть обмена данными между объектами pod происходит в пределах кластера.
- Вам не требуются расширенные возможности AKS, такие как виртуальные узлы.
Используйте традиционный параметр виртуальной сети, если:
- У вас есть имеющееся IP-адресное пространство.
- Большая часть обмена данными подов происходит с ресурсами за пределами кластера.
- Ресурсы за пределами кластера должны напрямую достигать подов.
- Вам требуются расширенные возможности AKS, такие как виртуальные узлы.
Ограничения, связанные с оверлеем Azure CNI
Наложение Azure CNI имеет следующие ограничения:
- Группы доступности виртуальных машин не поддерживаются.
- Виртуальные машины серии DCsv2 нельзя использовать в пулах узлов. Чтобы удовлетворить требования к конфиденциальным вычислениям, рекомендуется использовать конфиденциальные виртуальные машины серии DCasv5 или DCadsv5 .
- Если вы используете собственную подсеть для развертывания кластера, имена подсети, виртуальной сети и группы ресурсов, содержащей виртуальную сеть, должны быть 63 символами или меньше. Эти имена используются в качестве меток в рабочих узлах AKS, поэтому они подчиняются правилам синтаксиса Kubernetes для меток.
Связанный контент
Чтобы приступить к работе с Azure CNI Overlay в AKS, ознакомьтесь со следующими статьями: