kubernetes - 通过 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
我的印象是这应该有效?
解决方案
该服务必须是无头的,kube-dns 才能像这样为域名提供服务。见https://stackoverflow.com/a/46638059
推荐阅读
- python - 通过 .reshape(generator) 将一维数组广播到不同 nD 数组的特定维度
- firebase-mlkit - Firebase ML Kit 可以用作人脸认证吗
- java - 如何通过“Anunciar”按钮打开下一个活动?
- python - 导航到目录树并获取每个文件的路径
- python - 全局变量减慢 PyParsing
- google-chrome - Chromium 将名称带有变音符号的文件重命名为“download (n)”
- azure - 将 Azure DevOps 服务与 Azure DevOps on-prem Repos 和 Build/Release 结合使用。那可行吗?
- mysql - 在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #1 包含非聚合列“jquzntys.posts.id”
- ansible - 使用 getent 获取用户和用户目录
- reactjs - 在连接组件上使用浅层时酶错误:“浅层渲染仅适用于自定义组件”