ก โหนดพอร์ต
จัดสรร IP ที่อยู่ภายในคลัสเตอร์ ดังนั้นจึงจำเป็นต้องส่งต่อพอร์ต
ในการส่งพอร์ตภายในนั้นไปยังพอร์ตภายนอก คุณต้องเปลี่ยน ข้อมูลจำเพาะประเภท
ถึง โหลดบาลานเซอร์
.
ฉันพบว่าคำว่า "LoadBalancer" ทำให้เกิดความสับสนเนื่องจากขัดแย้งกับคำที่บริการต่างๆ เช่น AWS ใช้กับโหลดบาลานเซอร์ของตนเอง (เช่น ELB ใน Amazon) ใน Kubernetes โหลดบาลานเซอร์
บริการจะโหลดสมดุลระหว่างพ็อดใดๆ ที่ตรงกับเกณฑ์ที่คุณระบุ หรือในกรณีนี้เพียงพ็อดเดียว
เคล็ดลับคือ หากคุณอยู่ในสภาพแวดล้อมที่มีโหลดบาลานเซอร์จริง บริการจะจับคู่กับโหลดบาลานเซอร์ภายนอกโดยอัตโนมัติ เพื่อให้คุณสามารถเข้าถึงบริการด้วย IP จริง
นอกจากนี้ยังสามารถทำได้ด้วย ขาเข้า
แต่สามารถใช้ได้เฉพาะกับบริการ http และ https ที่มีตัวควบคุมขาเข้า เช่น NGINX เนื่องจาก MQTT เป็นโปรโตคอลที่แตกต่างกัน บริการจึงใช้เพื่อส่งผ่านการเชื่อมต่อ
ในกรณีของฉัน ฉันไม่ได้ใช้บริการระบบคลาวด์ ดังนั้นจึงไม่มีตัวจัดสรรภาระงานเช่น ELB ให้เป็นค่าเริ่มต้น คุณต้องเพิ่มของคุณเอง (ดูที่ฉันหมายถึงเกี่ยวกับความสับสน) ฉันติดตั้งตัวจัดสรรภาระงาน MetalLB ในคลัสเตอร์และพอร์ตปรากฏขึ้นอย่างน่าอัศจรรย์ในหนึ่งในพูลของ IP ในเครื่องที่ฉันจัดสรร
จากนั้นคุณเพียงแค่ต้องตั้งค่า DNS (ในเราเตอร์ของคุณ) เพื่อให้ชื่อที่คุณต้องการสอดคล้องกับ IP ที่จัดสรร ตอนนี้โบรกเกอร์ของฉันปรากฏบน mqtt.local
บนพอร์ต 1883
นี่คือ yaml ที่เหมาะกับฉัน:
apiVersion: แอป/v1
ประเภท: การปรับใช้
ข้อมูลเมตา:
ชื่อ: ยุง
เนมสเปซ: mosquitto
ข้อมูลจำเพาะ:
แบบจำลอง: 1
ตัวเลือก:
ป้ายกำกับการแข่งขัน:
ชื่อ: ยุง
แม่แบบ:
ข้อมูลเมตา:
ป้ายกำกับ:
ชื่อ: ยุง
ข้อมูลจำเพาะ:
ตู้คอนเทนเนอร์:
- ชื่อ: ยุง
ภาพ: eclipse-mosquitto:2.0.12
พอร์ต:
- พอร์ตคอนเทนเนอร์: 1883
ปริมาณการติดตั้ง:
- ชื่อ: mosquitto-config
mountPath: /mosquitto/config/mosquitto.conf
เส้นทางย่อย: mosquitto.conf
ปริมาณ:
- ชื่อ: mosquitto-config
configMap:
ชื่อ: mosquitto-configmap
---
api เวอร์ชัน: v1
ประเภท: ConfigMap
ข้อมูลเมตา:
ชื่อ: mosquitto-configmap
เนมสเปซ: mosquitto
ข้อมูล:
mosquitto.conf: |-
ผู้ฟัง 1883
allow_anonymous จริง
---
api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
ชื่อ: mosquitto-service
เนมสเปซ: mosquitto
คำอธิบายประกอบ: # <-- พูล IP ใดที่จะใช้
metallb.universe.tf/address-pool: lb-static-ips
ข้อมูลจำเพาะ:
ประเภท: LoadBalancer # <-- เปลี่ยนแล้ว
ตัวเลือก:
ชื่อ: ยุง
พอร์ต:
- ชื่อ: ยุง
โปรโตคอล: TCP
พอร์ต: 1883
พอร์ตเป้าหมาย: 1883
# nodePort: 30007 <--- LoadBalancer จะเข้าใจสิ่งนี้
...และนี่คือ YAML สำหรับ metalLB:
api เวอร์ชัน: v1
ประเภท: ConfigMap
ข้อมูลเมตา:
เนมสเปซ: ระบบโลหะ
ชื่อ: การกำหนดค่า
ข้อมูล:
การกำหนดค่า: |
กลุ่มที่อยู่:
- ชื่อ: http # หนึ่งที่อยู่ IP สำหรับโฮสต์ http เสมือน
โปรโตคอล: Layer2
ที่อยู่:
- 10.3.3.152/32
- ชื่อ: lb-static-ips # ที่อยู่ IP สำหรับบริการ
โปรโตคอล: Layer2
ที่อยู่:
- 10.3.3.153-10.3.3.160