5.0 KiB
title | content_type | weight |
---|---|---|
Utiliser un Service pour accéder à une application dans un cluster | tutorial | 60 |
Cette page montre comment créer un Service Kubernetes que des clients externes peuvent utiliser pour accéder à une application s'exécutant dans un cluster. Le Service fournit une répartition de charge pour une application ayant deux instances en cours d'exécution.
{{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}}
{{% heading "objectives" %}}
- Exécuter deux instances d'une application Hello World.
- Créer un Service qui expose un port du nœud.
- Utiliser le Service pour accéder à l'application en cours d'exécution.
Création d'un service pour une application s'exécutant dans deux pods
Voici le fichier de configuration pour le déploiement de l'application :
{{% codenew file="service/access/hello-application.yaml" %}}
-
Exécutez une application Hello World dans votre cluster : Créez le déploiement de l'application en utilisant le fichier ci-dessus :
kubectl apply -f https://k8s.io/examples/service/access/hello-application.yaml
La commande précédente crée un {{< glossary_tooltip text="Deployment" term_id="deployment" >}} et un {{< glossary_tooltip term_id="replica-set" text="ReplicaSet" >}} associé. Le ReplicaSet possède deux {{< glossary_tooltip text="Pods" term_id="pod" >}}, chacun exécutant l'application Hello World.
-
Affichez les informations du déploiement :
kubectl get deployments hello-world kubectl describe deployments hello-world
-
Affichez les informations des ReplicaSet :
kubectl get replicasets kubectl describe replicasets
-
Créez un Service qui expose le déploiement :
kubectl expose deployment hello-world --type=NodePort --name=example-service
-
Affichez les informations sur le Service :
kubectl describe services example-service
Le résultat sera similaire à ceci :
Name: example-service Namespace: default Labels: run=load-balancer-example Annotations: <none> Selector: run=load-balancer-example Type: NodePort IP: 10.32.0.16 Port: <unset> 8080/TCP TargetPort: 8080/TCP NodePort: <unset> 31496/TCP Endpoints: 10.200.1.4:8080,10.200.2.5:8080 Session Affinity: None Events: <none>
Notez la valeur de NodePort pour le service. Par exemple, dans le résultat précédent, la valeur de NodePort est 31496.
-
Répertoriez les pods qui exécutent l'application Hello World :
kubectl get pods --selector="run=load-balancer-example" --output=wide
Le résultat est similaire à ceci :
NAME READY STATUS ... IP NODE hello-world-2895499144-bsbk5 1/1 Running ... 10.200.1.4 worker1 hello-world-2895499144-m1pwt 1/1 Running ... 10.200.2.5 worker2
-
Obtenez l'adresse IP publique de l'un de vos nœuds qui exécute un pod Hello World. L'obtention de cette adresse dépend de la manière dont vous avez configuré votre cluster. Par exemple, si vous utilisez Minikube, vous pouvez voir l'adresse du nœud en exécutant
kubectl cluster-info
. Si vous utilisez des instances Google Compute Engine, vous pouvez utiliser la commandegcloud compute instances list
pour voir les adresses publiques de vos nœuds. -
Sur le nœud choisi, créez une règle de pare-feu autorisant le trafic TCP sur votre port. Par exemple, si votre Service a une valeur NodePort de 31568, créez une règle de pare-feu autorisant le trafic TCP vers le port 31568. Différents fournisseurs cloud offrent différentes façons de configurer des règles de pare-feu.
-
Utilisez l'adresse du nœud et le port de nœud pour accéder à l'application Hello World :
curl http://<adresse-ip-publique>:<port>
où
<adresse-ip-publique>
est l'adresse IP publique de votre nœud, et<port>
est la valeur de NodePort pour votre service. La réponse à une requête réussie est un message de bienvenue :Hello Kubernetes!
Utilisation d'un fichier de configuration de service
Au lieu d'utiliser kubectl expose
, vous pouvez utiliser un
fichier de configuration de service
pour créer un Service.
{{% heading "cleanup" %}}
Pour supprimer le Service, saisissez cette commande :
kubectl delete services example-service
Pour supprimer le Déploiement, le ReplicaSet et les Pods qui exécutent l'application Hello World, saisissez cette commande :
kubectl delete deployment hello-world
{{% heading "whatsnext" %}}
Suivez le tutoriel Connecter des applications avec les Services.