我在Kubernetes集群中有一个服务,该服务具有标签选择器,几个容器具有该标签,因此被“连接”到该服务。是否可以使用服务IP来检索这些Pod的内部IP地址?
我知道可以在Kubernetes CLI中检索服务端点,但是,我想知道是否可以在Java中实现?即Nslookup。
这个问题的补充可能是:如何对无头服务执行DNS查询,您是否传递服务名称?
谢谢
答案 0 :(得分:2)
您可以从API服务器获取端点。例如,获取API服务器返回的第一个端点的IP地址:
$ curl -s -k -H 'Authorization: Bearer <REDACTED>' \
https://<apiserver-address>:6443/api/v1/endpoints | \
jq .items[0].subsets[0].addresses[].ip
您还可以使用它来检索运行您的Pod的节点名称(调用上述端点)。
$ curl -s -k -H 'Authorization: Bearer <REDACTED>' \
https://<apiserver-address>:6443/api/v1/endpoints | \
jq .items[0].subsets[0].addresses[].nodeName
这也可以使用您喜欢的语言API来完成,例如Java,Go和Python
描述了here的SRV记录,可用于查找服务的CLUSTER-IP地址(而不是Pod的IP地址)。在广告连播中:
$ dig srv _portname._tcp.servicename.default.svc.cluster.local
...
servicename.default.svc.cluster.local. 5 IN A 10.x.x.x <== service IP
...