Một Nút Cổng
phân bổ một IP bên trong cụm, do đó cần phải chuyển tiếp.
Để chuyển cổng nội bộ đó sang cổng bên ngoài, bạn cần thay đổi spec.type
đến Cân bằng tải
.
Tôi thấy thuật ngữ "LoadBalancer" gây nhầm lẫn vì nó xung đột với thuật ngữ được sử dụng bởi các dịch vụ như AWS cho các bộ cân bằng tải của riêng họ (ví dụ: ELB ở Amazon). Trong Kubernetes một Cân bằng tải
dịch vụ sẽ cân bằng tải giữa bất kỳ nhóm nào phù hợp với tiêu chí bạn chỉ định hoặc trong trường hợp này chỉ là tiêu chí.
Mẹo nhỏ là nếu bạn đang ở trong môi trường có bộ cân bằng tải thực thì dịch vụ sẽ tự động ánh xạ tới bộ cân bằng tải bên ngoài để bạn có thể truy cập dịch vụ bằng IP thực.
Điều này cũng có thể được thực hiện với một xâm nhập
nhưng điều đó chỉ có thể được sử dụng cho các dịch vụ http và https với bộ điều khiển xâm nhập, ví dụ như NGINX. Vì MQTT là một giao thức khác nên dịch vụ được sử dụng để truyền kết nối.
Trong trường hợp của tôi, tôi không sử dụng dịch vụ đám mây nên không có bộ cân bằng tải như ELB được cung cấp theo mặc định - bạn phải thêm bộ cân bằng tải của riêng mình (xem ý tôi muốn nói về sự khó hiểu). Tôi đã cài đặt bộ cân bằng tải MetalLB cục bộ trong cụm và cổng xuất hiện một cách kỳ diệu ở một trong các nhóm IP cục bộ mà tôi đã phân bổ.
Từ đó, bạn chỉ cần thiết lập DNS (có lẽ trong bộ định tuyến của bạn) sao cho tên bạn muốn tương ứng với IP được phân bổ. Nhà môi giới của tôi bây giờ xuất hiện trên mqtt.local
trên cảng 1883
Đây là yaml phù hợp với tôi:
apiVersion: ứng dụng/v1
loại: Triển khai
metadata:
tên: muỗi
không gian tên: mosquitto
thông số kỹ thuật:
bản sao: 1
bộ chọn:
trận đấuNhãn:
tên: muỗi
mẫu:
metadata:
nhãn:
tên: muỗi
thông số kỹ thuật:
hộp đựng:
- tên: con muỗi
hình ảnh: nhật thực-mosquitto:2.0.12
cổng:
- cảng container: 1883
khối lượngMount:
- tên: mosquitto-config
mountPath: /mosquitto/config/mosquitto.conf
Đường dẫn con: mosquitto.conf
khối lượng:
- tên: mosquitto-config
bản đồ cấu hình:
tên: mosquitto-configmap
---
phiên bản api: v1
loại: Bản đồ cấu hình
metadata:
tên: mosquitto-configmap
không gian tên: mosquitto
dữ liệu:
mosquitto.conf: |-
người nghe 1883
allow_anonymous đúng
---
phiên bản api: v1
loại: Dịch vụ
metadata:
tên: dịch vụ mosquitto
không gian tên: mosquitto
chú thích: # <- Sử dụng nhóm IP nào
metallb.universe.tf/address-pool: lb-static-ips
thông số kỹ thuật:
gõ: LoadBalancer # <- Đã thay đổi
bộ chọn:
tên: muỗi
cổng:
- tên: con muỗi
giao thức: TCP
cảng: 1883
cổng mục tiêu: 1883
# nodePort: 30007 <--- LoadBalancer sẽ tìm ra điều này
...và đây là YAML cho metalLB:
phiên bản api: v1
loại: Bản đồ cấu hình
metadata:
không gian tên: metallb-system
tên: cấu hình
dữ liệu:
cấu hình: |
nhóm địa chỉ:
- tên: http # một địa chỉ IP cho máy ảo http
giao thức: lớp2
địa chỉ:
- 10.3.3.152/32
- tên: lb-static-ips # địa chỉ IP cho dịch vụ
giao thức: lớp2
địa chỉ:
- 10.3.3.153-10.3.3.160