Créer une passerelle NAT managée ou affectée par l’utilisateur pour votre cluster AKS (Azure Kubernetes Service)
Même si vous pouvez acheminer le trafic de sortie via Azure Load Balancer, il existe des limites quant au nombre de flux de trafic sortants que vous pouvez avoir. La passerelle Azure NAT Gateway autorise jusqu’à 64 512 flux de trafic UDP et TCP sortants par adresse IP, avec un maximum de 16 adresses IP.
Cet article explique comment créer un cluster Azure Kubernetes Service (AKS) avec une passerelle NAT Gateway managée et une passerelle NAT Gateway attribuée par l’utilisateur pour le trafic de sortie. Il vous montre également comment désactiver OutboundNAT sur Windows.
Avant de commencer
- Assurez-vous que vous disposez de la version la plus récente d’Azure CLI.
- Vérifiez que vous utilisez Kubernetes version 1.20.x ou ultérieure.
- La passerelle NAT managée n’est pas compatible avec les réseaux virtuels personnalisés.
Important
Dans les clusters non privés, le trafic du cluster du serveur d’API est routé et traité via le type de sortie des clusters. Pour éviter que le trafic du serveur d’API ne soit traité comme du trafic public, envisagez d’utiliser un cluster privé, ou consultez la fonctionnalité Intégration au réseau virtuel du serveur d’API.
Créer un cluster AKS avec une passerelle NAT Gateway managée
Créez un cluster AKS avec une nouvelle passerelle NAT managée à l’aide de la
az aks create
commande avec les--outbound-type managedNATGateway
paramètres ,--nat-gateway-managed-outbound-ip-count
et--nat-gateway-idle-timeout
. Si vous souhaitez que la passerelle NAT fonctionne à partir d’une zone de disponibilité spécifique, spécifiez la zone à l’aide de l’option--zones
.Si aucune zone n’est spécifiée lors de la création d’une passerelle NAT managée, la passerelle NAT est déployée sur « aucune zone » par défaut. Lorsque la passerelle NAT est placée dans aucune zone, Azure place la ressource dans une zone pour vous. Pour plus d’informations sur le modèle de déploiement non zonal, consultez passerelle NAT non zonale.
Une ressource de passerelle NAT ne peut pas être utilisée sur plusieurs zones de disponibilité.
az aks create \ --resource-group myResourceGroup \ --name myNatCluster \ --node-count 3 \ --outbound-type managedNATGateway \ --nat-gateway-managed-outbound-ip-count 2 \ --nat-gateway-idle-timeout 4 \ --generate-ssh-keys
Mettez à jour l’adresse IP sortante ou le délai d’inactivité à l’aide de la
az aks update
commande avec le--nat-gateway-managed-outbound-ip-count
paramètre ou--nat-gateway-idle-timeout
.az aks update \ --resource-group myResourceGroup \ --name myNatCluster\ --nat-gateway-managed-outbound-ip-count 5
Créer un cluster AKS avec une passerelle NAT Gateway attribuée par l’utilisateur
Cette configuration nécessite une mise en réseau personnalisée (par le biais de Kubenet ou d’Azure CNI) et que la passerelle NAT soit préconfigurée sur le sous-réseau. Les commandes suivantes créent les ressources requises pour ce scénario.
Créez un groupe de ressources avec la commande
az group create
.az group create --name myResourceGroup \ --location southcentralus
Créez une identité managée pour les autorisations réseau et stockez l’ID dans
$IDENTITY_ID
pour une utilisation ultérieure.IDENTITY_ID=$(az identity create \ --resource-group myResourceGroup \ --name myNatClusterId \ --location southcentralus \ --query id \ --output tsv)
Créez une adresse IP publique pour la passerelle NAT en utilisant la commande
az network public-ip create
.az network public-ip create \ --resource-group myResourceGroup \ --name myNatGatewayPip \ --location southcentralus \ --sku standard
Créez la passerelle NAT à l’aide de la
az network nat gateway create
commande .az network nat gateway create \ --resource-group myResourceGroup \ --name myNatGateway \ --location southcentralus \ --public-ip-addresses myNatGatewayPip
Important
Une ressource de passerelle NAT unique ne peut pas être utilisée sur plusieurs zones de disponibilité. Pour garantir la résilience des zones, il est recommandé de déployer une ressource de passerelle NAT dans chaque zone de disponibilité et de l’affecter à des sous-réseaux contenant des clusters AKS dans chaque zone. Pour plus d'informations sur ce modèle de déploiement, voir Passerelle NAT pour chaque zone. Si aucune zone n’est configurée pour la passerelle NAT, l’emplacement de zone par défaut est « aucune zone », dans lequel Azure place la passerelle NAT dans une zone pour vous.
Créer un réseau virtuel en utilisant la commande
az network vnet create
.az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --location southcentralus \ --address-prefixes 172.16.0.0/20
Créez un sous-réseau dans le réseau virtuel à l’aide de la passerelle NAT et stockez l’ID dans
$SUBNET_ID
pour une utilisation ultérieure.SUBNET_ID=$(az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myNatCluster \ --address-prefixes 172.16.0.0/22 \ --nat-gateway myNatGateway \ --query id \ --output tsv)
Créez un cluster AKS à l’aide du sous-réseau avec la passerelle NAT et l’identité managée avec la commande
az aks create
.az aks create \ --resource-group myResourceGroup \ --name myNatCluster \ --location southcentralus \ --network-plugin azure \ --vnet-subnet-id $SUBNET_ID \ --outbound-type userAssignedNATGateway \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
Désactiver OutboundNAT pour Windows
Windows OutboundNAT peut provoquer certains problèmes de connexion et de communication avec vos pods AKS. Un exemple de problème est la réutilisation du port de nœud. Dans cet exemple, Windows OutboundNAT utilise les ports pour traduire votre adresse IP de pod en adresse IP hôte de votre nœud Windows, ce qui peut entraîner une connexion instable au service externe en raison d’un problème d’épuisement des ports.
Windows active OutboundNAT par défaut. Vous pouvez maintenant désactiver manuellement OutboundNAT lors de la création de pools d’agents Windows.
Prérequis
- Cluster AKS existant avec v1.26 ou version ultérieure. Si vous utilisez Kubernetes version 1.25 ou antérieure, vous devez mettre à jour votre configuration de déploiement.
Limites
- Vous ne pouvez pas définir le type de sortie du cluster sur LoadBalancer. Vous pouvez le définir sur NAT Gateway ou UDR :
- NAT Gateway : l’option NAT Gateway peut gérer automatiquement la connexion NAT et est plus puissante que Standard Load Balancer. Cette option risque d’entraîner des frais supplémentaires.
- UDR (UserDefinedRouting) : vous devez garder à l’esprit les limitations de port lors de la configuration des règles d’acheminement.
- Si vous devez passer d’un équilibreur de charge à NAT Gateway, vous pouvez ajouter une passerelle NAT au réseau virtuel ou exécuter
az aks upgrade
pour mettre à jour le type de sortie.
Remarque
UserDefinedRouting présente les limites suivantes :
- SNAT par Load Balancer (doit utiliser l’option OutboundNAT par défaut) a « 64 ports sur l’adresse IP hôte ».
- SNAT par Pare-feu Azure (désactivez OutboundNAT) a 2 496 ports par adresse IP publique.
- SNAT par NAT Gateway (désactivez OutboundNAT) a 64 512 ports par adresse IP publique.
- Si la plage de ports du Pare-feu Azure n’est pas suffisante pour votre application, vous devez utiliser NAT Gateway.
- Le Pare-feu Azure ne traduit pas l’adresse réseau source avec des règles de réseau lorsque l’adresse IP de destination se trouve dans une plage d’adresses IP privées conformément à la norme IANA RFC 1918 ou dans un espace d’adressage partagé conformément à la norme IANA RFC 6598.
Désactiver manuellement OutboundNAT pour Windows
Désactiver manuellement OutboundNAT pour Windows lors de la création de pools d’agents Windows à l’aide de la commande
az aks nodepool add
avec l’indicateur--disable-windows-outbound-nat
.Remarque
Vous pouvez utiliser un cluster AKS existant, mais vous devrez peut-être mettre à jour le type de sortie et ajouter un pool de nœuds pour activer
--disable-windows-outbound-nat
.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myNatCluster \ --name mynp \ --node-count 3 \ --os-type Windows \ --disable-windows-outbound-nat
Étapes suivantes
Pour plus d’informations sur la passerelle NAT Gateway, consultez la documentation relative à Azure NAT Gateway.
Azure Kubernetes Service