Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: ✔️ AKS Automatic ✔️ AKS Standard
Для большинства производственных рабочих нагрузок AKS Automatic — рекомендуемый готовый к промышленной эксплуатации вариант AKS по умолчанию. Автоматические кластеры AKS включают предварительно настроенный управляемый шлюз NAT.
В AKS Standard можно создать или настроить управляемый шлюз NAT, если требуется исходящее подключение AKS для кластера. Для сценариев использования собственной сети (BYO) используйте шлюз NAT, назначаемый пользователем.
Хотя вы можете маршрутизировать исходящий трафик через Azure Load Balancer, существуют ограничения на количество исходящих потоков трафика, которые можно использовать. Azure NAT Gateway поддерживает до 64 512 исходящих потоков трафика UDP и TCP на один IP-адрес и не более 16 IP-адресов. Три типа исходящего трафика поддерживают шлюз NAT: managedNATGatewayV2 (предварительная версия) managedNATGatewayи userAssignedNATGateway.
В этой статье показано, как создать кластер AKS с управляемым шлюзом NAT и шлюзом NAT, назначенным пользователем, для исходящего трафика. В нем также показано, как отключить ИсходящийNAT для Windows.
Внимание
Тип managedNATGatewayV2 для исходящего трафика в настоящее время доступен в предварительной версии.
Изучите Дополнительные условия использования предварительных версий Microsoft Azure для юридических вопросов, применимых к функциям Azure, которые находятся в стадии бета-тестирования, предварительного просмотра или еще не выпущены в общую доступность.
Требования
Автоматические кластеры AKS включают предварительно настроенный управляемый шлюз NAT. Действия, описанные в этой статье, в основном предназначены для сценариев AKS Standard и пользовательских сетевых сценариев.
- Убедитесь, что вы используете последнюю версию Azure CLI.
- Убедитесь, что вы используете Kubernetes версии 1.20.x или более поздней.
- Управляемый шлюз NAT несовместим с пользовательскими виртуальными сетями.
Внимание
В неприватных кластерах трафик кластера к серверу API маршрутизируется и обрабатывается через тип исходящего трафика кластера. Чтобы предотвратить обработку трафика сервера API в качестве общедоступного трафика, рассмотрите возможность использования частного кластера или ознакомьтесь с функцией интеграции виртуальной сети СЕРВЕРА API.
Управляемый шлюз NAT в AKS
AKS Automatic использует управляемый шлюз NAT как часть своей предварительно настроенной конфигурации по умолчанию, готовой к промышленной эксплуатации. Используйте этот раздел, если вы работаете с AKS Standard или хотите понять, как работает управляемый шлюз NAT в кластере AKS.
Управляемый шлюз NAT — это управляемый AKS вариант исходящего подключения. AKS создает шлюз NAT и управляет им, чтобы обеспечить исходящее подключение для узлов кластера.
Используйте управляемый шлюз NAT, если требуется:
- Исходящее сетевое подключение под управлением AKS с меньшими операционными затратами.
- Маршрут исходящего трафика по умолчанию, подходящий для промышленной эксплуатации.
- Проще управлять исходящим трафиком, чем развертывание шлюза NAT, управляемым клиентом.
- Стандартная сетевая модель AKS без использования собственного ресурса шлюза NAT.
Создание кластера AKS с управляемым шлюзом NAT
Параметры исходящего IP-адреса
В следующей таблице описывается каждый исходящий IP-параметр и когда он используется:
| Параметр | Ввод | Версия протокола IP | Кто управляет общедоступными IP-адресами |
|---|---|---|---|
--nat-gateway-managed-outbound-ip-count |
Значение в диапазоне [1, 16]. Требуемое число исходящих IPv4-адресов для исходящего подключения шлюза NAT. | IPv4 | Azure |
--nat-gateway-managed-outbound-ipv6-count |
Значение в диапазоне [1, 16]. Требуемое число исходящих IPv6-адресов для исходящего подключения шлюза NAT. | IPv6 | Azure |
--nat-gateway-outbound-ips |
Идентификаторы ресурсов общедоступных IP-адресов, разделенные запятыми, для исходящего подключения через шлюз NAT. | IPv4 или IPv6 | Клиент |
--nat-gateway-outbound-ip-prefixes |
Идентификаторы ресурсов префиксов публичных IP-адресов, разделенные запятыми, для исходящего подключения NAT-шлюза. | IPv4 или IPv6 | Клиент |
Создание кластера AKS с управляемым шлюзом NAT StandardV2 (managedNATGatewayV2)
Внимание
Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:
- Создайте кластер AKS с управляемым шлюзом NAT StandardV2, используя команду
az aks createс параметрами--outbound-type managedNATGateway,--nat-gateway-outbound-ips,--nat-gateway-outbound-ip-prefixes,--nat-gateway-managed-outbound-ip-count,--nat-gateway-managed-outbound-ipv6-count,--nat-gateway-idle-timeout. - При настройке исходящих IP-адресов для
managedNATgatewayV2используйте один из следующих способов. Вы не можете использовать ip-адреса исходящего трафика, управляемые Azure и определяемые клиентом.-
IP-адреса, управляемые Azure: используйте
--nat-gateway-managed-ip-outbound-countи--nat-gateway-managed-outbound-ipv6-count, чтобы Azure автоматически выделяла исходящие общедоступные IP-адреса и управляла ими за вас. -
Задаваемые клиентом IP-адреса: используйте
--nat-gateway-outbound-ipsи--nat-gateway-outbound-ip-prefixes, чтобы подключить собственные предварительно подготовленные общедоступные IP-адреса или префиксы, обеспечивая полный контроль над конкретными адресами, используемыми для исходящего трафика. Шлюз NAT StandardV2 требует использования новых общедоступных IP-адресов StandardV2. Существующие общедоступные IP-адреса SKU уровня "Стандартный" не работают с шлюзом NAT StandardV2.
-
IP-адреса, управляемые Azure: используйте
Установите расширение aks-preview Azure CLI
Тип managedNATGatewayV2 outbound в настоящее время доступен в предварительной версии. Чтобы использовать этот тип исходящего подключения, установите расширение aks-preview для Azure CLI и зарегистрируйте ManagedNATGatewayV2Preview флаг функции.
Установите или обновите расширение предварительной версии Azure CLI с помощью команды az extension add или az extension update. Минимальная версия расширения Azure CLI составляет aks-preview.
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Регистрация флага компонента ManagedNATGatewayV2Preview
Зарегистрируйте флаг функции
ManagedNATGatewayV2Previewс помощью командыaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"Проверьте успешную регистрацию, используя команду
az feature show. Для завершения регистрации потребуется несколько минут.az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"После того как функция отображает
Registered, обновите регистрацию поставщика ресурсовMicrosoft.ContainerServiceс помощью командыaz provider register.
Создание кластера AKS с управляемым шлюзом NAT StandardV2
Следующие команды создают необходимую группу ресурсов, общедоступный IP-адрес и ресурс префикса общедоступного IP-адреса для присоединения к шлюзу NAT и кластер AKS с управляемым шлюзом NAT уровня StandardV2.
Создайте группу ресурсов с помощью
az group createкоманды.# Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" export MY_AKS="myNatV2Cluster$RANDOM_SUFFIX" export MY_IP="myNatOutboundIP$RANDOM_SUFFIX" export MY_IP_PREFIX="myNatOutboundIPPrefix$RANDOM_SUFFIX" # Create the resource group az group create --name $MY_RG --location "eastus2"Создайте общедоступный IP-адрес IPv4 с избыточностью между зонами и префикс общедоступного IP с помощью команды
az network public-ip create. Сохраните$MY_IPи$MY_IP_PREFIX, чтобы использовать их в качестве исходящих IP-адресов для управляемого шлюза NAT StandardV2.# Create a zone redundant IPv4 public IP address and store the ID to $MY_IP_ID for later use export MY_IP_ID=$(az network public-ip create \ --resource-group $MY_RG \ --name $MY_IP \ --location eastus2 \ --sku StandardV2 \ --allocation-method Static \ --version IPv4 \ --zone 1 2 3 \ --query publicIp.id \ --output tsv) # Create a zone redundant IPv4 public IP prefix and store the ID to $MY_IP_PREFIX_ID for later use export MY_IP_PREFIX_ID=$(az network public-ip prefix create \ --resource-group $MY_RG \ --name $MY_IP_PREFIX \ --location eastus2 \ --length 31 \ --sku StandardV2 \ --version IPv4 \ --zone 1 2 3 \ --query id \ --output tsv)Создайте кластер AKS и укажите общедоступный IP-адрес (
$MY_IP_ID) и префикс общедоступного IP-адреса ($MY_IP_PREFIX_ID) с помощью командыaz aks createс параметрами--outbound-type managedNATGatewayV2,--nat-gateway-outbound-ipsи--nat-gateway-outbound-ip-prefixes.az aks create \ --resource-group $MY_RG \ --name $MY_AKS \ --node-count 3 \ --outbound-type managedNATGatewayV2 \ --nat-gateway-outbound-ips $MY_IP_ID \ --nat-gateway-outbound-ip-prefixes $MY_IP_PREFIX_ID \ --nat-gateway-idle-timeout 4 \ --generate-ssh-keys
Обновите исходящие IP-адреса, префиксы исходящих IP-адресов, число управляемых исходящих IP-адресов или время ожидания простоя, используя az aks update команду с параметрами --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count или --nat-gateway-idle-timeout. Невозможно изменить конфигурацию managedNATGatewayV2, чтобы переключаться между задаваемыми клиентом и управляемыми исходящими IP-адресами после создания. Конфигурация исходящего IP-адреса определяется при первоначальном создании шлюза NAT StandardV2 и остается неизменяемым.
Создание кластера AKS с управляемым шлюзом NAT уровня "Стандартный" (managedNATGateway)
- Создайте кластер AKS с управляемым шлюзом NAT уровня "Стандартный" с помощью
az aks createкоманды и--outbound-type managedNATGateway--nat-gateway-managed-outbound-ip-count--nat-gateway-idle-timeoutпараметров. Если требуется, чтобы шлюз NAT работал из определенной зоны доступности, укажите зону с помощью--zones. - Нельзя использовать управляемый ресурс шлюза NAT в нескольких зонах доступности. Для зонально-избыточного исходящего подключения рекомендуется использовать
managedNATgatewayV2. - Если вы не указываете зону при создании управляемого шлюза NAT, шлюз NAT развертывается без зоны по умолчанию. Если шлюз NAT находится в состоянии без зоны, Azure назначает ресурсу зону. Дополнительные сведения о незональной модели развертывания см. в незональном шлюзе NAT.
Создание кластера AKS с помощью userAssignedNatGateway
Для этой конфигурации требуется создание собственных сетей (через Azure CNI), а шлюз NAT предварительно настроен в подсети. Для этого outbound-typeподдерживаются шлюзы NAT standard и StandardV2. Следующие команды создают необходимые ресурсы для развертывания ресурса шлюза NAT StandardV2 для кластера AKS.
Создайте группу ресурсов с помощью
az group createкоманды.# Set environment variables for resource group, AKS cluster, public IP, and public IP prefix names export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" # Create the resource group az group create --name $MY_RG --location southcentralusСоздайте управляемое удостоверение для сетевых разрешений и сохраните идентификатор в
$IDENTITY_IDдля последующего использования.export IDENTITY_NAME="myNatClusterId$RANDOM_SUFFIX" export IDENTITY_ID=$(az identity create \ --resource-group $MY_RG \ --name $IDENTITY_NAME \ --location southcentralus \ --query id \ --output tsv)Пример выходных данных:
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxxСоздайте общедоступный IP-адрес StandardV2 для шлюза NAT с помощью
az network public-ip createкоманды. Для шлюза NAT StandardV2 требуется общедоступный IP-адрес StandardV2.export PIP_NAME="myNatGatewayPip$RANDOM_SUFFIX" az network public-ip create \ --resource-group $MY_RG \ --name $PIP_NAME \ --location southcentralus \ --allocation-method Static \ --version IPv4 \ --zone 1 2 3 \ --sku standard-v2Создайте шлюз NAT StandardV2 с помощью
az network nat gateway createкоманды.export NATGATEWAY_NAME="myNatGateway$RANDOM_SUFFIX" az network nat gateway create \ --resource-group $MY_RG \ --name $NATGATEWAY_NAME \ --location southcentralus \ --public-ip-addresses $PIP_NAME \ --sku StandardV2 --idle-timeout 4Внимание
Чтобы обеспечить избыточность зоны, разверните ресурс шлюза NAT StandardV2, охватывающий несколько зон доступности в регионе. Эта конфигурация обеспечивает непрерывное исходящее подключение даже в случае сбоя одной зоны. Дополнительные сведения о шлюзе NAT StandardV2 и его преимуществах см. в статье "Шлюз NAT StandardV2". Для сравнения ресурс шлюза NAT уровня «Стандартный» обеспечивает отказоустойчивость только в той зоне доступности, в которой он развернут.
Создайте виртуальную сеть с помощью
az network vnet createкоманды.export VNET_NAME="myVnet$RANDOM_SUFFIX" az network vnet create \ --resource-group $MY_RG \ --name $VNET_NAME \ --location southcentralus \ --address-prefixes 172.16.0.0/20Создайте подсеть в виртуальной сети с помощью шлюза NAT и сохраните идентификатор
$SUBNET_IDдля последующего использования.export SUBNET_NAME="myNatCluster$RANDOM_SUFFIX" export SUBNET_ID=$(az network vnet subnet create \ --resource-group $MY_RG \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --address-prefixes 172.16.0.0/22 \ --nat-gateway $NATGATEWAY_NAME \ --query id \ --output tsv)Создайте кластер AKS с помощью подсети с шлюзом NAT и управляемым удостоверением с помощью
az aks createкоманды.export AKS_NAME="myNatCluster$RANDOM_SUFFIX" az aks create \ --resource-group $MY_RG \ --name $AKS_NAME \ --location southcentralus \ --network-plugin azure \ --vnet-subnet-id $SUBNET_ID \ --outbound-type userAssignedNATGateway \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
Факторы, учитываемые при производстве
При использовании управляемого шлюза NAT в рабочей среде планируйте поведение исходящего трафика, доступ к серверу API и устойчивость рабочей нагрузки.
- Используйте AKS Automatic, если вам нужен рекомендуемый вариант по умолчанию, готовый к промышленной эксплуатации, для большинства рабочих нагрузок AKS.
- Используйте управляемый шлюз NAT в AKS Standard, если требуется управляемое AKS исходящее подключение без привлечения собственного шлюза NAT.
- Используйте частный кластер или интеграцию виртуальной сети сервера API, если требуется уменьшить объем трафика сервера API.
- Просмотрите требования к исходящему IP-адресу перед тем, как перейти в режим реального времени.
- Если рабочие нагрузки зависят от фиксированных исходящих адресов, убедитесь, что управляемый шлюз NAT соответствует этим требованиям перед развертыванием.
- Если вам нужно управлять NAT независимо от AKS, используйте шлюз NAT, назначенный пользователем.
Отключение исходящего NAT для Windows
Windows OutboundNAT может вызвать определенные проблемы с подключением и обменом данными с модулями pod AKS. Примером проблемы является повторное использование порта узла. В этом примере Windows OutboundNAT использует порты для преобразования IP-адреса pod в IP-адрес узла Windows, что может привести к нестабильному подключению к внешней службе из-за исчерпания портов.
Windows включает OutboundNAT по умолчанию. Теперь при создании новых пулов агентов Windows можно вручную отключать исходящий NAT.
Предварительные требования и ограничения
- Вам нужен существующий кластер AKS с версией 1.26 или более поздней версии. Если вы используете Kubernetes версии 1.25 или более поздней, обновите конфигурацию развертывания.
- Нельзя задать для кластера тип исходящего трафика "LoadBalancer". Вы можете настроить его как шлюз NAT или UDR:
- Шлюз NAT: шлюз NAT автоматически обрабатывает подключения NAT и более мощный, чем Load Balancer (цен. категория "Стандартный"). При использовании этого параметра с вас может взиматься дополнительная плата.
- UDR (UserDefinedRouting) — при настройке правил маршрутизации необходимо учитывать ограничения портов.
- Чтобы переключиться с подсистемы балансировки нагрузки на шлюз NAT, можно добавить шлюз NAT в виртуальную сеть или запустить
az aks upgrade, чтобы обновить исходящий тип.
Примечание.
UserDefinedRouting имеет следующие ограничения:
- SNAT через Load Balancer (необходимо использовать OutboundNAT по умолчанию) имеет 64 порта на IP-адресе хоста.
- SNAT по Брандмауэр Azure (отключить outboundNAT) имеет 2496 портов на общедоступный IP-адрес.
- SNAT через шлюз NAT (с отключённым OutboundNAT) имеет 64 512 портов на каждый общедоступный IP-адрес.
- Если для приложения недостаточно диапазона портов Брандмауэр Azure, необходимо использовать шлюз NAT.
- Брандмауэр Azure не использует SNAT с правилами сети, если IP-адрес назначения находится в диапазоне частных IP-адресов согласно RFC 1918 или общего адресного пространства согласно IANA RFC 6598.
Ручное отключение Outbound NAT для Windows
Вручную отключите Outbound NAT для Windows при создании новых пулов агентов Windows, используя команду
az aks nodepool addс флагом--disable-windows-outbound-nat.Примечание.
Вы можете использовать существующий кластер AKS, но может потребоваться обновить исходящий тип и добавить пул узлов для включения
--disable-windows-outbound-nat.export WIN_NODEPOOL_NAME="win$(head -c 1 /dev/urandom | xxd -p)" az aks nodepool add \ --resource-group $MY_RG \ --cluster-name $MY_AKS \ --name $WIN_NODEPOOL_NAME \ --node-count 3 \ --os-type Windows \ --disable-windows-outbound-natПример выходных данных:
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myNatClusterxxx/agentPools/mynpxxx", "name": "mynpxxx", "osType": "Windows", "provisioningState": "Succeeded", "resourceGroup": "myResourceGroupxxx", "type": "Microsoft.ContainerService/managedClusters/agentPools" }
Связанные материалы
Дополнительные сведения о Azure NAT Gateway и AKS Automatic см. в следующих статьях: