Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Les nœuds AKS n’ont pas besoin de leurs propres adresses IP publiques pour communiquer. Toutefois, certains scénarios peuvent exiger que les nœuds d'un pool de nœuds reçoivent leurs propres adresses IP publiques dédiées. C’est par exemple le cas pour les charges de travail de gaming, où une console doit être directement connectée à une machine virtuelle du cloud afin de réduire les tronçons. Ce scénario peut être exécuté sur AKS à l’aide de l’adresse IP publique des nœuds.
Dans un premier temps, créez un nouveau groupe de ressources.
az group create --name <resourceGroup> --location <region>
Créez un cluster AKS et attachez une adresse IP publique pour vos nœuds. Chacun des nœuds du pool reçoit une adresse IP publique unique. Pour le vérifier, il suffit de regarder les instances du Virtual Machine Scale Set.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--generate-ssh-keys
Pour les clusters AKS existants, vous pouvez également ajouter un nouveau pool de nœuds et attacher une adresse IP publique pour vos nœuds.
az aks nodepool add --resource-group <resourceGroup> --cluster-name <aksClusterName> --name <newNodePool> --enable-node-public-ip
Utiliser un préfixe d’adresse IP publique
Il existe un certain nombre d’avantages liés à l’utilisation d’un préfixe d’adresse IP publique. AKS prend en charge l’utilisation d’adresses à partir d’un préfixe d’adresse IP publique existant pour vos nœuds en passant l’ID de ressource avec l’indicateur --node-public-ip-prefix-id lors de la création d’un cluster ou de l’ajout d’un pool de nœuds.
Commencez par créer un préfixe d’adresse IP publique à l’aide de la commande az network public-ip prefix create :
az network public-ip prefix create --length 28 --location <region> --name <publicIPPrefixName> --resource-group <resourceGroup>
Affichez la sortie et notez l’id pour le préfixe :
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName>",
...
}
Enfin, lors de la création d’un cluster ou de l’ajout d’un pool de nœuds, utilisez l’indicateur --node-public-ip-prefix-id et transmettez l’ID de ressource du préfixe :
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--node-public-ip-prefix-id /subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName> \
--generate-ssh-keys
Utiliser un préfixe d’adresse IP publique double pile (préversion)
Vous pouvez affecter des adresses IP publiques IPv4 et IPv6 à chaque nœud d’un pool de nœuds à l’aide de préfixes d’adresses IP publiques sur un cluster à double pile. Cette fonctionnalité est utile pour les charges de travail qui nécessitent une connectivité entrante ou sortante directe sur IPv4 et IPv6, ou pour les applications qui fonctionnent dans des environnements qui nécessitent une conformité IPv6.
Il existe deux configurations prises en charge :
- Apportez vos propres préfixes IPv4 et IPv6. Chaque nœud reçoit une adresse IPv4 de votre préfixe IPv4 et une adresse IPv6 de votre préfixe IPv6. Utilisez cette configuration lorsque les deux adresses doivent provenir de plages d’adresses que vous contrôlez, par exemple lorsqu’un pare-feu ou un service partenaire autorise le trafic uniquement à partir de vos préfixes.
- Apportez uniquement votre propre préfixe IPv6. Chaque nœud reçoit une adresse IPv6 à partir de votre préfixe IPv6 et Azure affecte automatiquement l’adresse IPv4. Utilisez cette configuration lorsque seule l’adresse IPv6 doit provenir d’une plage que vous contrôlez. Étant donné que le pool de nœuds ne consomme pas d’adresses à partir d’un préfixe IPv4, la taille d’un préfixe IPv4 ne limite pas le nombre de nœuds vers lesquels le pool de nœuds peut être mis à l’échelle.
Important
Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Les préversions AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Telles quelles, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :
Spécifications
Pour utiliser des préfixes d’adresses IP publiques à double pile avec des adresses IP publiques de nœud, vérifiez que les conditions préalables suivantes sont remplies :
- Votre cluster est configuré en tant que cluster double pile avec les familles IP IPv4 et IPv6. Un cluster à double pile IPv4/IPv6 est requis pour les deux configurations, y compris la configuration de préfixe IPv6 uniquement.
- Votre cluster utilise Azure CNI avec un réseau superposé.
- Vous avez créé les préfixes d’adresse IP publique que vous envisagez d’utiliser dans le même abonnement et la même région que votre cluster AKS. Selon la configuration que vous choisissez, vous avez besoin d’un préfixe IPv4 et d’un préfixe IPv6 ou d’un seul préfixe IPv6.
- Chaque préfixe d’adresse IP publique utilise la référence SKU Standard et n’est pas attaché à un équilibreur de charge.
- L’identité du cluster AKS est autorisée à gérer les préfixes d’adresse IP publique. Si les préfixes se trouvent dans un autre groupe de ressources, attribuez le rôle Contributeur réseau sur ce groupe de ressources à l’identité du cluster.
Inscrire les fonctionnalités en préversion
La prise en charge des préfixes IP publics (IPv4 et IPv6) à double pile pour les adresses IP publiques de nœud est actuellement disponible en préversion. Avant de pouvoir utiliser cette fonctionnalité, vous devez installer ou mettre à jour l’extension Azure CLI et inscrire les NodePublicIPv6PrefixPreview indicateurs de fonctionnalité dans votre abonnement.
Installez ou mettez à jour l’extension aks-preview :
az extension add --name aks-preview --upgrade
Inscrivez les fonctionnalités d’évaluation requises :
az feature register --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview
L’enregistrement des fonctionnalités peut prendre plusieurs minutes. Pour vérifier l’état de l’inscription, exécutez :
az feature show --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview --query "properties.state"
Attendez que la fonctionnalité indique l'état Inscrit avant de continuer.
Une fois les indicateurs de fonctionnalité inscrits, actualisez le fournisseur de ressources pour vous assurer que les modifications sont appliquées :
az provider register --namespace Microsoft.ContainerService
Une fois l’inscription terminée, vous pouvez créer ou mettre à jour un cluster pour utiliser des préfixes d’adresses IP publiques à double pile pour les adresses IP publiques de nœud.
Créer des préfixes d’adresse IP publique
Créez un préfixe d’adresse IP publique pour IPv4 et IPv6 à l’aide de la Azure CLI. Si vous envisagez d’utiliser la configuration de préfixe IPv6 uniquement, créez uniquement le préfixe IPv6.
Pour IPv4 :
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv4PrefixName> \
--location <region> \
--length 28 \
--sku Standard \
--version IPv4
Pour IPv6 :
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv6PrefixName> \
--location <region> \
--length 124 \
--sku Standard \
--version IPv6
Après avoir créé les préfixes, notez l’ID de ressource de chaque préfixe.
Créer un cluster avec des préfixes d’adresses IP publiques à double pile
Lors de la création d’un cluster AKS, utilisez le --node-public-ip-prefix-ids paramètre pour spécifier les préfixes IP publics IPv4 et IPv6.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--ip-families IPv4,IPv6 \
--network-plugin azure \
--network-plugin-mode overlay \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>" \
--generate-ssh-keys
Le --node-public-ip-prefix-ids paramètre accepte une liste séparée par des virgules d’ID de ressource de préfixe IP publique. La liste peut contenir au plus un préfixe IPv4 et un préfixe IPv6. L’ordre n’a pas d’importance, car AKS détermine la version IP de chaque préfixe référencé.
Ajouter un pool de nœuds avec des préfixes d’adresses IP publiques à double pile
Vous pouvez également ajouter à un cluster double pile existant un pool de nœuds doté de préfixes d’adresses IP publiques de nœud en double pile.
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>"
Utiliser un préfixe IP public en IPv6 uniquement
Si vous avez uniquement besoin que l’adresse IPv6 provienne d’un préfixe que vous contrôlez, spécifiez un préfixe IPv6 unique. Chaque nœud reçoit une adresse IPv6 à partir de votre préfixe et Azure attribue automatiquement l’adresse IPv4. Le pool de nœuds nécessite toujours un cluster à double pile réseau.
Utilisez cette configuration lorsque la taille d’un préfixe IPv4 limiterait autrement jusqu’où le pool de nœuds peut être mis à l’échelle. Étant donné que le pool de nœuds ne puise pas d’adresses IPv4 dans un préfixe, seule la capacité du préfixe IPv6 limite le nombre de nœuds.
Créez un nouveau cluster avec un préfixe d’adresse IP publique de nœud IPv6 uniquement :
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--ip-families IPv4,IPv6 \
--network-plugin azure \
--network-plugin-mode overlay \
--node-public-ip-prefix-ids "<ipv6PrefixResourceId>" \
--generate-ssh-keys
Ajoutez un pool de nœuds avec un préfixe d’adresse IP publique de nœud IPv6 uniquement à un cluster double pile existant :
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv6PrefixResourceId>"
Étant donné qu’Azure attribue automatiquement l’adresse IPv4, l’adresse IPv4 de chaque nœud n’est pas prévisible et vous ne pouvez pas l’ajouter à une liste d’autorisation à l’avance. Par conséquent, vous ne pouvez pas utiliser un préfixe d’adresse IP publique IPv6 uniquement sur un cluster qui utilise des plages d’adresses IP autorisées du serveur d’API. Utilisez API Server VNet Integration ou un cluster privé à la place, ou incluez un préfixe IPv4 dans la liste.
Vérifier la configuration du préfixe d’adresse IP publique du nœud
Vérifiez les préfixes qu’un pool de nœuds utilise avec la commande az aks nodepool show :
az aks nodepool show \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--query "networkProfile.nodePublicIPPrefixIDs"
Répertoriez les adresses IP publiques reçues par les nœuds avec la commande az vmss list-instance-public-ips . Utilisez le groupe de ressources de nœud :
az vmss list-instance-public-ips \
--resource-group <MC_resourceGroup_aksClusterName_region> \
--name <virtualMachineScaleSetName> \
--query "[].{name:name, ipAddress:ipAddress, version:publicIPAddressVersion}" \
--output table
Pour un préfixe IPv6 uniquement, chaque nœud a une adresse IPv6 à partir de votre préfixe et une adresse IPv4 à partir du pool d’adresses géré par Azure.
Limitations
Les limitations suivantes s’appliquent aux préfixes d’adresses IP publiques pour les adresses IP publiques de nœud.
Liste de préfixes :
- La liste de préfixes peut contenir au plus un préfixe IPv4 et un préfixe IPv6. Deux préfixes de la même version IP sont rejetés.
- Vous devez activer les adresses IP publiques de nœud sur le pool de nœuds lorsque vous spécifiez des préfixes.
- Vous ne pouvez pas utiliser les paramètres
--node-public-ip-prefix-idet--node-public-ip-prefix-idsdans la même commande. - La configuration d’adresses IP publiques du nœud est immuable. Pour modifier les préfixes d’adresses IP publiques, vous devez créer un pool de nœuds et migrer des charges de travail.
Ressources de préfixe :
- Chaque préfixe doit utiliser la référence SKU Standard. Les préfixes de base et standard V2 ne sont pas pris en charge.
- Chaque préfixe doit se trouver dans le même abonnement et la même région que votre cluster AKS.
- Vous ne pouvez pas utiliser un préfixe déjà attaché à un équilibreur de charge.
- Si votre pool de nœuds utilise des zones de disponibilité, les zones de chaque préfixe doivent couvrir les zones du pool de nœuds. Un préfixe redondant interzone, qui n’a aucune zone affectée, fonctionne avec n’importe quel pool de nœuds.
Capacité et mise à l'échelle :
- Chaque préfixe doit avoir suffisamment d’adresses pour le nombre de nœuds du pool de nœuds, car chaque nœud consomme une adresse de chaque préfixe que vous fournissez.
- La mise à l’échelle automatique du cluster est prise en charge, mais vérifiez que le nombre maximal de nœuds configuré ne dépasse pas le nombre d’adresses IP disponibles dans chaque préfixe que vous fournissez. Si vous utilisez un préfixe IPv6 uniquement, seul le préfixe IPv6 limite le nombre de nœuds, car Azure attribue automatiquement les adresses IPv4.
Compatibilité des fonctionnalités :
- Vous ne pouvez pas utiliser un préfixe d'adresse IP publique IPv6 uniquement sur un cluster qui utilise des plages d'adresses IP autorisées par le serveur d'API, car Azure affecte automatiquement l'adresse IPv4 du nœud et vous ne pouvez pas l'ajouter à une liste d’autorisation à l'avance. Utilisez l’intégration au réseau virtuel du serveur d’API ou un cluster privé à la place, ou incluez un préfixe IPv4 dans la liste.
- Chaque nœud reçoit une adresse IP publique IPv6 unique.
- Cette fonctionnalité n’est pas prise en charge avec AKS Automatic ou l’approvisionnement automatique des nœuds.
- Les pools de nœuds multi-cartes réseau ne sont pas pris en charge.
Localiser des adresses IP publiques pour des nœuds
Vous pouvez localiser les adresses IP publiques de vos nœuds de différentes manières :
- Utilisez la commande Azure CLI
az vmss list-instance-public-ips. - Utilisez les commandes PowerShell ou Bash.
- Vous pouvez également voir les adresses IP publiques dans le portail Azure en affichant les instances du Virtual Machine Scale Set.
Important
Le groupe de ressources du nœud contient les nœuds et leurs adresses IP publiques. Utilisez le groupe de ressources du nœud lorsque vous exécutez des commandes pour rechercher les adresses IP publiques de vos nœuds.
az vmss list-instance-public-ips --resource-group <MC_region_aksClusterName_region> --name <virtualMachineScaleSetName>
Utiliser des balises d'adresse IP publique sur les adresses IP publiques de nœud
Les balises IP publiques peuvent être utilisées sur des adresses IP publiques de nœud pour utiliser la fonctionnalité Préférence de routage Azure , qui est disponible dans les régions spécifiées.
Spécifications
- AKS version 1.29 ou ultérieure est obligatoire.
Créer un cluster à l’aide de la préférence de routage Internet
az aks create \
--name <aksClusterName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Ajouter un pool de nœuds avec préférence de routage Internet
az aks nodepool add --cluster-name <aksClusterName> \
--name <nodePoolName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Autoriser les connexions de port hôte et ajouter des pools de nœuds aux groupes de sécurité d’application
Les nœuds AKS utilisant des adresses IP publiques de nœud qui hébergent des services sur leur adresse hôte doivent avoir une règle de groupe de sécurité réseau ajoutée pour autoriser le trafic. L’ajout des ports souhaités dans la configuration du pool de nœuds crée les règles d’autorisation appropriées dans le groupe de sécurité réseau du cluster.
Si un groupe de sécurité réseau est en place sur le sous-réseau avec un cluster utilisant le réseau virtuel apportez votre propre réseau, une règle d’autorisation doit être ajoutée à ce groupe de sécurité réseau. Cela peut être limité aux nœuds d’un pool de nœuds donné en ajoutant le pool de nœuds à un groupe de sécurité d’application (ASG). Un ASG managé est créé par défaut dans le groupe de ressources managé si les ports hôtes autorisés sont spécifiés. Les nœuds peuvent également être ajoutés à un ou plusieurs ASG personnalisés en spécifiant l’ID de ressource du ou des groupes de sécurité réseau dans les paramètres du pool de nœuds.
Format de spécification du port hôte
Lorsque vous spécifiez la liste des ports à autoriser, utilisez une liste séparée par des virgules avec des entrées au format port/protocol ou startPort-endPort/protocol.
Exemples :
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Spécifications
- AKS version 1.29 ou ultérieure est obligatoire.
Créer un cluster avec des ports et des groupes de sécurité d’application autorisés
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--nodepool-name <nodePoolName> \
--nodepool-allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp\
--nodepool-asg-ids "<asgId>,<asgId>" \
--generate-ssh-keys
Ajouter un nouveau pool de nœuds avec des ports autorisés et des groupes de sécurité d’application
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Mettre à jour les ports autorisés et les groupes de sécurité d’application pour un pool de nœuds
az aks nodepool update \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Attribuer automatiquement des ports hôtes pour les charges de travail de pod (PRÉVERSION)
Lorsque les adresses IP publiques sont configurées sur des nœuds, les ports hôtes peuvent être utilisés pour permettre aux pods de recevoir directement le trafic sans avoir à configurer un service d’équilibreur de charge. Cela est particulièrement utile dans les scénarios comme les jeux, où la nature éphémère de l’adresse IP et du port du nœud n’est pas un problème, car un service de matchmaker sur un nom d’hôte bien connu peut fournir l’hôte et le port appropriés à utiliser au moment de la connexion. Toutefois, étant donné qu’un seul processus sur un hôte peut être à l’écoute sur le même port, l’utilisation d’applications avec des ports hôtes peut entraîner des problèmes de planification. Pour éviter ce problème, AKS offre la possibilité au système d’attribuer dynamiquement un port disponible au moment de la planification, ce qui évite les conflits.
Avertissement
Le trafic du port de l’hôte de pod est bloqué par les règles de groupe de sécurité réseau par défaut en place sur le cluster. Cette fonctionnalité doit être combinée avec l’autorisation des ports hôtes sur le pool de nœuds pour autoriser le trafic à circuler.
Important
Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Les préversions AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Telles quelles, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :
Spécifications
- AKS version 1.29 ou ultérieure est obligatoire.
Enregistrer l'indicateur de fonctionnalité « PodHostPortAutoAssignPreview »
Inscrivez l’indicateur de fonctionnalité PodHostPortAutoAssignPreview à l’aide de la commande az feature register, comme indiqué dans l’exemple suivant :
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit). Vérifiez l’état de l’inscription à l’aide de la commande az feature show :
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Une fois que l’état reflète Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande az provider register :
az provider register --namespace Microsoft.ContainerService
Affecter automatiquement un port hôte à un pod
Le déclenchement de l’attribution automatique de port hôte s’effectue en déployant une charge de travail sans ports hôtes et en appliquant l’annotation kubernetes.azure.com/assign-hostports-for-containerports avec la liste des ports qui nécessitent des affectations de ports hôtes. La valeur de l’annotation doit être spécifiée sous la forme d’une liste d’entrées séparées par des virgules, comme port/protocol, où le port est un numéro de port individuel qui est défini dans la spécification pod et le protocole est tcp ou udp.
Les ports seront attribués à partir de la plage 40000-59999 et seront uniques au sein du cluster. Les ports attribués seront également ajoutés aux variables d’environnement à l’intérieur du pod afin que l’application puisse déterminer quels ports ont été attribués. Le nom de la variable d’environnement <deployment name>_PORT_<port number>_<protocol>_HOSTPORTsera au format suivant (exemple ci-dessous) : mydeployment_PORT_8080_TCP_HOSTPORT: 41932.
Voici un exemple echoserver de déploiement montrant le mappage des ports hôtes pour les ports 8080 et 8443 :
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver-hostport
labels:
app: echoserver-hostport
spec:
replicas: 3
selector:
matchLabels:
app: echoserver-hostport
template:
metadata:
annotations:
kubernetes.azure.com/assign-hostports-for-containerports: 8080/tcp,8443/tcp
labels:
app: echoserver-hostport
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: echoserver-hostport
image: k8s.gcr.io/echoserver:1.10
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: https
containerPort: 8443
protocol: TCP
Lorsque le déploiement est appliqué, les hostPort entrées sont dans le YAML des pods individuels :
$ kubectl describe pod echoserver-hostport-75dc8d8855-4gjfc
<cut for brevity>
Containers:
echoserver-hostport:
Container ID: containerd://d0b75198afe0612091f412ee7cf7473f26c80660143a96b459b3e699ebaee54c
Image: k8s.gcr.io/echoserver:1.10
Image ID: k8s.gcr.io/echoserver@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 Ports: 8080/TCP, 8443/TCP
Host Ports: 46645/TCP, 49482/TCP
State: Running
Started: Thu, 12 Jan 2023 18:02:50 +0000
Ready: True
Restart Count: 0
Environment:
echoserver-hostport_PORT_8443_TCP_HOSTPORT: 49482
echoserver-hostport_PORT_8080_TCP_HOSTPORT: 46645
Étapes suivantes
Découvrez comment utiliser plusieurs pools de nœuds dans AKS.
En savoir plus sur l’utilisation des équilibreurs de charge standard dans AKS