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


Настройка сети наложения Azure CNI в службе Azure Kubernetes (AKS)

В этой статье описывается процесс установки, конфигурация сети с двумя стеками и пример развертывания рабочей нагрузки для наложения Azure CNI в кластерах Службы Azure Kubernetes (AKS). Общие сведения о сети наложения Azure CNI см. в статье "Обзор сети наложения Azure CNI" в службе Azure Kubernetes (AKS).

Important

Начиная с 30 ноября 2025 г. служба Azure Kubernetes (AKS) больше не поддерживает или предоставляет обновления безопасности для Azure Linux 2.0. Образ узла Linux 2.0 Azure заморожен в выпуске 202512.06.0. Начиная с 31 марта 2026 г. образы узлов будут удалены, и вы не сможете масштабировать пулы узлов. Выполните миграцию в поддерживаемую версию Linux Azure, обновив пулы узлов до поддерживаемой версии Kubernetes или переключив ее на osSku AzureLinux3. Дополнительные сведения см. в вопросе о прекращении поддержки на GitHub и объявлении об устаревании обновлений Azure. Чтобы оставаться в курсе объявлений и обновлений, следуйте заметкам о выпуске AKS.

Prerequisites

Для сети с двумя стеками требуется Kubernetes версии 1.26.3 или более поздней.

Ключевые параметры кластеров Azure CNI Overlay AKS

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

Параметр Description
--network-plugin Установите azure для использования Azure Container Networking Interface (CNI).
--network-plugin-mode Установите overlay для включения наложенной сети Azure CNI. Этот параметр применяется только при условии --network-plugin=azure.
--pod-cidr Укажите для кластера пользовательский блок бесклассовой междоменной маршрутизации (CIDR). Значение по умолчанию — 10.244.0.0/16.

Поведение по умолчанию для сетевых подключаемых модулей зависит от того, задано ли это явным образом --network-plugin.

  • Если не указать --network-plugin, AKS по умолчанию использует Azure CNI Overlay.
  • При указании --network-plugin=azure и опущении --network-plugin-modeAKS намеренно использует режим виртуальной сети (подсети узла) для обратной совместимости.

Создание кластера AKS с наложением Azure CNI

Создайте оверлейный кластер AKS с помощью Azure CNI, воспользовавшись az aks create с --network-plugin=azure и --network-plugin-mode=overlay. Если вы не укажете значение для --pod-cidr, AKS назначит значение 10.244.0.0/16 по умолчанию.

az aks create \
  --name $CLUSTER_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $REGION \
  --network-plugin azure \
  --network-plugin-mode overlay \
  --pod-cidr 192.168.0.0/16 \
  --generate-ssh-keys

Добавление нового пула узлов в выделенную подсеть

Добавьте пул узлов в другую подсеть в одной виртуальной сети для управления IP-адресами узла виртуальной машины для сетевого трафика в виртуальную сеть или пиринговые ресурсы виртуальной сети.

Добавьте новый пул узлов в кластер с помощью az aks nodepool add команды и укажите идентификатор ресурса подсети с параметром --vnet-subnet-id . Рассмотрим пример.

az aks nodepool add \
  --resource-group $RESOURCE_GROUP \
  --cluster-name $CLUSTER_NAME \
  --name $NODE_POOL_NAME \
  --node-count 1 \
  --mode system \
  --vnet-subnet-id $SUBNET_RESOURCE_ID

Сведения о кластерах AKS наложения Azure CNI с сетями с двумя стеками

Вы можете развернуть кластеры Azure CNI Overlay AKS в двухстековом режиме с виртуальной сетью Azure. В этой конфигурации узлы получают как IPv4, так и IPv6-адрес из подсети виртуальной сети Azure. Pod'ы получают IPv4 и IPv6-адреса из другого адресного пространства, в отличие от пространства адресов подсети виртуальной сети Azure, к которой принадлежат узлы. Трансляция сетевых адресов (NAT) затем настраивается таким образом, чтобы поды могли получать доступ к ресурсам в виртуальной сети Azure. Исходный IP-адрес трафика — это NAT-адрес основного IP-адреса узла той же семьи (IPv4 до IPv4 и IPv6до IPv6).

Note

Вы также можете развертывать сетевые кластеры с поддержкой двух стеков, используя Azure CNI на базе Cilium. Дополнительные сведения см. в разделе "Двухстековая сеть с использованием Azure CNI на базе Cilium".

Ограничения сети с двумя стеками

Следующие функции не поддерживаются в сети с двумя стеками:

Ключевые параметры для сети с двумя стеками

В следующей таблице описываются ключевые параметры настройки сети с двумя стеками в кластерах Azure CNI Overlay AKS:

Параметр Description
--ip-families Принимает разделенный запятыми список семейств IP-адресов для включения в кластере. Поддерживаются только ipv4 и ipv4,ipv6.
--pod-cidrs Принимает разделённый запятыми список диапазонов IP-адресов в нотации бесклассовой междоменной маршрутизации (CIDR) для назначения IP-адресов pod. Число и порядок диапазонов в этом списке должны соответствовать указанному значению --ip-families. Если вы не предоставляете никаких значений, параметр использует значение 10.244.0.0/16,fd12:3456:789a::/64по умолчанию.
--service-cidrs Принимает список диапазонов IP-адресов в нотации CIDR, разделенных запятыми, для назначения IP-адресов сервисов. Число и порядок диапазонов в этом списке должны соответствовать указанному значению --ip-families. Если вы не предоставляете никаких значений, параметр использует значение 10.0.0.0/16,fd12:3456:789a:1::/108по умолчанию. Назначенная --service-cidrs подсеть IPv6 не может быть больше /108.

Создание кластера AKS с наложенной сетью Azure CNI и двухстековой сетью (Linux)

  1. Создайте группу ресурсов Azure для кластера с помощью az group create команды:

    az group create --location $REGION --name $RESOURCE_GROUP
    
  2. Создайте кластер AKS с двумя стеками с помощью az aks create команды с заданным параметром --ip-familiesipv4,ipv6:

    az aks create \
      --location $REGION \
      --resource-group $RESOURCE_GROUP \
      --name $CLUSTER_NAME \
      --network-plugin azure \
      --network-plugin-mode overlay \
      --ip-families ipv4,ipv6 \
      --generate-ssh-keys
    

Создайте кластер Azure CNI Overlay AKS с поддержкой двустековой сети (Windows)

Important

Функции предварительной версии AKS доступны на основе самообслуживания. Предварительные версии предоставляются "как есть" и "как доступны", и они исключены из соглашений об уровне обслуживания и ограниченной гарантии. Предварительные версии AKS частично охватываются поддержкой клиентов на основе наилучших усилий. Таким образом, эти функции не предназначены для использования в рабочей среде. Дополнительные сведения см. в следующих статьях о поддержке:

Прежде чем создать кластер Azure CNI Overlay AKS с двумя стеками сети с пулами узлов Windows, необходимо установить aks-preview расширение Azure CLI и зарегистрировать AzureOverlayDualStackPreview флаг компонента в подписке.

Установка расширения Azure CLI aks-preview

  1. aks-preview Установите расширение с помощью az extension add команды:

    az extension add --name aks-preview
    
  2. Обновите до последней версии расширения с помощью az extension update команды:

    az extension update --name aks-preview
    

Регистрация флага компонента AzureOverlayDualStackPreview

  1. Зарегистрируйте AzureOverlayDualStackPreview флаг функции с помощью команды az feature register.

    az feature register --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
    

    На то, чтобы статус Registered отобразился, может потребоваться несколько минут.

  2. Проверьте состояние регистрации с помощью az feature show команды:

    az feature show --namespace "Microsoft.ContainerService" --name "AzureOverlayDualStackPreview"
    
  3. Когда статус отображается Registered, обновите регистрацию поставщика ресурсов Microsoft.ContainerService при помощи команды az provider register.

    az provider register --namespace Microsoft.ContainerService
    

Создание кластера AKS с двойным стеком Azure CNI и добавление пула узлов Windows

  1. Создайте кластер с использованием Azure CNI Overlay при помощи команды az aks create.

    az aks create \
      --name $CLUSTER_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $REGION \
      --network-plugin azure \
      --network-plugin-mode overlay \
      --ip-families ipv4,ipv6 \
      --generate-ssh-keys
    
  2. Добавьте пул узлов Windows в кластер с помощью az aks nodepool add команды:

    az aks nodepool add \
      --resource-group $RESOURCE_GROUP \
      --cluster-name $CLUSTER_NAME \
      --os-type Windows \
      --name $WINDOWS_NODE_POOL_NAME \
      --node-count 2
    

Развертывание примера рабочей нагрузки в кластере AZURE CNI Overlay AKS

Разверните кластеры AKS CNI Overlay с двойным стеком с адресами IPv4/IPv6 на узлах виртуальных машин. Этот пример развертывает веб-сервер NGINX и делает его доступным с помощью LoadBalancer сервиса с IPv4 и IPv6-адресами.

Note

Рекомендуется использовать надстройку маршрутизации приложений для входящего трафика в кластерах AKS. Однако в демонстрационных целях в этом примере развертывается веб-сервер NGINX без надстройки маршрутизации приложений. Дополнительные сведения о надстройке см. в статье Managed NGINX ingress с надстройкой маршрутизации приложений.

Открыть доступ к рабочей нагрузке с помощью LoadBalancer службы

Откройте развертывание NGINX с помощью команд kubectl или манифестов YAML.

Important

В настоящее время существуют два ограничения , относящиеся к службам IPv6 в AKS:

  • Azure Load Balancer отправляет пробы работоспособности в назначения IPv6 из локального адреса ссылки. В пулах узлов Azure Linux вы не можете направлять этот трафик в pod, поэтому трафик, поступающий в службы IPv6, развернутые с externalTrafficPolicy: Cluster, не проходит.
  • Необходимо развернуть службы IPv6 с помощью externalTrafficPolicy: Local, что вызывает kube-proxy реагирование на пробу на узле.
  1. Опубликовать развертывание NGINX с помощью команды kubectl expose deployment nginx.

    kubectl expose deployment nginx --name=nginx-ipv4 --port=80 --type=LoadBalancer
    kubectl expose deployment nginx --name=nginx-ipv6 --port=80 --type=LoadBalancer --overrides='{"spec":{"ipFamilies": ["IPv6"]}}'
    

    Выходные данные должны отображать предоставляемые службы. Рассмотрим пример.

    service/nginx-ipv4 exposed
    service/nginx-ipv6 exposed
    
  2. После доступа к развертыванию и полной настройки служб получите IP-адреса служб с помощью команды LoadBalancer.

    kubectl get services
    

    Выходные данные должны отображать службы с назначенными IP-адресами. Рассмотрим пример.

    NAME         TYPE           CLUSTER-IP               EXTERNAL-IP         PORT(S)        AGE
    nginx-ipv4   LoadBalancer   10.0.88.78               20.46.24.24         80:30652/TCP   97s
    nginx-ipv6   LoadBalancer   fd12:3456:789a:1::981a   2603:1030:8:5::2d   80:32002/TCP   63s
    
  3. Получите IP-адрес службы с помощью kubectl get services команды и задайте для нее переменную среды:

    SERVICE_IP=$(kubectl get services nginx-ipv6 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
    
  4. Проверка функциональности с помощью curl запроса от узла, поддерживающего IPv6. (Azure Cloud Shell не поддерживает IPv6.)

    curl -s "http://[${SERVICE_IP}]" | head -n5
    

    Выходные данные должны отображать HTML для страницы приветствия NGINX. Рассмотрим пример.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    <style>
    

Дополнительные сведения о сети наложения Azure CNI в AKS см. по следующим ссылкам в статьях: