首页 > 解决方案 > 通过 DNS ping 有状态集的 pod

问题描述

我正在集群配置中设置 VerneMQ(一个 MQTT 代理)。因此,我在有状态集中启动了 4 个副本。显然 VerneMQ 希望通过 DNS 与集群中的其他代理进行通信,如下所示:

echo "Will join an existing Kubernetes cluster with discovery node at 
${kube_pod_name}.${VERNEMQ_KUBERNETES_SUBDOMAIN}.${DOCKER_VERNEMQ_KUBERNETES_NAMESPACE}.svc.cluster.local"

不幸的是,日志表明这不起作用:

14:05:56.741 [info] 应用程序 vmq_server 在节点“VerneMQ@broker-vernemq-0.broker-vernemq.messaging.svc.cluster.local”上启动

broker-vernemq-0是 pod 的名称,broker-vernemq也是 statefulset 的名称。该服务被配置为 LoadBalancer。

问题:

broker-vernemq-1我通过终端连接到 pod并执行ping broker-vernemq-0,我想知道它无法解析此主机名:

ping:未知主机代理-vernemq-0

我的印象是这应该有效?

标签: kuberneteskube-dns

解决方案


该服务必须是无头的,kube-dns 才能像这样为域名提供服务。见https://stackoverflow.com/a/46638059


推荐阅读