CoreDNS qui résout pas mes services externes sur K8s

Posté par trossi le 24/04/2025
RÉSOLU

trossi

Membre depuis le 14/01/2020

yo la team ! on est sur k8s et notre coredns il fait la gueule. il résout nickel les services internes (cluster.local) mais pour tout ce qui est externe, genre google.com ou nos propres services derrière un Load Balancer externe, rien. c'est le silence radio. j'ai checké les logs des pods coredns et je vois des timeouts ou des SERVFAIL. ptete un souci de config dans le corefile ?

# coredns configmap (simplifié)
apiVersion: v1
kind: ConfigMap
metadata:
  name: coredns
  namespace: kube-system
data:
  Corefile: |
    .:53 {
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        forward . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }

Commentaires

jacqueline-gaudin

Membre depuis le 17/05/2019

salut ! le forward . /etc/resolv.conf c'est la base, donc ça devrait marcher. t'as vérifié que le /etc/resolv.conf des pods coredns pointe bien vers des serveurs DNS externes valides et pas juste l'IP du service kube-dns lui-même ? des fois ça boucle.

gvaillant

Membre depuis le 29/05/2019

aussi check la commande kubectl logs -n kube-system -l k8s-app=kube-dns pour voir les logs précis quand tu tentes une résolution externe. et regarde les événements de tes pods coredns, ptete des oomkill ou autre joyeusetés.

jacqueline-gaudin

Membre depuis le 17/05/2019

et t'aurais pas des `externalNamespaces` configurés quelque part qui écraseraient le comportement du forward ? ou une `policy` dns sur tes pods qui serait en `None` ou autre chose de bizarre

josephine86

Membre depuis le 18/07/2019

check aussi tes network policies sur le namespace `kube-system`. si une règle bloque le trafic DNS sortant des pods coredns vers l'extérieur, ça expliquerait les timeouts. faut une règle explicite pour autoriser le port 53 UDP/TCP.

gvaillant

Membre depuis le 29/05/2019

et pour la ligne `forward . /etc/resolv.conf`, t'es sûr que le `/etc/resolv.conf` dans l'image coredns est bien celui de ton nœud hôte ou un truc qui marche ? des fois dans des environnements conteneurisés ça peut être un peu tricky l'héritage du resolv.conf

jacqueline-gaudin

Membre depuis le 17/05/2019

t'as des règles de firewall sur les noeuds k8s qui pourraient bloquer le trafic DNS sortant (port 53 UDP/TCP) vers l'internet ? c'est con mais ça arrive.

josephine86

Membre depuis le 18/07/2019

et si t'utilises istio, les `ServiceEntry` peuvent override les résolutions DNS. t'aurais pas un truc qui redirige le trafic DNS vers un autre service entry ou un hôte non résolvable ?

gvaillant

Membre depuis le 29/05/2019

les coredns metrics prometheus (sur le port 9153) peuvent te donner des infos sur les échecs de résolution et les requêtes mises en cache. ça peut aider à débugger. `coredns_dns_response_code_count_total` par exemple.

jacqueline-gaudin

Membre depuis le 17/05/2019

un dernier truc t'as essayé de remplacer `forward . /etc/resolv.conf` par des DNSs fixes que tu sais qui marchent, genre `forward . 8.8.8.8 1.1.1.1` ? juste pour isoler le problème du resolv.conf.

trossi

Membre depuis le 14/01/2020

bordel merci la team c'était un combo de trucs ! le `forward . /etc/resolv.conf` était bien là mais en fait l'image docker de coredns avait un `resolv.conf` un peu moisi qui pointait sur lui-même lol. j'ai mis `forward . 8.8.8.8 1.1.1.1` en dur et ça marche. en plus j'avais une network policy qui bloquait le 53 UDP en sortie sur le namespace kube-system. bien vu pour la network policy !

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