โพสต์คำตอบ wiki ชุมชนนี้เพื่อกำหนดแนวทางพื้นฐานสำหรับคำถามนี้มากกว่าที่จะให้คำตอบที่ชัดเจน
อย่าลังเลที่จะแก้ไขและขยาย
คุณสามารถเปิดเผยแอปพลิเคชันของคุณด้วย บริการ. มีตัวเลือกสองสามตัวที่แต่ละตัวเลือกแตกต่างจากตัวเลือกอื่น:
คลัสเตอร์ไอพี: เปิดเผยบริการบน IP ภายในคลัสเตอร์ การเลือกค่านี้จะทำให้บริการสามารถเข้าถึงได้จากภายในคลัสเตอร์เท่านั้น นี่คือค่าเริ่มต้น ประเภทบริการ.
- โหนดพอร์ต: เปิดเผยบริการบน IP ของแต่ละโหนดที่พอร์ตแบบคงที่ (the
โหนดพอร์ต). ก คลัสเตอร์ไอพี บริการซึ่งการ โหนดพอร์ต เส้นทางบริการจะถูกสร้างขึ้นโดยอัตโนมัติ คุณจะสามารถติดต่อ โหนดพอร์ต บริการจากภายนอกคลัสเตอร์โดยการร้องขอ <NodeIP>:<NodePort>.
- โหลดบาลานเซอร์: เปิดเผยบริการภายนอกโดยใช้โหลดบาลานซ์ของผู้ให้บริการระบบคลาวด์
โหนดพอร์ต และ คลัสเตอร์ไอพี บริการซึ่งกำหนดเส้นทางโหลดบาลานเซอร์ภายนอกจะถูกสร้างขึ้นโดยอัตโนมัติ
- ชื่อภายนอก: แมปบริการกับเนื้อหาของ
ชื่อภายนอก ฟิลด์ (เช่น foo.bar.example.com) โดยส่งคืน a CNAME บันทึกด้วยค่าของมัน ไม่มีการตั้งค่าพร็อกซีใด ๆ
-- Kubernetes.io: เอกสาร: แนวคิด: บริการเครือข่าย: บริการ: ประเภทบริการสิ่งพิมพ์
เอกสารประกอบเฉพาะสำหรับการเปิดเผยแอป เครื่องยนต์ Google Kubernetes ได้ที่นี่:
โดยเน้นเฉพาะบางประเด็นที่รวมอยู่ในคำถาม:
ฉันสามารถใช้บริการ NodePort และสูญเสียการควบคุมพอร์ตที่ไคลเอนต์ต้องการเชื่อมต่อ นั่นเป็นปัญหาเนื่องจากเซิร์ฟเวอร์ลงทะเบียนตัวเองด้วยรายชื่อเซิร์ฟเวอร์
คุณสามารถระบุ โหนดพอร์ต ท่าเรือใน บริการ YAML (เช่น โหนดพอร์ต: 32137 หรือ โหนดพอร์ต: 30911).
คุณสามารถกำหนดค่าแอปพลิเคชันของคุณให้รับฟังบนพอร์ตเดียวกันกับ โหนดพอร์ต:
- แอปพลิเคชันกำลังฟังพอร์ต
30000
- บริการโดยใช้ก
โหนดพอร์ต กับ ท่า:30000 (ไคลเอ็นต์/ผู้ใช้ควรเชื่อมต่อกับพอร์ตนี้) และ targetPort:30000. ในกรณีนั้นจะไม่มีการเปลี่ยนแปลงพอร์ต
ข้อสังเกต!
โดยค่าเริ่มต้น โหนดพอร์ต ช่วงพอร์ตถูกบล็อกโดย GCP ไฟร์วอลล์ คุณจะต้องสร้างกฎ (หรือชุดของกฎ) ที่จะอนุญาต
ฉันสามารถใช้เครือข่ายโฮสต์ได้ หากข้อมูลของฉันถูกต้อง นั่นต้องใช้คอนเทนเนอร์พิเศษ ซึ่งไม่ดีอย่างแน่นอน
ฉันจะแนะนำไม่ให้ใช้คอนเทนเนอร์ที่มีสิทธิพิเศษเว้นแต่จะมีเหตุผลที่ดีอยู่เบื้องหลัง อ้างถึงเอกสารอย่างเป็นทางการ:
นโยบาย Privileged เปิดโดยเจตนาและไม่ถูกจำกัดโดยสิ้นเชิง นโยบายประเภทนี้มักมุ่งเป้าไปที่ปริมาณงานระดับระบบและโครงสร้างพื้นฐานที่จัดการโดยผู้ใช้ที่ได้รับสิทธิพิเศษและเชื่อถือได้
-- Kubernetes.io: เอกสาร: แนวคิด: ความปลอดภัย: มาตรฐานความปลอดภัยของ Pod: สิทธิ์
สามารถกำหนดค่าพอร์ตได้ ตราบเท่าที่ฉันรู้ว่าพอร์ตใดที่เซิร์ฟเวอร์ต้องใช้งานก่อนที่พ็อดจะเริ่มทำงาน
เพราะคุณจะมีโสดมากมาย พ็อด (แต่ละอันแยกกัน การปรับใช้) คุณสามารถกำหนดพารามิเตอร์แต่ละตัวได้ สิ่งที่ฉันหมายถึงคือคุณสามารถสร้างเทมเพลตและแก้ไขเฉพาะส่วนของรายการของคุณ (เช่น พอร์ต ตัวแปร env เป็นต้น)
คุณสามารถส่งตัวแปรสภาพแวดล้อมไปยังของคุณ พ็อด เพื่อให้สามารถใช้เป็นพารามิเตอร์ในคำสั่งของคุณ คุณยังสามารถแก้ไขคำสั่งที่ พ็อด เริ่มต้นด้วย