0Pricing
DevOps Bootcamp · Leçon

DNS et découverte des services

Comprenez comment les Pods se trouvent grâce au DNS intégré de Kubernetes et comment fonctionne la découverte des services en arrière-plan.

DNS et découverte des services est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.

Le problème de la découverte de services

Les pods apparaissent et disparaissent, et leurs adresses IP changent constamment. Inscrire des adresses IP en dur cesserait immédiatement de fonctionner. Kubernetes résout ce problème grâce à la découverte de services basée sur DNS.

Au lieu d’utiliser une adresse IP, vous communiquez avec un nom stable.

DNS du cluster

Chaque cluster exécute un service DNS (généralement CoreDNS). Il crée automatiquement des enregistrements DNS pour les services et les pods, afin que les noms se résolvent vers le ClusterIP approprié.

Noms DNS des services

Un service reçoit un nom DNS selon un modèle prévisible :

service-name.namespace.svc.cluster.local

Dans le même espace de noms, vous pouvez simplement utiliser le nom court service-name.

# from a Pod in the same namespace
curl http://payment-service:8080

# fully qualified, from any namespace
curl http://payment-service.shop.svc.cluster.local:8080

Espaces de noms et nommage

L’espace de noms fait partie du nom. Pour accéder à un service dans un autre espace de noms, incluez-le : service.namespace.

# Pod in 'frontend' namespace calling 'backend' namespace
curl http://api.backend.svc.cluster.local

Tester DNS depuis un pod

Vous pouvez lancer un pod temporaire pour tester la résolution des noms.

kubectl run dnstest --image=busybox:1.36 --rm -it --restart=Never -- nslookup payment-service

Comment CoreDNS résout les noms

Lorsqu’un pod interroge un nom, la requête est envoyée à CoreDNS. Celui-ci recherche le service correspondant et renvoie son ClusterIP. Pour les services sans tête, il renvoie directement les adresses IP des pods.

Services sans tête

Un service sans tête (clusterIP: aucun) ignore l’adresse IP virtuelle unique. Le DNS renvoie à la place les adresses IP individuelles des pods, ce qui est essentiel pour les applications avec état qui s’adressent directement aux pods.

apiVersion: v1
kind: Service
metadata:
  name: db
spec:
  clusterIP: None
  selector:
    app: db
  ports:
  - port: 5432

Enregistrements DNS des pods

Avec un service sans tête, chaque pod associé peut également obtenir son propre enregistrement DNS, ce qui est utile pour les StatefulSets dont les pods possèdent des identités stables comme db-0 et db-1.

# stable per-Pod name in a StatefulSet
curl http://db-0.db.default.svc.cluster.local:5432

Examiner le fichier resolv.conf

Kubernetes injecte une configuration DNS dans chaque pod. Les domaines de recherche permettent de résoudre correctement les noms courts.

kubectl exec -it mypod -- cat /etc/resolv.conf
# nameserver 10.96.0.10
# search default.svc.cluster.local svc.cluster.local cluster.local

Variables d’environnement ou DNS

Kubernetes injecte également les informations de connexion aux services sous forme de variables d’environnement, mais uniquement pour les services qui existaient au démarrage du pod. Le DNS est préférable, car il reflète toujours l’état actuel.

Pièges DNS courants

  • Oublier l’espace de noms lors d’un appel entre espaces de noms
  • S’attendre à trouver du DNS pour un service sans pods correspondants (aucun point de terminaison)
  • Mettre en cache des adresses IP obsolètes dans l’application au lieu de résoudre à nouveau le nom

Vérification rapide

Choisissez le format de nom DNS correct.

Récapitulatif

Vous avez appris que Kubernetes utilise CoreDNS pour attribuer aux services des noms DNS stables selon le modèle service.namespace.svc.cluster.local. Les noms courts fonctionnent au sein d’un espace de noms, les services sans tête exposent les adresses IP individuelles des pods, et le DNS reflète toujours l’état actuel du cluster.

Questions Fréquemment Posées

La leçon « DNS et découverte des services » est-elle gratuite ?

Oui — le texte complet de « DNS et découverte des services » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « DNS et découverte des services » ?

Comprenez comment les Pods se trouvent grâce au DNS intégré de Kubernetes et comment fonctionne la découverte des services en arrière-plan. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?

Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « DNS et découverte des services » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?

Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Exposer des applications avec des Services
  2. Types de Service : ClusterIP, NodePort, LoadBalancer
  3. Ingress pour l’accès externe
  4. DNS et découverte des services
← Retour à DevOps Bootcamp