Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Embora possa encaminhar o tráfego de saída através de um Balanceador de Carga do Azure, existem limitações quanto ao número de fluxos de tráfego de saída que pode ter. O Azure NAT Gateway permite até 64.512 fluxos de tráfego UDP e TCP de saída por endereço IP, com um máximo de 16 endereços IP. Existem três tipos de saída que suportam NAT gateway - managedNATGatewayV2 (Pré-visualização), managedNATGateway, e userAssignedNATGateway.
Num modelo de gateway NAT gerido, o AKS gere o gateway NAT para fornecer conectividade de saída aos nós do seu cluster. O AKS suporta duas opções de gateway NAT gerido: a mais recente, managedNATGatewayV2, e a original managedNATGateway.
managedNATgatewayV2 utiliza o gateway NAT StandardV2, que é redundante por zona por predefinição, proporcionando conectividade de saída contínua mesmo que uma zona de disponibilidade fique indisponível. Ao contrário do gateway NAT Standard, não é necessário especificar uma zona - a redundância de zona está integrada automaticamente. O gateway NAT StandardV2 também suporta IPv6, maior largura de banda e logs de fluxo. Para mais detalhes, veja StandardV2 NAT gateway SKU.
Importante
O managedNATGatewayV2 tipo de saída está atualmente em pré-visualização.
Consulte os Termos Suplementares de Utilização para Microsoft Azure Prévias para termos legais que se aplicam a funcionalidades Azure que estão em beta, pré-visualização ou ainda não lançadas em disponibilidade geral.
userAssignedNATGateway é um recurso de gateway NAT gerido pelo cliente que se configura independentemente do AKS e é necessário ao usar a sua própria rede virtual.
Este artigo mostra-lhe como criar um cluster de Azure Kubernetes Service (AKS) com um gateway NAT gerido e um gateway NAT atribuído pelo utilizador para tráfego de saída. Também mostra como desativar o OutboundNAT no Windows.
Antes de começar
- Certifica-te de que estás a usar a versão mais recente do CLI do Azure.
- Verifique se você está usando o Kubernetes versão 1.20.x ou superior.
- O gateway NAT gerenciado é incompatível com redes virtuais personalizadas.
Importante
Em clusters não privados, o tráfego do servidor de API do cluster é roteado e processado através do tipo de saída do cluster. Para evitar que o tráfego do servidor de API seja processado como tráfego público, considere o uso de um cluster privado ou confira o recurso de integração de rede virtual do servidor de API.
Criar um cluster AKS com um managedNATgatewayV2
- Crie um cluster AKS com um gateway NAT StandardV2 gerido usando os parâmetros
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-counte--nat-gateway-idle-timeoutno comando. - Ao configurar IPs de saída para um
managedNATgatewayV2, deve usar uma das seguintes abordagens — não pode usar IPs de saída geridos por Azure e definidos pelo cliente:- IPs geridos pela Azure — Use
--nat-gateway-managed-ip-outbound-counte/ou--nat-gateway-managed-outbound-ipv6-countpara que a Azure aloque e gere automaticamente os IPs públicos de saída em seu nome. -
IPs definidos pelo cliente — Use
--nat-gateway-outbound-ipse/ou--nat-gateway-outbound-ip-prefixespara trazer os seus próprios endereços IP públicos pré-provisionados ou prefixos, dando-lhe controlo total sobre os endereços específicos usados para o tráfego de saída. O Gateway NAT StandardV2 requer a utilização de novos endereços IP públicos StandardV2. IPs públicos de SKU Standard já existentes não são compatíveis com o Gateway NAT StandardV2.
- IPs geridos pela Azure — Use
A tabela seguinte descreve cada parâmetro de IP de saída e quando utilizá-lo:
| Parâmetro | Entrada | Versão do IP | Quem gere as IPs públicas |
|---|---|---|---|
--nat-gateway-managed-outbound-ip-count |
Valor dentro do intervalo de [1, 16]. Número desejado de IPv4s de saída para a ligação de saída do gateway NAT. | IPv4 | Azure |
--nat-gateway-managed-outbound-ipv6-count |
Valor dentro do intervalo de [1, 16]. Número desejado de IPv6s para a conexão de saída do gateway NAT. | IPv6 | Azure |
--nat-gateway-outbound-ips |
IDs de recursos de IP público separados por vírgulas para a ligação de saída do NAT gateway. | IPv4 ou IPv6 | Cliente |
--nat-gateway-outbound-ip-prefixes |
IDs de recurso de prefixo de IP público, separados por vírgulas, para ligação de saída do gateway NAT. | IPv4 ou IPv6 | Cliente |
managedNATGatewayV2 O tipo de outbound está atualmente em pré-visualização. Para utilizar este tipo de outbound, são necessários os seguintes passos para instalar a extensão do CLI do Azure aks-preview e registar o sinalizador de funcionalidade ManagedNATGatewayV2Preview.
Importante
Os recursos de pré-visualização do AKS estão disponíveis numa base de autosserviço e adesão voluntária. As visualizações prévias são fornecidas "como estão" e "conforme disponíveis" e são excluídas dos contratos de nível de serviço e da garantia limitada. As versões de teste do AKS são parcialmente cobertas pelo suporte ao cliente numa base de melhor esforço. Assim sendo, estas funcionalidades não se destinam ao uso em produção. Para obter mais informações, consulte os seguintes artigos de suporte:
Instale ou atualize a extensão CLI do Azure preview usando o comando
az extension addouaz extension update.A versão mínima da extensão de CLI do Azure AKS-preview é
20.0.0b1.# 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-previewRegistar o sinalizador de funcionalidade
ManagedNATGatewayV2PreviewRegiste o sinalizador de funcionalidade
ManagedNATGatewayV2Previewcom o comandoaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"Verifique o registro bem-sucedido usando o
az feature showcomando. O registo demora alguns minutos a ser concluído.az feature show --namespace "Microsoft.ContainerService" --name "ManagedNATGatewayV2Preview"Quando a funcionalidade mostrar
Registered, atualize o registo do fornecedor de recursosMicrosoft.ContainerServiceusando o comandoaz provider register.Os seguintes comandos criam o grupo de recursos necessário, o IP público e os recursos de prefixo IP público para serem ligados ao gateway NAT, e o cluster AKS com um gateway NAT StandardV2 gerido.
Crie um grupo de recursos usando o
az group createcomando.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" az group create --name $MY_RG --location "eastus2"Crie um endereço IPv4 público redundante à zona e um prefixo de IP público, usando o comando
az network public-ip create. Armazenar$MY_IPe$MY_IP_PREFIXpara usar como IPs de saída para o gateway NAT gerido StandardV2.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 id \ --output tsv) 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)Crie o cluster AKS e faça referência ao endereço IP público (
$MY_IP_ID) e ao prefixo IP público ($MY_IP_PREFIX_ID).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
Atualize os IPs de saída, prefixos de IPs de saída, contagem de IPs de saída geridos ou o timeout de inatividade, usando o comando az aks update com o parâmetro --nat-gateway-outbound-ips, --nat-gateway-outbound-ip-prefixes, --nat-gateway-managed-outbound-count, --nat-gateway-managed-outbound-ipv6-count ou --nat-gateway-idle-timeout. A managedNATGatewayV2 não pode ser atualizado para alternar entre endereços IP de saída definidos pelo cliente e geridos após a criação. A configuração do IP de saída é determinada quando o Gateway NAT StandardV2 é criado inicialmente e permanece imutável.
Criar um cluster AKS com um managedNATgateway
Crie um cluster AKS com um gateway NAT de categoria Standard gerido usando o comando
az aks createcom--outbound-type managedNATGateway.--nat-gateway-managed-outbound-ip-count, e--nat-gateway-idle-timeoutparâmetros. Se quiser que o gateway NAT opere fora de uma zona de disponibilidade específica, especifique a zona usando--zones.Um recurso de gateway NAT gerenciado não pode ser usado em várias zonas de disponibilidade. Para conectividade de saída redundante por zona, considere usar
managedNATgatewayV2.Se nenhuma zona for especificada ao criar um gateway NAT gerenciado, o gateway NAT será implantado em "nenhuma zona" por padrão. Quando o gateway NAT é colocado em sem zona, Azure coloca o recurso numa zona para ti. Para obter mais informações sobre o modelo de implantação não zonal, consulte o NAT gateway não zonal.
Criar um cluster AKS com um userAssignedNatGateway
Esta configuração requer rede própria (via Azure CNI) e que um gateway NAT esteja preconfigurado na sub-rede. Tanto gateways NAT Standard como StandardV2 são suportados para isto outbound-type. Os comandos seguintes criam os recursos necessários para implementar um recurso de gateway NAT StandardV2 para o seu cluster AKS.
Crie um grupo de recursos usando o
az group createcomando.export RANDOM_SUFFIX=$(openssl rand -hex 3) export MY_RG="myResourceGroup$RANDOM_SUFFIX" az group create --name $MY_RG --location southcentralusCrie uma identidade gerida para permissões de rede e armazene-a em
$IDENTITY_IDpara uso posterior.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)Resultados:
/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myNatClusterIdxxxCrie um IP público StandardV2 para o gateway NAT usando o
az network public-ip createcomando. Um gateway NAT StandardV2 requer um endereço IP público 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-v2Crie o gateway NAT StandardV2 usando o
az network nat gateway createcomando.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 4Importante
Para garantir redundância de zonas, recomenda-se implementar um recurso de gateway NAT StandardV2, que se estende por várias zonas de disponibilidade numa região. Isto garante a continuação da conectividade de saída mesmo que uma única zona falhe. Para mais detalhes sobre o gateway NAT StandardV2 e os seus benefícios, consulte Gateway NAT StandardV2. Em comparação, um recurso de gateway NAT Standard oferece resiliência apenas dentro da zona de disponibilidade onde está implantado.
Crie uma rede virtual usando o
az network vnet createcomando.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/20Crie uma sub-rede na rede virtual usando o gateway NAT e armazene a ID para
$SUBNET_IDuso posterior.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)Crie um cluster AKS usando a sub-rede com o gateway NAT e a identidade gerenciada usando o
az aks createcomando.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
Desativar OutboundNAT para Windows
O Windows OutboundNAT pode causar certos problemas de ligação e comunicação com os teus pods AKS. Um exemplo de problema é a reutilização da porta do nó. Neste exemplo, o Windows OutboundNAT usa portas para traduzir o IP do seu pod para o IP anfitrião do nó Windows, o que pode causar uma ligação instável ao serviço externo devido a um problema de esgotamento de portas.
O Windows ativa o OutboundNAT por defeito. Agora pode desativar manualmente o OutboundNAT ao criar novos pools de agentes Windows.
Pré-requisitos
- Cluster AKS existente com v1.26 ou superior. Se você estiver usando o Kubernetes versão 1.25 ou anterior, precisará atualizar sua configuração de implantação.
Limitações
- Não é possível definir o tipo de saída do cluster para a opção LoadBalancer. Você pode defini-lo como Gateway NAT ou UDR:
- NAT Gateway: O NAT Gateway pode gerir automaticamente a ligação NAT e é mais potente do que Balanceador de Carga Standard. Poderá incorrer em custos adicionais com esta opção.
- UDR (UserDefinedRouting): Você deve ter em mente as limitações de porta ao configurar regras de roteamento.
- Se você precisar alternar de um balanceador de carga para o gateway NAT, poderá adicionar um gateway NAT à rede virtual ou executar
az aks upgradepara atualizar o tipo de saída.
Nota
UserDefinedRouting tem as seguintes limitações:
- O SNAT do Balanceador de Carga (deve usar o Outbound NAT predefinido) tem "64 portas no IP do anfitrião".
- O SNAT do Azure Firewall (desativar o OutboundNAT) tem 2496 portas por IP público.
- SNAT by NAT Gateway (disable OutboundNAT) tem 64512 portas por IP público.
- Se o intervalo de portas do Azure Firewall não for suficiente para a sua aplicação, precisa de usar o NAT Gateway.
- Azure Firewall não faz SNAT com as regras de rede quando o endereço IP de destino está num intervalo de endereços IP privados conforme IANA RFC 1918 ou espaço de endereçamento partilhado conforme IANA RFC 6598.
Desativar manualmente o OutboundNAT para Windows
Desative manualmente o OutboundNAT para Windows ao criar novos pools de agentes Windows usando o comando
az aks nodepool addcom a flag--disable-windows-outbound-nat.Nota
Você pode usar um cluster AKS existente, mas talvez seja necessário atualizar o tipo de saída de conexão e adicionar um pool de nós para habilitar
--disable-windows-outbound-nat.O comando seguinte adiciona um pool de nós Windows a um cluster AKS existente, desativando o OutboundNAT.
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-natResultados:
{ "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" }
Próximos passos
Para mais informações sobre Azure NAT Gateway, consulte Azure NAT Gateway.