Cette documentation concerne la version la plus récente de GKE sur Azure, publiée en novembre 2021. Consultez les notes de version pour plus d'informations.
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Équilibrage de charge réseau
Cette rubrique explique comment configurer un équilibreur de charge L4 reposant sur un équilibreur de charge standard Azure à l'aide de GKE sur Azure.
Lorsque vous créez un service de type LoadBalancer, un contrôleur GKE sur Azure configure un équilibreur de charge Azure.
Avant de commencer
Vous devez créer un cluster.
et configurer kubectl pour accéder au cluster.
Sélectionner un équilibreur de charge public ou privé
Les équilibreurs de charge de service peuvent être publics (avec des adresses IP d'interface publiques) ou internes (uniquement accessibles via des adresses IP privées).
Par défaut, un nouveau service est public. Pour créer un équilibreur de charge interne, définissez l'annotation service.beta.kubernetes.io/azure-load-balancer-internal sur "true" dans le fichier manifeste.
Choisir un sous-réseau pour les équilibreurs de charge internes
Lors de la création d'un équilibreur de charge interne, GKE sur Azure doit choisir le sous-réseau dans lequel placer l'équilibreur de charge. Ce sous-réseau d'équilibreur de charge de service par défaut est choisi depuis les paramètres de création du cluster comme suit :
S'il est spécifié et non vide, cluster.networking.serviceLoadBalancerSubnetId
Dans le cas contraire, cette valeur est définie sur cluster.controlPlane.subnetId.
Vous pouvez également spécifier le sous-réseau à utiliser pour un équilibreur de charge donné en
ajoutant l'annotation service.beta.kubernetes.io/azure-load-balancer-internal-subnet
au service. La valeur de cette annotation est le nom du sous-réseau.
Créer un exemple de LoadBalancer
Pour créer un équilibreur de charge, vous devez créer un déploiement et l'exposer avec un service.
Créez votre déploiement. Les conteneurs de ce déploiement écoutent le port 50001.
Enregistrez le fichier YAML suivant dans un fichier nommé my-deployment-50001.yaml :
Vérifiez que trois pods sont en cours d'exécution :
kubectlgetpods--selector=app=products
Créez un service de type LoadBalancer pour votre déploiement. Vous pouvez créer un équilibreur de charge standard Azure public ou interne.
Choisissez l'une des options suivantes.
Copiez l'un des fichiers manifestes suivants dans un fichier nommé my-lb-service.yaml.
Pour créer un LoadBalancer interne, définissez l'annotation service.beta.kubernetes.io/azure-load-balancer-internal sur "true". Le code YAML suivant inclut cette annotation.
yaml
apiVersion: v1
kind: Service
metadata:
name: my-lb-service
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
type: LoadBalancer
selector:
app: products
department: sales
ports:
- protocol: TCP
port: 60000
targetPort: 50001
Créez le service à l'aide de kubectl apply :
kubectlapply-fmy-lb-service.yaml
Affichez l'adresse du service avec kubectl get service.
kubectlgetservicemy-lb-service
Le résultat inclut une colonne EXTERNAL-IP avec une adresse de l'équilibreur de charge (publique ou privée, selon la façon dont l'équilibreur de charge a été créé).
Si vous avez créé un équilibreur de charge public, vous pouvez vous y connecter avec curl. Remplacez external-ip par l'adresse obtenue dans le résultat de la commande kubectl get service de l'étape précédente.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/09/04 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Difficile à comprendre","hardToUnderstand","thumb-down"],["Informations ou exemple de code incorrects","incorrectInformationOrSampleCode","thumb-down"],["Il n'y a pas l'information/les exemples dont j'ai besoin","missingTheInformationSamplesINeed","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 2025/09/04 (UTC)."],[],[],null,["# Network load balancing\n======================\n\nThis topic shows you how to set up an L4 load balancer backed\nby an Azure Standard Load Balancer using GKE on Azure .\n\nWhen you create a Service of type `LoadBalancer`, a GKE on Azure\ncontroller configures an\n[Azure Load Balancer](https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview).\n\nBefore you begin\n----------------\n\n- You must [Create a cluster](/kubernetes-engine/multi-cloud/docs/azure/how-to/create-cluster) and configure `kubectl` to access the cluster.\n\nSelecting a public or private load balancer\n-------------------------------------------\n\nService load balancers can be either public --- having public frontend IPs\n--- or internal--- only accessible through private IPs.\n\nBy default, a new Service is public. To create an internal load\nbalancer, you set the `service.beta.kubernetes.io/azure-load-balancer-internal`\nannotation to `\"true\"` in your manifest.\n\nChoosing subnet for internal load balancers\n-------------------------------------------\n\nWhen creating an internal load balancer, GKE on Azure needs to pick\nthe subnet to place the load balancer in. This default service load balancer\nsubnet is chosen from the cluster's creation parameters as follows:\n\n1. If specified and non-empty, `cluster.networking.serviceLoadBalancerSubnetId`\n2. Otherwise, `cluster.controlPlane.subnetId`\n\nAlternately, you can specify the subnet to use for a given load balancer by\nadding the `service.beta.kubernetes.io/azure-load-balancer-internal-subnet`\nannotation to the Service. The value for this annotation is the subnet's name.\n\nCreating an example LoadBalancer\n--------------------------------\n\nYou create a load balancer by creating a deployment and exposing that deployment\nwith a service.\n\n1. Create your deployment. Containers in this Deployment listen on port 50001.\n Save the following YAML to a file named `my-deployment-50001.yaml`:\n\n apiVersion: apps/v1\n kind: Deployment\n metadata:\n name: my-deployment-50001\n spec:\n selector:\n matchLabels:\n app: products\n department: sales\n replicas: 3\n template:\n metadata:\n labels:\n app: products\n department: sales\n spec:\n containers:\n - name: hello\n image: \"gcr.io/google-samples/hello-app:2.0\"\n env:\n - name: \"PORT\"\n value: \"50001\"\n\n2. Create the Deployment with `kubectl apply`:\n\n kubectl apply -f my-deployment-50001.yaml\n\n3. Verify that three Pods are running:\n\n kubectl get pods --selector=app=products\n\n4. Create a Service of type `LoadBalancer` for your deployment. You can create\n an Azure Standard Load Balancer that is either public, or internal.\n Choose from one of the following options.\n\n Copy one of the following manifests to a file named `my-lb-service.yaml`. \n\n ### Public\n\n apiVersion: v1\n kind: Service\n metadata:\n name: my-lb-service\n spec:\n type: LoadBalancer\n selector:\n app: products\n department: sales\n ports:\n - protocol: TCP\n port: 60000\n targetPort: 50001\n\n ### Internal\n\n You create an internal LoadBalancer by setting the annotation\n `service.beta.kubernetes.io/azure-load-balancer-internal`\n to `\"true\"`. The following YAML includes this annotation.\n `yaml\n apiVersion: v1\n kind: Service\n metadata:\n name: my-lb-service\n annotations:\n service.beta.kubernetes.io/azure-load-balancer-internal: \"true\"\n spec:\n type: LoadBalancer\n selector:\n app: products\n department: sales\n ports:\n - protocol: TCP\n port: 60000\n targetPort: 50001`\n5. Create the Service with `kubectl apply`:\n\n kubectl apply -f my-lb-service.yaml\n\n | **Note:** Configuring the load balancer and IP address takes several minutes.\n6. View the Service's address with `kubectl get service`.\n\n kubectl get service my-lb-service\n\n The output will include a column `EXTERNAL-IP` with an address of the\n load balancer (either public or private depending how the load balancer was\n created).\n7. If you have created a public load balancer you can connect to the\n load balancer with `curl`. Replace \u003cvar translate=\"no\"\u003eexternal-ip\u003c/var\u003e with the address\n from the output of `kubectl get service` from the previous step.\n\n curl http://\u003cvar translate=\"no\"\u003eexternal-ip\u003c/var\u003e:60000\n\n The output resembles the following: \n\n Hello, world!\n Version: 2.0.0\n Hostname: my-deployment-50001-84b6dc5555-zmk7q\n\n### Cleaning up\n\nTo remove the Service and Deployment, use `kubectl delete`. \n\n kubectl delete -f my-lb-service.yaml\n kubectl delete -f my-deployment-50001.yaml"]]