java - Kubernetes 和 Java : Retrieving Pod IPs behind Service

标签 java kubernetes

我在 Kubernetes 集群中有一个服务,它有一个标签选择器,几个 pod 有这个标签,因此“连接”到服务。是否可以使用服务 IP 检索这些 pod 的内部 IP 地址?

我知道可以在 Kubernetes CLI 中检索服务端点,但是,我想知道这是否可以在 Java 中实现?即 Nslookup。

也许这个问题的补充是:如何在 headless 服务上执行 DNS 查询,是否传递服务名称?

谢谢,

最佳答案

您可以从 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 , GoPython

描述here您可以使用 SRV 记录来查找服务的 CLUSTER-IP 地址(而不是您的 pod IP 地址)。来自一个 pod:

 $ dig srv _portname._tcp.servicename.default.svc.cluster.local
 ...
 servicename.default.svc.cluster.local. 5 IN A  10.x.x.x <== service IP
 ...

关于java - Kubernetes 和 Java : Retrieving Pod IPs behind Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53806817/

相关文章:

java - 我收到 HibernateException "No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here"

java - 使用 ScheduledExecutorService 安排每月任务

java - 读取 html 文件用作电子邮件模板

java - 在 spring testng 测试方法上禁用事务

kubernetes - kubernetes configmap在Yaml配置中设置源文件

kubernetes - 列出已安装图表的 helm 依赖项

ssl - 如何使用 SSL 在 Kubernetes 中配置 Flask ws?

java - 如何识别java文件中方法的修改?

python - 通过API部署Helm图表的代码示例?

kubernetes - 获取 Helm 表中的文件夹列表