ฉันเป็นมือใหม่ของ Kubernetes และติดอยู่ที่ส่วนเครือข่าย
Kubernetes เอกสาร:
มีหลายวิธีในการเผยแพร่บริการ:
- NodePort เปิดเผยบริการบน IP ของโหนดแต่ละรายการที่พอร์ตคงที่ (NodePort)
- Load Balancer เปิดเผยบริการภายนอกโดยใช้ load balancer ของผู้ให้บริการคลาวด์ บริการ NodePort และ ClusterIP ซึ่งเส้นทางโหลดบาลานเซอร์ภายนอกจะถูกสร้างขึ้นโดยอัตโนมัติ
จากความเข้าใจของฉัน อ็อบเจ็กต์บริการ Kubernetes เป็นนามธรรมของเลเยอร์แบบลอจิคัล ซึ่งใช้งานผ่าน Kube Proxy, ตาราง IP, IPVS และอื่นๆ
บริการนี้แตกต่างจากอินสแตนซ์ EC2 และ Load Balancer ซึ่งมีอยู่จริงและสามารถเข้าถึงได้
ต่อไปนี้ แผนภาพ แสดงวิธีการทำงานของบริการ load balancer แต่ไม่ได้อธิบายว่า Elastic load balancer เข้าถึงบริการ Kubernetes ได้อย่างไร
คำถามที่ 1: Cloud-Native Elastic Load Balancer (ELB) เข้าถึงการรับส่งข้อมูลไปยังบริการได้อย่างไร
ฉันถือว่าบริการของ โหลดบาลานเซอร์
ประเภทคล้ายกับบริการของ โหนดพอร์ต
พิมพ์ใต้ฝากระโปรง ทั้งคู่ใช้ประโยชน์จาก NodePort ข้อแตกต่างเพียงอย่างเดียวคือ สำหรับบริการของ โหลดบาลานเซอร์
แบบคลาวด์จะช่วยเราดูแล NodePort และกลุ่มเป้าหมายแบบไม่ต้องแมนนวลจัดการเอง
การจราจร
â
โหลดบาลานเซอร์
â
กลุ่มเป้าหมาย
â
พอร์ตโหนด VM (IP + พอร์ต)
â
IP คลัสเตอร์ของบริการ
â
พร็อกซี Kube (IPVS)
â
พ็อดของการบริการ
สมมติฐานของฉันถูกต้องหรือไม่?
คำถามที่ 2: หากเราปิดใช้งาน NodePort ของ VM แล้ว ELB จะกำหนดเส้นทางไปยังบริการได้อย่างไร
ใน Kubernetes V1.20.0, Kubernetes ให้พารามิเตอร์ใหม่ จัดสรร LoadBalancerNodePort
และอนุญาตให้ผู้ใช้ปิดการใช้งาน NodePort ของ VM
KEP-1864: เลือกปิดใช้งาน Node Port สำหรับ Service Type=LoadBalancer
หากเราปิดการใช้งาน VM โหนดพอร์ต
, ELB เข้าถึงบริการเชิงตรรกะได้อย่างไร
คุณช่วยอธิบายรายละเอียดเพิ่มเติมได้ไหม เป็นการดีกว่าที่จะครอบคลุมเส้นทางแพ็กเก็ต TCP/IP, ตาราง IP, IPVS และอื่นๆ