如何获取每个 pod 中的所有 Kubernetes pod IP?

Moh*_*ngh 2 java spring spring-boot kubernetes

我们有 Kubernetes 集群,其中每个服务运行 3 个 pod。我们有一个用例,我希望每个 pod 都知道其他 pod 的 IP。

For Example:
P1 --> this pod should know ip of itself, p2, p3 pod ip's 
P2 --> this pod should know ip of itself, p1, p3 pod ip's 
p3 --> this pod should know ip of itself, p2, p3 pod ip's 
Run Code Online (Sandbox Code Playgroud)

我在谷歌上找到了这个,但看起来我们只获得了 Pod 本身的 IP,它不会提供其他两个正在运行的 Pod 的 IP。

          - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
Run Code Online (Sandbox Code Playgroud)

有没有办法可以在我的java代码中获取这些信息?

Adi*_*uru 6

正如您提到的那样使用 env 可能还不够,因为 pod 应该是临时资源并可以添加和删除。

但下面的命令可以获取值

$kubectl get pods -o=jsonpath="{range .items[*]}{.status.podIP}{','}{end}"
Run Code Online (Sandbox Code Playgroud)

您没有提到 Pod 是否属于同一服务,但如果是这种情况(我认为),您可以使用选择器

$kubectl get pods -l="app=my-service" -o=jsonpath="{range .items[*]}{.status.podIP}{','}{end}"
x.y.z.a,b.c.d.e,
Run Code Online (Sandbox Code Playgroud)

这里的两个IP是xyza和bcde

您应该能够在相应的语言(java)api库中找到等效项

如果您可以让请求发送到任何 pod,您可以查看Kube DNS