Comment créer un Service dans Kubernetes

Un service est une couche d’abstraction sur les Pods. Il définit un ensemble logique de Pods. Il fournit une adresse IP et un nom DNS uniques par lesquels les pods sont accessibles. Il est utilisé pour exposer les pods.

Il existe 3 types de services différents dans Kubernetes :

  1. ClusterIP :
    Il expose le service au sein du cluster Kubernetes. Ce service est uniquement accessible depuis le cluster. Il n’est pas possible d’y accéder depuis l’extérieur du cluster.
  2. NodePort :
    Il expose le service sur un port statique sur le nœud déployé. Ce service est accessible depuis l’extérieur du cluster à l’aide du NodeIP:Nodeport.
  3. Load Balancer :
    Expose le service en externe en utilisant l’équilibreur de charge d’un fournisseur de cloud, cela crée une IP publique sur le fournisseur de cloud.
  4. ExternalName :
    Il mappe le Service au contenu du champ ExternalName en renvoyant un enregistrement CNAME

Cliqueici pour en savoir plus sur le service Kubernetes.

Dans cet article, nous allons voir les étapes pour créer un Service de type NodePort.

Pré-requis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si tu veux apprendre à créer un Cluster Kubernetes, clique ici. Ce guide t’aidera à créer un cluster Kubernetes avec 1 maître et 2 nœuds sur des instances EC2 AWS Ubuntu 18l04.

Ce que nous allons faire

  1. Créer un service

Créer un service

Tout d’abord, nous allons créer un déploiement en utilisant la définition suivante vers laquelle le service redirigera toutes les demandes qui lui parviennent.

Crée un nouveau fichier et ajoute le contenu suivant dans celui-ci, cela créera un déploiement pour Nginx.

vim my-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nginx
  replicas: 3 
  template: 
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

mon-déploiement

Pour créer un déploiement, exécute la commande suivante.

kubectl create -f my-deployment.yml

créer-déploiement

Cela créera un déploiement pour Nginx avec 3 répliques.

Tu peux obtenir les détails du déploiement, du replicaset et du pod en utilisant les commandes suivantes.

kubectl get deployment | grep nginx
kubectl get replicaset | grep nginx
kubectl get pod | grep nginx

get-deployment-details

Dans la capture d’écran ci-dessus, tu peux voir que 3 répliques de Nginx ont été créées.

Maintenant, crée une définition de service en utilisant le contenu suivant.

vim my-service.yml
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: default
  labels:
    app: nginx
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  selector:    
app: nginx type: NodePort

mon-service

La définition de service ci-dessus créera un service de type NodePort et redirigera les demandes vers les pods correspondant à l’étiquette nginx, c’est-à-dire les pods que nous avons créés à l’aide de l’étape précédente de création du déploiement.

Exécute la commande suivante pour créer un Service.

kubectl create -f my-service.yml

créer un service

Obtiens les détails du service et vérifie le NodePort sur lequel le service sera disponible.

kubectl get service | grep nginx
kubectl describe service nginx

get-service-details

Dans la capture d’écran ci-dessus, on peut voir que le service est disponible sur le port 30747. Cela peut être différent pour toi car le port est attribué de manière aléatoire parmi la gamme disponible.

Tu peux maintenant accéder à l’application nginx via ce service sur NodeIp:NodePort.

Ici, c’est :106.210.138.189:30747

service d'accès

Conclusion

Dans cet article, nous avons créé un déploiement pour Nginx avec 3 répliques et créé un service de type NodePort. Nous avons vu comment l’application Nginx créée à l’aide du déploiement est accessible sur NodeIP:Port.

Vous aimerez aussi...