โพสต์คำตอบ 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 เป็นต้น)
คุณสามารถส่งตัวแปรสภาพแวดล้อมไปยังของคุณ พ็อด
เพื่อให้สามารถใช้เป็นพารามิเตอร์ในคำสั่งของคุณ คุณยังสามารถแก้ไขคำสั่งที่ พ็อด
เริ่มต้นด้วย