Sobes.tech
Junior

Quelle est la différence entre un service headless et d'autres types de services?

sobes.tech IA

Réponse de l'IA

Le service sans tête n'a pas d'adresse IP de cluster et ne réalise pas de répartition de charge. À la place, le DNS retourne directement les adresses IP de tous les pods correspondant au sélecteur du service. Cela permet au client de choisir lui-même vers quel pod se connecter ou d'utiliser son propre algorithme de répartition.

Options d'utilisation typiques :

  • StatefulSets : Pour les applications nécessitant une identification réseau unique et un stockage de données stable.
  • Discovery : Les clients peuvent découvrir directement les pods et gérer les connexions.
  • Répartition de charge personnalisée : Les applications peuvent implémenter des algorithmes de répartition personnalisés.

Comparaison avec les services ClusterIP et NodePort :

Type de service IP de cluster Répartition de charge DNS
ClusterIP Oui Kubernetes Retourne l'IP du service
NodePort Oui Kubernetes Retourne l'IP du service
Sans tête Non Non (client) Retourne les adresses IP des pods

Définition du service sans tête en YAML :

apiVersion: v1
kind: Service
metadata:
  name: mon-service-sans-tête
spec:
  selector:
    app: mon-application # Sélecteur pour les pods
  clusterIP: None # La différence clé - absence d'IP de cluster
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

Au lieu d'accéder à mon-service-sans-tête via une IP unique, le client recevra une liste d'adresses IP de pods :

$ kubectl get pods -l app=mon-application -o custom-columns=NAME:.metadata.name,IP:.status.podIP
NAME            IP
mon-application-abcde    10.42.0.10
mon-application-fghij    10.42.0.11
mon-application-klmno    10.42.0.12

Ensuite, le client peut choisir n'importe laquelle de ces adresses IP pour établir la connexion.