无法在公共域上连接 Mosquitto 代理



我的Kubernetes上有一个Mosquitto Broker。我可以连接到私人网络中的Mosquitto Broker。它运行良好。但是当我们使用公共域(我们使用Sophos UTM 9(时,客户端无法连接到Mosquitto Broker。

我是Kubernetes的新手。这是mosquitto.yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
spec:
selector:
matchLabels:
app: mosquitto
replicas: 1
template:
metadata:
labels:
app: mosquitto
spec:
containers:
- name: mosquitto
image: eclipse-mosquitto:v1.16.10
resources:
limits:
cpu: "1"
memory: 2Gi
requests:
cpu: "1"
memory: 2Gi
imagePullPolicy: Always
ports:
- containerPort: 1883
---
apiVersion: v1
kind: Service
metadata:
name: mosquitto
spec:
externalIPs:
- xxx.xxx.xxx.xxx
type: ClusterIP
ports:
- name: mqtt
port: 1883
targetPort: 1883
protocol: TCP
selector:
app: mosquitto

我使用NodeJS来连接公共域。这个NodeJS代码是:

var mqtt = require('mqtt');
var client = mqtt.connect('mqtt://mydomain.com:1883');
client.on('connect', function () {
client.subscribe(topic)
console.log("Subscribed topic " + topic);
})

我想知道kubernetes或Sophos UTM 9有什么问题。我错过什么了吗?

我必须为Kubernetes上的Mosquito做些什么才能使用公共域?

我非常感激。

在测试了您的yaml文件后,我得出结论,您的配置几乎是正确的,我的意思是,因为:

  • 您正在使用的eclipse-mosquitto:v1.16.10图像不存在。你可以在这里查看所有可用的标签

因此,最可能的问题是您的pod可能没有运行。您可以通过运行下面的命令并检查列STATUS来检查它。

$ kubectl get pods -l=app=mosquitto
NAME                        READY   STATUS    RESTARTS   AGE
mosquitto-c9dc57d59-98l8r   1/1     Running   0          5m53s

这是对我有用的yaml。注意:出于测试目的,我已经从服务和部署中删除了externalIPresource limits,并替换了eclipse-mosquitto:1.6.10:的映像

apiVersion: apps/v1
kind: Deployment
metadata:
name: mosquitto
spec:
selector:
matchLabels:
app: mosquitto
replicas: 1
template:
metadata:
labels:
app: mosquitto
spec:
containers:
- name: mosquitto
image: eclipse-mosquitto:1.6.10
imagePullPolicy: Always
ports:
- containerPort: 1883
---
apiVersion: v1
kind: Service
metadata:
name: mosquitto
spec:
type: ClusterIP
ports:
- name: mqtt
port: 1883
targetPort: 1883
protocol: TCP
selector:
app: mosquitto

部署后,我使用dnsutil容器进行了测试(您可以在此处找到规范(:

kubectl exec dnsutils -- sh -c 'apk update && apk add mosquitto-clients'
kubectl exec dnsutils -- mosquitto_pub -h mosquitto -t 'test/topic' -m 'upvoteIt'

查看蚊子吊舱中的日志:

kubectl logs mosquitto-xxxxx 
1597829622: New client connected from 172.17.0.4 as mosqpub|88-dnsutils (p1, c1, k60).
1597829622: Client mosqpub|88-dnsutils disconnected.

如果你想在测试前看到消息,打开第二个终端并运行此命令来查看mosquitto服务器接收到的消息:

$ kubectl exec mosquitto-xxxxx -- mosquitto_sub -v -t 'test/topic'
test/topic upvoteIt

mosquito-xxxxx是你的吊舱的名字。

相关内容

  • 没有找到相关文章

最新更新