Kubernetes attribue une adresse IP à chaque conteneur, mais comment puis-je acquérir l'adresse IP d'un conteneur dans le pod? Je n'ai pas pu trouver le chemin des documentations.
Edit: Je vais exécuter le cluster Aerospike dans Kubernetes. et les fichiers de configuration ont besoin de sa propre adresse IP. Et j'essaye d'utiliser confd pour définir le nom d'hôte. J'utiliserais la variable d'environnement si elle était définie.
la source
printenv | grep '10.254.24.167'
ne renvoie rien d'autre que la variable définie par l'utilisateur MY_POD_IP. Quoi qu'il en soit, prenez mon vote monsieur :)status.hostIP
?Quelques clarifications (pas vraiment une réponse)
Dans kubernetes, chaque pod se voit attribuer une adresse IP et chaque conteneur du pod se voit attribuer la même adresse IP. Ainsi, comme Alex Robinson l'a déclaré dans sa réponse , vous pouvez simplement utiliser l'
hostname -i
intérieur de votre conteneur pour obtenir l'adresse IP du pod.J'ai testé avec un pod exécutant deux conteneurs stupides, et je sortais en effet
hostname -i
la même adresse IP dans les deux conteneurs. En outre, cette IP était équivalente à celle obtenue en utilisantkubectl describe pod
de l'extérieur, qui valide le tout IMO.Cependant, la réponse de PiersyP me semble plus claire.
Sources
À partir de la documentation Kubernetes :
Un autre élément de la documentation Kubernetes :
la source
kubectl describe pods <name of pod>
vous donnera des informations dont l'adresse IPla source
kubectl
n'est pas disponible.Cette commande vous retournera une adresse IP
la source
kubectl
.L'adresse IP du conteneur doit être correctement configurée à l'intérieur de son espace de noms réseau, afin que tous les outils Linux standard puissent l'obtenir. Par exemple, essayer
ifconfig
,ip addr show
,hostname -I
, etc. à partir d' une enveloppe attachée à l' intérieur de l' un de vos conteneurs pour le tester.la source
Vous pourriez utiliser
qui est basé sur ce que @mibbit a suggéré.
Cela prend en compte les faits suivants:
kubectl
a été placé manuellement dans le conteneur (éventuellement lors de la création de l'image)/var/run/secrets/kubernetes.io/serviceaccount
à- dire dans le conteneurla source
grep
tosed
:kubectl describe pod $POD | sed -nE '/IP/s/IP:[[:space:]]+//p'
(mais awk est meilleur pour ça que sed)Encore plus simple à retenir que l'
sed
approche est à utiliserawk
.Voici un exemple que vous pouvez exécuter sur votre machine locale:
L'adresse IP elle-même est sur la colonne 2 de la sortie, par conséquent
$2
.la source
but how can I acquire the IP address from a container in the Pod?
vous supposez que la personne en question a accès aukubectl
module lui-même.kubectl describe pod $POD | awk '/IP/{print $2}'
Dans certains cas, au lieu de s'appuyer sur une API descendante, la lecture par programme de l'adresse IP locale (à partir des interfaces réseau) depuis l'intérieur du conteneur fonctionne également.
Par exemple, dans golang: https://stackoverflow.com/a/31551220/6247478
la source
Donnez-vous une liste de pods avec nom, statut, ip, nœud ...
la source