Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous créez une ressource d’équilibreur de charge dans un cluster Azure Kubernetes Service (AKS), l’adresse IP publique qui lui est attribuée est uniquement valide pour la durée de vie de cette ressource. Si vous supprimez le service Kubernetes, l’adresse IP et l’équilibreur de charge associés sont également supprimés. Si vous voulez affecter une adresse IP spécifique ou conserver une adresse IP pour des services Kubernetes redéployés, vous pouvez créer et utiliser une adresse IP publique statique.
Cet article vous montre comment créer une adresse IP publique statique et l’affecter à votre service Kubernetes.
Avant de commencer
- La version 2.0.59 ou ultérieure d’Azure CLI doit être installée et configurée. Exécutez
az --versionpour trouver la version. Pour installer ou mettre à niveau, consultez Install Azure CLI. - Cet article traite de l’utilisation d’une adresse IP SKU standard avec un équilibreur de charge SKU standard. Pour plus d’informations, consultez Types d’adresses IP et méthodes d’allocation dans Azure.
Créer un cluster AKS
Créez un groupe de ressources Azure à l’aide de la commande
az group create.az group create --name myNetworkResourceGroup --location eastusCréez un cluster AKS à l’aide de la
az aks createcommande.az aks create --name myAKSCluster --resource-group myNetworkResourceGroup --generate-ssh-keys
Créer une adresse IP statique
Obtenez le nom du groupe de ressources de nœud à l’aide de la commande
az aks showet exécutez une requête sur la propriéténodeResourceGroup.az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsvCréez une adresse IP publique statique dans le groupe de ressources de nœud à l’aide de la
az network public-ip createcommande.az network public-ip create \ --resource-group <node resource group name> \ --name myAKSPublicIP \ --sku Standard \ --allocation-method staticImportant
AKS ne prend plus en charge l’équilibreur de charge Basic. Si votre cluster utilise un Load Balancer de base, effectuez une mise à niveau vers Standard Load Balancer avant de configurer une adresse IP publique statique.
Obtenez l’adresse IP publique statique à l’aide de la
az network public-ip showcommande. Spécifiez le nom du groupe de ressources de nœud et l’adresse IP publique que vous avez créée, puis interrogez leipAddress.az network public-ip show --resource-group <node resource group name> --name myAKSPublicIP --query ipAddress --output tsv
Créer un service Kubernetes avec l’adresse IP statique
Créez un fichier nommé
load-balancer-service.yamlet copiez-le dans le contenu du fichier YAML suivant. Indiquez le nom de la ressource IP publique (myAKSPublicIP) que vous avez créé dans la section Créer une adresse IP statique et le nom du groupe de ressources de nœud.Par défaut, l’identité du plan de contrôle AKS dispose des autorisations du rôle Contributeur sur le groupe de ressources du nœud. Par conséquent, l’adresse IP publique que vous créez dans cet article n’exige pas d’attribution de rôle supplémentaire. Si vous utilisez une adresse IP publique entrante ou sortante dans un autre groupe de ressources, accordez à l’identité du plan de contrôle les autorisations requises sur ce groupe de ressources. Pour plus d’informations, consultez Identités managées dans AKS.
Important
La propriété
loadBalancerIPd’un manifeste de service Kubernetes est déconseillée après Kubernetes en amont. Les services existants continuent de fonctionner sans modification, mais utilisent plutôt des annotations de service.Annotation Purpose service.beta.kubernetes.io/azure-pip-nameSpécifiez le nom de la ressource IP publique. service.beta.kubernetes.io/azure-load-balancer-ipv4Spécifiez une adresse IPv4. service.beta.kubernetes.io/azure-load-balancer-ipv6Spécifiez une adresse IPv6. apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name> service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP name: azure-load-balancer spec: type: LoadBalancer ports: - port: 80 selector: app: azure-load-balancerRemarque
L’ajout de l’annotation
service.beta.kubernetes.io/azure-pip-namegarantit la création la plus efficace du LoadBalancer et est fortement recommandé afin d’éviter d’éventuels problèmes de limitation.Définissez une étiquette DNS publique sur le service à l’aide de l’annotation de service
service.beta.kubernetes.io/azure-dns-label-name. Il publie un nom de domaine complet pour votre service en utilisant les serveurs DNS publics et le domaine de niveau supérieur Azure. La valeur de l’annotation doit être unique au sein de l’emplacement Azure ; nous vous recommandons donc d’utiliser un libellé suffisamment explicite. Azure ajoute automatiquement un suffixe par défaut à l’emplacement que vous avez sélectionné, tel que<location>.cloudapp.azure.com, au nom que vous fournissez, créant ainsi le nom de domaine complet.Remarque
Si vous souhaitez publier le service sur votre propre domaine, consultez Azure DNS et le projet external-dns.
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name> service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label> name: azure-load-balancer spec: type: LoadBalancer ports: - port: 80 selector: app: azure-load-balancerAvant de créer le service, vérifiez que votre cluster dispose d’une charge de travail avec des pods qui utilisent l’étiquette
app: azure-load-balancer. Le manifeste de service sélectionne les pods avec cette étiquette, mais ne crée pas de déploiement.Créez le service à l’aide de la
kubectl applycommande.kubectl apply -f load-balancer-service.yamlVérifiez que le service sélectionne au moins un pod en cours d’exécution et prêt.
kubectl get pods -l app=azure-load-balancerPour voir l’étiquette DNS de votre équilibreur de charge, utilisez la commande
kubectl describe.kubectl describe service azure-load-balancerL’étiquette DNS est répertoriée sous
Annotations, comme indiqué dans l’exemple de sortie condensé suivant :Name: azure-load-balancer Namespace: default Labels: <none> Annotations: service.beta.kubernetes.io/azure-dns-label-name: <unique-service-label>
Résolution des problèmes
Cette section suppose que vous avez terminé la création d’une adresse IP statique, a tenté les étapes de création d’un service Kubernetes avec l’adresse IP statique et d’avoir un cluster AKS en cours d’exécution. Pour récupérer le nom du groupe de ressources de nœud, utilisez az aks show --name myAKSCluster --resource-group myNetworkResourceGroup --query nodeResourceGroup -o tsv.
Si la ressource IP publique nommée dans l’annotation service.beta.kubernetes.io/azure-pip-name n’existe pas dans le groupe de ressources spécifié par service.beta.kubernetes.io/azure-load-balancer-resource-group, ou si l’identité du plan de contrôle AKS ne peut pas accéder à ce groupe de ressources, la création du service d’équilibreur de charge échoue. Pour résoudre les problèmes, passez en revue les annotations de service et les événements de création à l’aide de la kubectl describe commande. Spécifiez le nom du service tel qu’il est spécifié dans le manifeste YAML, comme indiqué dans l’exemple suivant :
kubectl describe service azure-load-balancer
La sortie vous montre des informations sur la ressource du service Kubernetes. L’exemple de sortie suivant montre un Warning dans le Events: «user supplied IP address was not found ». Dans ce scénario, vérifiez que l’annotation azure-pip-name correspond au nom de la ressource IP publique statique et que l’annotation azure-load-balancer-resource-group correspond au groupe de ressources qui le contient.
Name: azure-load-balancer
Namespace: default
Labels: <none>
Annotations: service.beta.kubernetes.io/azure-load-balancer-resource-group: <node resource group name>
service.beta.kubernetes.io/azure-pip-name: myAKSPublicIP
Selector: app=azure-load-balancer
Type: LoadBalancer
IP: 10.0.18.125
IP: 40.121.183.52
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 32582/TCP
Endpoints: <pod-ip>:80
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreatingLoadBalancer 7s (x2 over 22s) service-controller Creating load balancer
Warning CreatingLoadBalancerFailed 6s (x2 over 12s) service-controller Error creating load balancer (will retry): Failed to create load balancer for service default/azure-load-balancer: user supplied IP Address 40.121.183.52 was not found
Étapes suivantes
Pour plus de contrôle sur le trafic réseau vers vos applications, utilisez le module complémentaire de routage des applications pour AKS. Pour plus d’informations sur le module complémentaire de routage des applications, consultez l’entrée NGINX gérée avec le module complémentaire de routage d’application.