คำชี้แจงบางอย่าง (ไม่ใช่คำตอบจริงๆ)
ใน kubernetes ทุกพ็อดจะได้รับการกำหนดที่อยู่ IP และทุกคอนเทนเนอร์ในพ็อดจะได้รับการกำหนดที่อยู่ IP เดียวกันนั้น ดังนั้นตามที่ Alex Robinson ระบุไว้ในคำตอบของเขาคุณสามารถใช้hostname -i
ภายในคอนเทนเนอร์ของคุณเพื่อรับที่อยู่ IP ของพ็อด
ฉันทดสอบด้วยพ็อดที่ใช้คอนเทนเนอร์ใบ้สองตัวและแน่นอนว่าhostname -i
กำลังส่งออกที่อยู่ IP เดียวกันภายในทั้งสองคอนเทนเนอร์ นอกจากนี้ IP นั้นเทียบเท่ากับ IP ที่ได้รับkubectl describe pod
จากภายนอกซึ่งตรวจสอบความถูกต้องของ IMO ทั้งหมด
อย่างไรก็ตามคำตอบของ PiersyPดูเหมือนจะสะอาดสำหรับฉันมากขึ้น
แหล่งที่มา
จากkubernetes docs :
แอปพลิเคชันในพ็อดทั้งหมดใช้เนมสเปซเครือข่ายเดียวกัน (IP และพื้นที่พอร์ตเดียวกัน) จึงสามารถ "ค้นหา" ซึ่งกันและกันและสื่อสารโดยใช้ localhost ด้วยเหตุนี้แอปพลิเคชันในพ็อดจึงต้องประสานการใช้งานพอร์ต แต่ละพ็อดมีที่อยู่ IP ในพื้นที่เครือข่ายที่ใช้ร่วมกันแบบแบนซึ่งมีการสื่อสารเต็มรูปแบบกับคอมพิวเตอร์และพ็อดอื่น ๆ ในเครือข่าย
อีกชิ้นจากkubernetes docs :
จนถึงตอนนี้เอกสารนี้ได้พูดถึงตู้คอนเทนเนอร์ ในความเป็นจริง Kubernetes ใช้ที่อยู่ IP ที่ขอบเขต Pod - คอนเทนเนอร์ภายใน Pod จะแชร์เนมสเปซเครือข่ายรวมถึงที่อยู่ IP ด้วย ซึ่งหมายความว่าคอนเทนเนอร์ภายใน Pod สามารถเข้าถึงพอร์ตของกันและกันบน localhost ได้
printenv | grep '10.254.24.167'
จะไม่ส่งคืนอะไรเลยยกเว้นตัวแปรที่ผู้ใช้กำหนดเอง MY_POD_IP ยังไงก็ใช้คะแนนของฉันนะ :)