Kubernetes memberikan alamat IP untuk setiap container, tetapi bagaimana saya bisa mendapatkan alamat IP dari container di Pod? Saya tidak dapat menemukan jalan dari dokumentasi.
Sunting: Saya akan menjalankan cluster Aerospike di Kubernetes. dan file konfigurasi membutuhkan alamat IP-nya sendiri. Dan saya mencoba menggunakan confd untuk menyetel nama host. Saya akan menggunakan variabel lingkungan jika sudah diatur.
sumber
printenv | grep '10.254.24.167'
tidak mengembalikan apa pun kecuali variabel yang ditentukan pengguna MY_POD_IP. Pokoknya, ambil suaraku Pak :)status.hostIP
?Beberapa klarifikasi (bukan jawaban yang sebenarnya)
Di kubernetes, setiap pod diberi alamat IP, dan setiap container di pod diberi alamat IP yang sama. Jadi, seperti yang dinyatakan Alex Robinson dalam jawabannya , Anda bisa menggunakan
hostname -i
di dalam container Anda untuk mendapatkan alamat IP pod.Saya menguji dengan pod yang menjalankan dua kontainer bodoh, dan memang
hostname -i
mengeluarkan alamat IP yang sama di dalam kedua kontainer. Selain itu, IP itu setara dengan yang diperoleh menggunakankubectl describe pod
dari luar, yang memvalidasi semuanya IMO.Namun, jawaban PiersyP tampaknya lebih bersih bagi saya.
Sumber
Dari kubernetes docs :
Bagian lain dari kubernetes docs :
sumber
kubectl describe pods <name of pod>
akan memberi Anda beberapa informasi termasuk IPsumber
kubectl
tidak tersedia.Perintah ini akan mengembalikan Anda IP
sumber
kubectl
.Alamat IP penampung harus dikonfigurasi dengan benar di dalam namespace jaringannya, sehingga alat linux standar mana pun bisa mendapatkannya. Misalnya, mencoba
ifconfig
,ip addr show
,hostname -I
, dll dari shell yang melekat dalam salah satu wadah untuk menguji itu.sumber
Anda bisa menggunakan
yang didasarkan pada apa yang disarankan @mibbit.
Ini memperhitungkan fakta-fakta berikut:
kubectl
ditempatkan secara manual di wadah (mungkin saat gambar dibuat)/var/run/secrets/kubernetes.io/serviceaccount
di containersumber
grep
kesed
:kubectl describe pod $POD | sed -nE '/IP/s/IP:[[:space:]]+//p'
(tapi awk lebih baik untuk ini daripada sed)Bahkan lebih sederhana untuk diingat daripada
sed
pendekatan yang digunakanawk
.Berikut ini contohnya, yang dapat Anda jalankan di komputer lokal Anda:
Oleh karena itu, IP itu sendiri ada di kolom 2 output
$2
.sumber
but how can I acquire the IP address from a container in the Pod?
Anda menganggap orang tersebut memiliki akses kekubectl
pod itu sendiri.kubectl describe pod $POD | awk '/IP/{print $2}'
Dalam beberapa kasus, alih-alih mengandalkan API ke bawah, membaca secara terprogram alamat IP lokal (dari antarmuka jaringan) dari dalam penampung juga berfungsi.
Misalnya, di golang: https://stackoverflow.com/a/31551220/6247478
sumber
Memberi Anda daftar pod dengan nama, status, ip, node ...
sumber