首页 > 解决方案 > Mosquitto Broker - MQTT 客户端使用 DNS 名称而不是 IP 地址

问题描述

我能够让 eclipse mosquitto 代理启动并运行,MQTT 客户端能够使用代理的 IP 地址与代理通信。但是,正如我在 kubernetes 上运行这些,代理 IP 在重新启动时会不断变化。我想为代理启用 DNS 名称服务,以便客户端可以使用代理名称而不是 IP。coreDNS 在 kubernetes 中默认运行。

关于可以做什么的任何建议?

$ nslookup kubernetes.default
Server:     10.43.0.10
Address:    10.43.0.10:53

** server can't find kubernetes.default: NXDOMAIN

** server can't find kubernetes.default: NXDOMAIN

标签: kubernetesmqttmosquittocoredns

解决方案


全部,

感谢您回答查询,特别是 Thomas 的代码指针。根据您的建议,一旦我为 POD 创建了一个服务,我就能够让 DNS 工作,因为 core-dns 已经在运行.. 之后我也能够在 MQTT 代理中使用主机名。

    opts.AddBroker(fmt.Sprintf("tcp://mqtt-broker:1883"))

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2021-02-01T19:08:46Z"
  labels:
    app: ipc
  name: mqtt-broker
  namespace: default

顺便说一句,我无法让无头服务工作,遇到了这个错误,所以继续使用 ClusterIP 本身 + MQTT 的 1883 暴露端口。请问有什么建议吗?

`services "mqtt-broker" was not valid:`
`spec.clusterIPs[0]: Invalid value: []string{"None"}: may not change once set`

推荐阅读