หากคุณเป็นเหมือนคนส่วนใหญ่ คุณอาจใช้ทรัพยากรที่ทำงานนอกคลัสเตอร์ของคุณ บางทีคุณอาจใช้ Taleo API เพื่อส่งข้อความหรือวิเคราะห์รูปภาพโดยใช้ Google Cloud Vision API
หากคุณใช้ตำแหน่งข้อมูลคำขอฝั่งเซิร์ฟเวอร์เดียวกันในทุกสภาพแวดล้อมของคุณ และไม่ได้วางแผนที่จะย้ายเซิร์ฟเวอร์ของคุณไปยัง Kubernetes ก็เป็นเรื่องปกติที่จะมีตำแหน่งข้อมูลบริการในโค้ดของคุณ อย่างไรก็ตาม ยังมีสถานการณ์อื่นๆ อีกมากมายสำหรับการพัฒนากิจกรรม ในซีรีส์ Kubernetes Best Practices นี้ คุณจะได้เรียนรู้วิธีใช้กลไกในตัวของ Kubernetes เพื่อค้นหาบริการทั้งภายในและภายนอกคลัสเตอร์
ตัวอย่างของบริการภายนอกทั่วไปคือฐานข้อมูลที่ทำงานนอกคลัสเตอร์ Kubernetes ต่างจากฐานข้อมูลระบบคลาวด์เช่น Google Cloud Data Store หรือ Google Cloud Spanner ซึ่งใช้ปลายทางเดียวสำหรับการเข้าถึงทั้งหมด ฐานข้อมูลส่วนใหญ่มีปลายทางแยกกันสำหรับสถานการณ์ที่แตกต่างกัน
แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ฐานข้อมูลแบบดั้งเดิม เช่น MySQL และ MongoDB มักจะหมายความว่าคุณเชื่อมต่อกับส่วนประกอบที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน คุณสามารถมีเครื่องจักรขนาดใหญ่สำหรับข้อมูลการผลิต และเครื่องขนาดเล็กสำหรับสภาพแวดล้อมการทดสอบ แต่ละรายการจะมีที่อยู่ IP หรือชื่อโดเมนของตัวเอง แต่คุณอาจไม่ต้องการเปลี่ยนรหัสของคุณเมื่อย้ายจากสภาพแวดล้อมหนึ่งไปอีกสภาพแวดล้อมหนึ่ง ดังนั้น แทนที่จะฮาร์ดโค้ดที่อยู่เหล่านี้ คุณสามารถใช้การค้นหาบริการภายนอกบน DNS ในตัวของ Kubernetes ได้ในลักษณะเดียวกับบริการ Kubernetes ดั้งเดิม

สมมติว่าคุณใช้งานฐานข้อมูล MongoDB บน Google Compute Engine คุณจะติดอยู่ในโลกไฮบริดนี้จนกว่าคุณจะสามารถถ่ายโอนไปยังคลัสเตอร์ได้
โชคดีที่คุณสามารถใช้บริการ Kubernetes แบบคงที่เพื่อทำให้ชีวิตของคุณง่ายขึ้นนิดหน่อย ในตัวอย่างนี้ ฉันสร้างเซิร์ฟเวอร์ MongoDB โดยใช้ Google Cloud Launcher เนื่องจากสร้างขึ้นบนเครือข่ายเดียวกัน (หรือ VPC คลัสเตอร์ Kubernetes) จึงเข้าถึงได้โดยใช้ที่อยู่ IP ภายในที่มีประสิทธิภาพสูง

นี่เป็นการตั้งค่าเริ่มต้นบน Google Cloud คุณจึงไม่ต้องกำหนดค่าใดๆ เมื่อคุณมีที่อยู่ IP แล้ว ขั้นตอนแรกคือการสร้างบริการ คุณอาจสังเกตเห็นว่าไม่มีตัวเลือกพ็อดสำหรับบริการนี้ นั่นคือเราสร้างบริการที่จะไม่รู้ว่าจะส่งทราฟฟิกไปที่ใด สิ่งนี้จะช่วยให้คุณสร้างออบเจ็กต์ปลายทางที่จะรับการรับส่งข้อมูลจากบริการนี้ได้ด้วยตนเอง

ตัวอย่างโค้ดต่อไปนี้แสดงให้เห็นว่าจุดสิ้นสุดกำหนดที่อยู่ IP สำหรับฐานข้อมูลโดยใช้ชื่อ mongo เดียวกันกับบริการ

Kubernetes จะใช้ที่อยู่ IP ทั้งหมดเพื่อค้นหาตำแหน่งข้อมูลราวกับว่าเป็น Kubernetes Pod ทั่วไป ดังนั้นตอนนี้คุณจึงสามารถเข้าถึงฐานข้อมูลด้วยสตริงการเชื่อมต่อแบบธรรมดาไปยังชื่อข้างต้น mongodb://mongo ไม่จำเป็นต้องใช้ที่อยู่ IP ในโค้ดของคุณเลย
หากที่อยู่ IP มีการเปลี่ยนแปลงในอนาคต คุณสามารถอัปเดตตำแหน่งข้อมูลของคุณด้วยที่อยู่ IP ใหม่ได้ และแอปพลิเคชันของคุณไม่จำเป็นต้องแก้ไขด้วยวิธีใดเพิ่มเติม
หากคุณใช้ฐานข้อมูลที่โฮสต์บนโฮสต์ของบริษัทอื่น อาจเป็นไปได้ว่าเจ้าของโฮสต์ได้จัดเตรียม URI ตัวระบุทรัพยากรแบบเดียวกันให้คุณเพื่อเชื่อมต่อ ดังนั้นหากคุณได้รับที่อยู่ IP คุณสามารถใช้วิธีก่อนหน้าได้ ตัวอย่างนี้แสดงให้เห็นว่าฉันมีฐานข้อมูล MongoDB สองฐานข้อมูลที่โฮสต์บนโฮสต์ mLab

หนึ่งคือฐานข้อมูลนักพัฒนาและอีกอันคือฐานข้อมูลการผลิต สตริงการเชื่อมต่อสำหรับฐานข้อมูลเหล่านี้มีลักษณะดังนี้ - mLab มอบ URI แบบไดนามิกและพอร์ตแบบไดนามิกให้กับคุณ อย่างที่คุณเห็นมันแตกต่างกัน

หากต้องการสรุปสิ่งนี้ ลองใช้ Kubernetes และเชื่อมต่อกับฐานข้อมูลนักพัฒนา คุณสามารถสร้างชื่อบริการ Kubernetes ภายนอกได้ ซึ่งจะให้บริการแบบคงที่ซึ่งจะส่งต่อการรับส่งข้อมูลไปยังบริการภายนอก

บริการนี้จะทำการส่งต่อ CNAME อย่างง่ายในระดับเคอร์เนลโดยมีผลกระทบต่อประสิทธิภาพน้อยที่สุด ด้วยเหตุนี้คุณจึงสามารถใช้สตริงการเชื่อมต่อที่ง่ายกว่าได้
![]()
แต่เนื่องจากชื่อภายนอกใช้การส่งต่อ CNAME จึงไม่สามารถทำการส่งต่อพอร์ตได้ ดังนั้นโซลูชันนี้ใช้ได้กับพอร์ตแบบคงที่เท่านั้น และไม่สามารถใช้กับพอร์ตแบบไดนามิกได้ แต่ mLab Free Tier จะให้หมายเลขพอร์ตไดนามิกแก่ผู้ใช้ตามค่าเริ่มต้น และคุณไม่สามารถเปลี่ยนแปลงได้ ซึ่งหมายความว่าคุณต้องการบรรทัดคำสั่งการเชื่อมต่อที่แตกต่างกันสำหรับ dev และ prod สิ่งที่ไม่ดีก็คือคุณจะต้องฮาร์ดโค้ดหมายเลขพอร์ต แล้วคุณจะทำให้การส่งต่อพอร์ตทำงานได้อย่างไร?
ขั้นตอนแรกคือการรับที่อยู่ IP จาก URI หากคุณเรียกใช้ nslookup ชื่อโฮสต์ หรือ ping URI คุณจะได้รับที่อยู่ IP ของฐานข้อมูล หากบริการส่งคืนที่อยู่ IP หลายรายการให้กับคุณ ที่อยู่เหล่านี้ทั้งหมดจะสามารถนำมาใช้ที่จุดสิ้นสุดของออบเจ็กต์ได้

สิ่งหนึ่งที่ควรจำไว้ก็คือ IP URI สามารถเปลี่ยนแปลงได้โดยไม่ต้องแจ้งให้ทราบ ทำให้ค่อนข้างมีความเสี่ยงที่จะใช้ในผลิตภัณฑ์ เมื่อใช้ที่อยู่ IP นี้ คุณสามารถเชื่อมต่อกับฐานข้อมูลระยะไกลโดยไม่ต้องระบุพอร์ต ดังนั้นบริการ Kubernetes จึงทำการส่งต่อพอร์ตค่อนข้างโปร่งใส

การแมปหรือการแมปทรัพยากรภายนอกกับทรัพยากรภายใน ช่วยให้คุณมีความยืดหยุ่นในการใช้บริการเหล่านี้ภายในคลัสเตอร์ในอนาคต ในขณะเดียวกันก็ลดความพยายามในการรีแฟคเตอร์ให้เหลือน้อยที่สุด นอกจากนี้ยังทำให้ง่ายต่อการจัดการและให้ข้อมูลเชิงลึกเกี่ยวกับบริการภายนอกที่บริษัทของคุณใช้
ต่อไปในเร็วๆ นี้...

โฆษณาบางส่วน🙂
ขอบคุณที่อยู่กับเรา คุณชอบบทความของเราหรือไม่? ต้องการดูเนื้อหาที่น่าสนใจเพิ่มเติมหรือไม่ สนับสนุนเราโดยการสั่งซื้อหรือแนะนำให้เพื่อน , อะนาล็อกที่ไม่เหมือนใครของเซิร์ฟเวอร์ระดับเริ่มต้นซึ่งเราคิดค้นขึ้นเพื่อคุณ: (ใช้ได้กับ RAID1 และ RAID10 สูงสุด 24 คอร์ และสูงสุด 40GB DDR4)
Dell R730xd ถูกกว่า 2 เท่าในศูนย์ข้อมูล Equinix Tier IV ในอัมสเตอร์ดัม? ที่นี่ที่เดียวเท่านั้น ในเนเธอร์แลนด์! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - จาก $99! อ่านเกี่ยวกับ
ที่มา: will.com
