Problème de résolution DNS vers des services internes depuis un pod k8s

Posté par bertrand-bernard le 03/11/2025
RÉSOLU

bertrand-bernard

Membre depuis le 08/07/2019

bonjour à tous. j'ai un souci hyper relou sur notre cluster k8s (kubeadm 1.25). les pods arrivent à résoudre les noms de services k8s sans problème et aussi les domaines publics (google.com etc). par contre ils sont incapables de résoudre nos noms de domaines internes genre intranet.monentreprise.fr. ça marche très bien depuis les nodes eux-mêmes. on utilise core-dns par défaut. des idées sur où chercher ?

# depuis un pod
kubectl exec -it my-pod -- nslookup intranet.monentreprise.fr
;; connection timed out; no servers could be reached

Commentaires

suzanne-faivre

Membre depuis le 12/05/2020

salut. vérifie le configmap de coredns. y'a une section forward ou stub-domains. il faut que tu y ajoutes tes serveurs dns internes pour tes domaines spécifiques. sinon coredns ne sait pas où envoyer ces requêtes

# exemple de core-dns configmap
data:
  Corefile: |
    .:53 {
        errors
        health
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
            pods insecure
            fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
    # AJOUTE CA POUR TON DOMAINE INTERNE
    monentreprise.fr:53 {
        errors
        cache 30
        forward . 192.168.1.100  # ton serveur DNS interne
    }

mjacques

Membre depuis le 21/07/2024

ouais user2 a raison. et regarde aussi si les pods ont bien le fichier /etc/resolv.conf qui pointe vers le service coredns du cluster. des fois des CNI un peu custom peuvent changer ça ou des images docker trop minimalistes

jgimenez

Membre depuis le 22/04/2020

si le corefile est bon et que le resolv.conf est bon, alors c'est ptete un souci réseau. est-ce que les pods ont bien une route vers tes serveurs dns internes ? ou est-ce qu'un firewall entre le cluster k8s et tes dns internes bloque les requêtes udp/tcp sur le port 53 ?

emile-lacombe

Membre depuis le 08/03/2019

check aussi tes NetworkPolicies. si t'en as qui sont un peu trop agressives elles peuvent empêcher tes pods de communiquer avec des IPs en dehors du cluster même pour du DNS. un test simple c'est de désactiver temporairement les NP pour un pod de test et voir si ça résout

bertrand-bernard

Membre depuis le 08/07/2019

ok alors le Corefile n'avait rien pour monentreprise.fr. j'ai ajouté la stanza comme suggéré par user2. après un restart des coredns pods toujours le même souci. le resolv.conf des pods est bon il pointe bien sur 10.96.0.10 (le service coredns).

tmaillard

Membre depuis le 04/04/2019

alors si le Corefile est bon et toujours rien, ça sent le firewall ou la route. depuis un pod avec le problème, fais un nc -uzv 192.168.1.100 53 (ton DNS interne). si ça connecte pas t'as un souci réseau sous-jacent. et vérifie les logs de tes DNS internes, voient-ils passer des requêtes depuis les IPs de tes pods ?

bertrand-bernard

Membre depuis le 08/07/2019

AAAAAAH ! c'était bien le firewall sur l'edge de notre datacenter qui bloquait tout le trafic UDP/53 sortant du subnet k8s vers nos DNS internes. j'ai demandé l'ouverture et maintenant ça marche impeccable. merci à tous pour la chasse au bug ! galère les firewalls invisibles.

Laisser une réponse

Vous devez être connecté pour poster un message !

Rejoindre la communauté

Recevoir les derniers articles gratuitement en créant un compte !

S'inscrire