Wir sind auf ein Problem gestoßen, bei dem zwei Dienste ausgeführt werden. auth-api und Kaninchen-mq. Aus dem auth-ui-Pod versuchen wir, ihn dazu zu bringen, den Rabbit-mq-Pod zu finden, damit er aus den Warteschlangen lesen kann.
Wenn wir einen kurzen DNS-Namen verwenden: rabbitmq-master
, erhalte ich die folgende Fehlermeldung;
kubectl exec auth-api-jf2ec -i nslookup rabbitmq-master
nslookup: can't resolve '(null)': Name does not resolve
nslookup: can't resolve 'rabbitmq-master': Try again
error: error executing remote command: Error executing command in container: Error executing in Docker Container: 1
Wenn ich den vollständigen DNS-Namen verwende: rabbitmq-master.default.svc.cluster.local
, funktioniert es OK:
kubectl exec auth-api-jf2ec -i nslookup rabbitmq-master.default.svc.cluster.local
Name: rabbitmq-master.default.svc.cluster.local
Address 1: 10.0.61.158 ip-10-0-61-158.eu-west-1.compute.internal
nslookup: can't resolve '(null)': Name does not resolve
Wir könnten also einfach das vollständige DNS verwenden, aber das würde dann bedeuten, dass wir unsere Bereitstellungsskripts für jeden Kundennamensraum ändern müssen, den wir verwenden möchten.
Ich habe unseren Cluster überprüft und der kube-dns-Pod ist in Betrieb.
$ k get --all-namespaces pods
NAMESPACE NAME READY STATUS RESTARTS AGE
default auth-api-jf2ec 1/1 Running 0 15h
default rabbitmq-master-6yu3o 1/1 Running 0 15h
kube-system elasticsearch-logging-v1-o24ye 1/1 Running 0 6d
kube-system elasticsearch-logging-v1-vlvw0 1/1 Running 1 6d
kube-system fluentd-elasticsearch-ip-172-0-0-32.eu-west-1.compute.internal 1/1 Running 1 6d
kube-system fluentd-elasticsearch-ip-172-0-0-33.eu-west-1.compute.internal 1/1 Running 0 6d
kube-system fluentd-elasticsearch-ip-172-0-0-34.eu-west-1.compute.internal 1/1 Running 0 6d
kube-system heapster-v1.0.2-2148290995-zl3wq 4/4 Running 0 6d
kube-system kibana-logging-v1-e3ci3 1/1 Running 3 6d
kube-system kube-dns-v11-ju72c 4/4 Running 0 6d
kube-system kube-proxy-ip-172-0-0-32.eu-west-1.compute.internal 1/1 Running 1 6d
kube-system kube-proxy-ip-172-0-0-33.eu-west-1.compute.internal 1/1 Running 0 6d
kube-system kube-proxy-ip-172-0-0-34.eu-west-1.compute.internal 1/1 Running 0 6d
kube-system kubernetes-dashboard-v1.0.1-tbyn2 1/1 Running 1 6d
kube-system monitoring-influxdb-grafana-v3-gm426 2/2 Running 0 6d
Dies ist die Ausgabe der Datei /etc/resolv.conf
im auth-api-Pod:
$ kubectl exec auth-api-jf2ec -i cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local eu-west-1.compute.internal
nameserver 10.0.0.10
options nods:5
Habe ich etwas falsch konfiguriert / gar nichts konfiguriert?
Es gab eine wichtige Information, die ich bei diesem Problem übersehen habe ... wir haben alpine:3.3
als Basis-Image verwendet und das unterstützt die search
Direktive in der /etc/resolv.conf
.
Nach dem Upgrade auf alpine:3.4
das Problem behoben.
Hoffentlich nützt das jemandem.
Hilfreichster Kommentar
Es gab eine wichtige Information, die ich bei diesem Problem übersehen habe ... wir haben
alpine:3.3
als Basis-Image verwendet und das unterstützt diesearch
Direktive in der/etc/resolv.conf
.Nach dem Upgrade auf
alpine:3.4
das Problem behoben.Hoffentlich nützt das jemandem.