สิ่งที่ฉันนำเสนอในที่นี้คือเวอร์ชันที่เรียบง่ายของการตั้งค่าและ ไวยากรณ์ไม่ถูกต้อง.
ฉันมีรายชื่อ "ตัวแทน" ระดับสูงที่ฉันต้องการปรับใช้เป็นพ็อดบนคลัสเตอร์ kubernetes
บางโหนดในคลัสเตอร์นี้มีฮาร์ดแวร์พิเศษ แต่บางโหนดไม่มี แต่พ็อดทั้งหมดควรใช้คอนเทนเนอร์เดียวกัน
อาจดูเหมือน (อีกครั้ง: ไวยากรณ์ผิด):
ตัวแทน1 wlan
...
ตัวแทน 8 wlan
ตัวแทน 9 wlan rs232.1
ตัวแทน10 wlan rs232.2
ฉันตั้งค่าการปรับใช้ที่มีลักษณะประมาณนั้น (ไวยากรณ์ไม่ถูกต้อง):
การปรับใช้ (โหนดมาตรฐาน)
แบบจำลอง: 8
---
การปรับใช้ (rs232, เทอร์มินัล 1)
แบบจำลอง: 1
ตัวเลือกโหนด:
rs232=1
สภาพแวดล้อม:
rs232=1 (เนื่องจากไม่สามารถผ่าน nodeSelector ได้อย่างดี)
---
การปรับใช้ (rs232, เทอร์มินัล 2)
แบบจำลอง: 1
ตัวเลือกโหนด:
rs232=2
สภาพแวดล้อม:
rs232=2
ฉันต้องการให้เอเจนต์แต่ละคนเริ่มต้นและรับข้อมูลประจำตัวเดียวจากรายการ ในขณะที่มีฮาร์ดแวร์ที่ตรงกัน
เช่นเดียวกับพ็อดที่จะพูดคุยกับบริการกระจายบทบาทเช่นนั้น:
pod - สวัสดี ฉันชื่อ pod/container-xyz และฉันมี env/label/annotation rs232=2
บริการ - สวัสดี ตอนนี้คุณคือตัวแทน10
pod - ตกลง ฉันจะทำงานของ agent10 ให้
(บริการ - เจ๋ง ฉันจะเพิ่ม agent10 เป็นนามแฝงให้คุณในคลัสเตอร์ DNS) <- นั่นจะเป็นคำถามต่อไปของฉัน
สิ่งเดียวกันสำหรับเอเจนต์ที่ไม่มีฮาร์ดแวร์พิเศษ: บริการนี้ให้เอเจนต์หนึ่งบทบาทต่อเอเจนต์
ฉันลองบางอย่างกับ StatefulSet แต่นั่นไม่พอดีกับการเรียกเก็บเงิน (เนื่องจาก nodeSelector ที่หลากหลายและเริ่มต้นช้ามาก)
ฉันเริ่มคิดเกี่ยวกับพ็อดเซิร์ฟเวอร์ที่ใช้งานด้วยตนเองโดยเฉพาะซึ่งจะเก็บรายชื่อตัวแทนของฉันและให้เช่ากับฮาร์ดแวร์ที่ตรงกัน (คล้ายกับเซิร์ฟเวอร์ dhcp) แต่ฉันค่อนข้างแน่ใจว่าไม่ใช่ฉันคนเดียวที่มีปัญหานี้และต้องมี ทางออกที่นั่น ฉันมองไปที่ Zookeeper อย่างรวดเร็ว แต่ฉันคิดว่าไม่ใช่สำหรับฉัน ฉันอาจไม่พบวิธีแก้ปัญหาเพราะคำศัพท์ของฉันไม่ใช่คำศัพท์ที่ถูกต้อง
มีใครมีความคิดที่ดี? ฉันกำลังไปในทิศทางที่ถูกต้องหรือไม่?