Kubernetes weist jedem Container eine IP-Adresse zu. Wie kann ich die IP-Adresse von einem Container im Pod abrufen? Ich konnte den Weg von Dokumentationen nicht finden.
Bearbeiten: Ich werde Aerospike Cluster in Kubernetes betreiben. und die Konfigurationsdateien benötigen eine eigene IP-Adresse. Und ich versuche, den Hostnamen mit confd festzulegen. Ich würde die Umgebungsvariable verwenden, wenn sie gesetzt wäre.
quelle
printenv | grep '10.254.24.167'
nichts außer der benutzerdefinierten Variablen MY_POD_IP zurückgegeben wird. Wie auch immer, nehmen Sie meine Stimme, Sir :)status.hostIP
?Einige Klarstellungen (nicht wirklich eine Antwort)
In Kubernetes wird jedem Pod eine IP-Adresse zugewiesen, und jedem Container im Pod wird dieselbe IP-Adresse zugewiesen. Wie Alex Robinson in seiner Antwort feststellte , können Sie also einfach
hostname -i
in Ihrem Container die Pod-IP-Adresse abrufen.Ich habe mit einem Pod getestet, auf dem zwei dumme Container ausgeführt werden, und tatsächlich
hostname -i
wurde in beiden Containern dieselbe IP-Adresse ausgegeben. Darüber hinaus entsprach diese IP derjenigen, diekubectl describe pod
von außen erhalten wurde, was die gesamte IMO validiert.Die Antwort von PiersyP erscheint mir jedoch sauberer.
Quellen
Aus kubernetes docs :
Ein weiteres Stück aus kubernetes docs :
quelle
kubectl describe pods <name of pod>
gibt Ihnen einige Informationen einschließlich der IPquelle
kubectl
nicht verfügbar ist.Dieser Befehl gibt Ihnen eine IP zurück
quelle
kubectl
.Die IP-Adresse des Containers sollte innerhalb seines Netzwerk-Namespace ordnungsgemäß konfiguriert sein, damit jedes der Standard-Linux-Tools sie erhalten kann. Versuchen Sie zum Beispiel
ifconfig
,ip addr show
,hostname -I
usw. von einem angeschlossenen Schale innerhalb eines Ihrer Container um es zu testen.quelle
Du könntest benutzen
Das basiert auf dem, was @mibbit vorgeschlagen hat.
Dies berücksichtigt folgende Tatsachen:
kubectl
wurde manuell in den Container gelegt (möglicherweise als das Bild erstellt wurde)/var/run/secrets/kubernetes.io/serviceaccount
im Container, beschriebenquelle
grep
zused
:kubectl describe pod $POD | sed -nE '/IP/s/IP:[[:space:]]+//p'
(aber awk ist besser dafür als sed)Noch einfacher zu merken als der
sed
Ansatz ist zu verwendenawk
.Hier ist ein Beispiel, das Sie auf Ihrem lokalen Computer ausführen können:
Die IP selbst befindet sich daher in Spalte 2 der Ausgabe
$2
.quelle
but how can I acquire the IP address from a container in the Pod?
Sie davon ausgehen, dass die betreffende Person Zugriffkubectl
auf den Pod selbst hat.kubectl describe pod $POD | awk '/IP/{print $2}'
In einigen Fällen funktioniert das programmgesteuerte Lesen der lokalen IP-Adresse (von Netzwerkschnittstellen) aus dem Inneren des Containers auch, anstatt sich auf die Abwärts-API zu verlassen.
Zum Beispiel in Golang: https://stackoverflow.com/a/31551220/6247478
quelle
Geben Sie eine Liste der Pods mit Name, Status, IP, Knoten ...
quelle