spring - 获取自己服务的所有正在运行的 pod 的列表

标签 spring kubernetes

情况

  • 我有一个在 Kubernetes 中运行的 Spring Boot 服务
  • 多个实例正在运行(kubernetes 部署配置了多个副本)
  • 我有一个来自集群外部的传入 HTTP 命中了实例
  • 我想将这个事实转达给所有其他个体

问题

是否有一种简单、不需要外部东西的解决方案来查找“我的服务的所有 pod”列表?我想我记得这可以通过 DNS 解析来实现,但我的 Google-Fu 似乎很难找到一些东西。

当然,我总是可以通过其他一些解决方案(例如 Redis、Kafka 等)来解决这个问题,但由于我只需要它来实现一次性功能,所以我不想引入任何移动部件并使其尽可能简单.

最佳答案

内部 K8s DNS 只会为您提供服务的 IP 地址。幸运的是,有 Endpoints 资源正是为了获取支持服务的 Pod。

使用 kubectl,您可以像这样检查端点:

kubectl get endpoints nginx -o yaml

使用此命令,您可以获取 Pod 名称:

kubectl get endpoints nginx -o=jsonpath='{.subsets[*].addresses[*].targetRef.name}'

要从您的 Spring Boot 应用程序执行相同的操作,您可以尝试使用官方 Kubernetes Java client library.

关于spring - 获取自己服务的所有正在运行的 pod 的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62412278/

相关文章:

spring - 无法自动接线 `WebTestClient` - 没有自动配置

docker - 是否有可能测量K8S,Openshift中POD的响应时间?

docker - Kubernetes PetSet - 持久卷创建失败

kubernetes - k8 内部的流量如何流动?

java - 设置 Cookie 在 Spring web-mvc 4 中不起作用

java - 如何得知是从哪个ip登录成功的?

java - 返回类型为 Message<?> 的 Spring Integration Activator 的 JUnit

JAVA : HOW TO Join same table in hibernate and select column's value

kubernetes - 无法在GCP上部署Kubeflow:告诉我启用已启用的API

nginx - Kubernetes Nginx 入口 - 无法确保负载均衡器 : could not find any suitable subnets for creating the ELB