如何从无头服务获取 pod 主机名列表?

问题描述

我有一个用于 MongoDB 复制的有状态集,我需要通过服务端点获取 pod 的所有主机名。我能够获取名称但不完全是唯一的主机名列表。

$ dig srv mongodb +search +short
0 100 27017 mongodb-0.mongodb.pilot-bots.svc.cluster.local.

这里有我想排除的额外内容 0 100 27017

我怎样才能只得到名字?像下面的IPS。

$ dig mongodb A +search +short
172.1.0.220

解决方法

@anemyte 用他的 awk 提供了一个有效的解决方案:

dig srv mongodb +search +short | awk '{print $4}'

但是,您也可以从不同的方式来解决这个问题。 Dig 有几个可以调整的选项,以便仅打印您想要的信息作为输出。 This guide 更详细地解释了这种方法:

Get a not-quite-so-short answer?

请注意,简短的回答与仅回答不同。的方式 得到一个详细的答案,但没有任何辅助信息,就是 关闭所有结果 (+noall) 然后只打开那些 您想要的部分

这是一个简短的答案,后面只有一个答案;后者包括 所有配置信息,包括生存时间 (TTL) 数据, 以与 BIND 配置文件兼容的格式显示。

使用 +noall 后跟您选择的其他选项将导致仅显示您感兴趣的那些记录。您也可以只隐藏不想打印的记录,例如,使用 +nottlid 选项隐藏 TTL。