RousselTMLEARNING

Article · Kubernetes : de la découverte à l'expertise

Les Services Kubernetes

Introduction #

Présentation des services Kubernetes et de leur rôle.

Qu'est-ce qu'un Service ? #

Un Service dans Kubernetes est une abstraction réseau qui permet de connecter un ensemble de Pods à d'autres Pods ou à des applications externes. Il fournit une adresse IP stable et un mécanisme de découverte de services pour simplifier la communication dans un cluster.

Pourquoi utiliser les Services ? #

Les Pods dans Kubernetes sont éphémères et leurs adresses IP peuvent changer. Les Services assurent une connectivité persistante et fiable, même lorsque des Pods sont recréés ou déplacés.

Types de Services #

Les différents types de services disponibles dans Kubernetes:

ClusterIP #

Le type ClusterIP est le mode par défaut. Il rend le service accessible uniquement à l'intérieur du cluster Kubernetes via une adresse IP interne.

apiVersion: v1
kind: Service
metadata:
  name: clusterip-service
spec:
  type: ClusterIP
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
Comme c'est le type par defaut, vous pouvez ne pas mettre 'type: Cluster' dans votre configuration.

NodePort #

Le type NodePort expose le service sur un port spécifique de chaque nœud du cluster, permettant un accès externe direct.

apiVersion: v1
kind: Service
metadata:
  name: nodeport-service
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30007
Expose le service sur l'IP de chaque nœud sur un port statique (le NodePort). Un service ClusterIP, vers lequel le service NodePort est automatiquement créé. Vous pourrez contacter le service NodePort, depuis l'extérieur du cluster, en demandant 'NodeIP': NodePort.

LoadBalancer #

Le type LoadBalancer configure un équilibreur de charge externe pour exposer le service au public. Ce type est souvent utilisé dans les environnements cloud.

apiVersion: v1
kind: Service
metadata:
  name: loadbalancer-service
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
Expose le service en externe à l'aide de l'équilibreur de charge d'un fournisseur de cloud. Les services NodePort et ClusterIP, vers lesquels les itinéraires de l'équilibreur de charge externe, sont automatiquement créés.

ExternalName #

Le type ExternalName mappe un service Kubernetes à un nom DNS externe. Il est utilisé pour rediriger le trafic vers des services non Kubernetes.

apiVersion: v1
kind: Service
metadata:
  name: externalname-service
spec:
  type: ExternalName
  externalName: my.external.service.com
Mappe le service au contenu du champ externalName (par exemple foo.bar.example.com), en renvoyant un enregistrement CNAME avec sa valeur. Aucun proxy d'aucune sorte n'est mis en place.

Composants clés #

Les éléments essentiels dans la configuration d'un service.

Sélecteurs et Pods cibles #

Les services utilisent des sélecteurs pour associer les Pods cibles à un service. Les étiquettes (labels) des Pods sont utilisées pour cette correspondance.

selector:
  app: my-app

Ports #

Les services définissent deux types de ports :

  • Port : Port sur lequel le service écoute.
  • TargetPort : Port sur lequel les Pods cibles écoutent.

Endpoints #

Les endpoints représentent les adresses IP et les ports des Pods qui répondent au service. Ils sont automatiquement mis à jour lorsque les Pods changent.

Bonnes pratiques #

Conseils pour une utilisation optimale des services.

Utilisez des étiquettes claires #

Assurez-vous que les étiquettes utilisées pour les sélecteurs sont descriptives et cohérentes pour éviter des correspondances incorrectes.

Sécurisez vos services #

Utilisez des politiques réseau (NetworkPolicies) pour contrôler l'accès aux services sensibles et limiter l'exposition.

Supervisez vos endpoints #

Surveillez régulièrement les endpoints des services pour détecter les anomalies ou les Pods non opérationnels.

Conclusion #

Résumé sur l'importance des services Kubernetes.

Les Services sont un composant essentiel dans Kubernetes, permettant une communication réseau fiable et stable entre les Pods, ainsi qu'avec le monde extérieur. En utilisant correctement les différents types de services, vous pouvez garantir une connectivité efficace et une gestion optimale de vos applications dans le cluster.

📄 Les Services Kubernetes →

Mon suivi

  • ⏱ Durée estimée : ≈ 11 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Aide-mémoire Docker : Les commandes essentielles

Un guide pratique regroupant toutes les commandes indispensables pour manipuler les images, les c...

Kubernetes : architecture et composants (control plane, nœuds, objets)

Comprendre l'architecture de Kubernetes : API server, etcd, scheduler, controller manager, kubele...

Aide-mémoire kubectl : les commandes essentielles

Toutes les commandes kubectl utiles au quotidien : contextes, ressources, logs, exec, port-forwar...

Kubernetes : Pods, ReplicaSets et Deployments (déployer et mettre à jour)

Maîtriser les workloads Kubernetes : anatomie d'un pod, ReplicaSet, Deployment, stratégies Rollin...

Kubernetes : exposer ses applications (Services, Ingress et Gateway API)

Exposer des applications dans Kubernetes : Services ClusterIP/NodePort/LoadBalancer, Ingress, Ing...

Kubernetes : sécuriser son cluster (RBAC, ServiceAccounts, NetworkPolicies, Pod Security)

Sécuriser Kubernetes : RBAC (Role, ClusterRole, bindings), ServiceAccounts, NetworkPolicies, Pod ...

Kubernetes : fiabilité et mise à l'échelle (probes, ressources, HPA, PDB)

Rendre une application résiliente dans Kubernetes : liveness, readiness et startup probes, reques...

Docker : vue d'ensemble, architecture et premiers pas

Découvrir Docker : conteneurs vs machines virtuelles, architecture client/daemon/registre, images...

Bonnes pratiques Docker : images, exécution, sécurité et exploitation

Les bonnes pratiques Docker : Dockerfile et builds multi-étapes, images minimales et reproductibl...