【问题标题】:How to get list of pods hostnames from headless service?如何从无头服务获取 pod 主机名列表?
【发布时间】:2021-08-13 08:07:27
【问题描述】:

我有一个用于 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

【问题讨论】:

  • dig srv mongodb +search +short | awk '{print $4}'?
  • 你好@SNR。以上建议对您有帮助吗?
  • 这行得通,但我一直在寻找 dig 命令本身是否有任何标志

标签: kubernetes networking amazon-eks dig kube-dns


【解决方案1】:

@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。

【讨论】:

  • 你好@SNR。这是answer your question吗?
  • 我没有完全得到 [no] 过滤器来删除 0 100 27017 我试过 +noport 但仍然显示 27017
  • 很遗憾,没有+[no]port 这样的选项。相反,您可以尝试使用+nocl+nottl。或者按照指南中的建议进行操作,从 +noall 开始,然后是您想要的部分。
  • 我试过dig srv mongodb +search +noall +answer +short +nottl +nocl。但没有帮助。你能分享一下对你有用的命令吗?
  • 如果以上建议都不适合您,请坚持使用@anemyte 提出的awk 解决方案。我将更改我对社区 wiki 的回答,以给予他更多的信任。
猜你喜欢
  • 1970-01-01
  • 2021-07-23
  • 2016-03-24
  • 2022-01-15
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
相关资源
最近更新 更多