Ich habe einen einfachen Container auf Google Container Engine, der seit Monaten ohne Probleme ausgeführt wird. Plötzlich kann ich keine externe Domain auflösen. Bei der Problembehandlung habe ich den Container mehrmals neu erstellt und die Clusterversion auf 1.4.7 aktualisiert, um eine Änderung ohne Änderung zu erreichen.Externe DNS-Auflösung funktioniert nicht mehr in Container Engine
den App-Code Um auszuschließen, so viel wie möglich, auch einen grundlegenden node.js Code eine externe Domäne nicht auflösen kann:
const dns = require('dns');
dns.lookup('nodejs.org', function(err, addresses, family) {
console.log('addresses:', addresses);
});
/* logs 'undefined' */
Die gleiche RAN auf einem lokalen Rechner oder lokalen Docker Container funktionieren wie erwartet.
versagt Dieser kubectl Aufruf auch:
# kubectl exec -ti busybox -- nslookup kubernetes.default
nslookup: can't resolve 'kubernetes.default'
Zwei zeigen, wenn kube-dns Schoten bekommen (allerdings nicht sicher, ob das erwartet wird)
# kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME READY STATUS RESTARTS AGE
kube-dns-v20-v8pd6 3/3 Running 0 1h
kube-dns-v20-vtz4o 3/3 Running 0 1h
Beide sagen, wenn zu überprüfen versuchen für Fehler im DNS-Pod:
# kubectl logs --namespace=kube-system pod/kube-dns-v20-v8pd6 -c kube-dns
Error from server: container kube-dns is not valid for pod kube-dns-v20-v8pd6
Ich erwarte die intern erstellte Kube-DNS ist nicht richtig Das Ziehen externer DNS-Ergebnisse oder einer anderen Verknüpfung verschwand.
Ich werde fast jede Problemumgehung akzeptieren, wenn eine existiert, da dies eine Produktions-App ist - vielleicht ist es möglich, Nameserver in der Kubernetes-Controller-YAML-Datei oder anderswo manuell zu setzen. Den Inhalt von /etc/resolv.conf in Dockerfile zu setzen, scheint nicht zu funktionieren.