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 Kubernetes Basics 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 Kubernetes Basics, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kubernetes Basics 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:8080Espaces 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.localTester 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-serviceComment 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: 5432Enregistrements 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:5432Examiner 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.localVariables 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 Kubernetes Basics, passe à CoddyKit PRO. Le cours Kubernetes Basics 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 Kubernetes Basics 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 Kubernetes Basics ?
Aucune expérience préalable n'est requise. Kubernetes Basics 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 Kubernetes Basics ?
Oui. Chaque leçon Kubernetes Basics 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
- Exposer des applications avec des Services
- Types de Service : ClusterIP, NodePort, LoadBalancer
- Ingress pour l’accès externe
- DNS et découverte des services