如何在Kubernetes Java应用程序中获取当前Pod

时间:2018-07-30 11:37:15

标签: java spring-boot kubernetes

我正在Kubernetes集群上部署微服务。每个应用程序都有4个副本或PODS。对于1个应用程序中的REST API,我想跟踪哪个POD解决了我的请求。例如我的/app/deploy(body contains app_id)请求由POD1处理。

同样,我在应用程序中导入了Kubernetes jar。在我的代码中,我想检查运行此代码的当前POD。 我想要类似kubernetesDiscoveryClient.getCurrentPOD()这样的API。

3 个答案:

答案 0 :(得分:2)

您的Java应用程序中不需要Kubernetes Jar。简单的System.getenv("HOSTNAME")将为您提供Pod的名称。在所有平台上均可使用,至少从Kubernetes 1.6版开始。

更正式地说,您可以在Kube规范(detailed reference)中使用以下内容,然后在Java中使用System.getenv("MY_POD_NAME")读取环境。

 env:
 - name: MY_POD_NAME
   valueFrom:
     fieldRef:
       fieldPath: metadata.name     

答案 1 :(得分:0)

每个窗格的hostnamepod_name相同。因此,您可以做的是编写一个返回hostname的api。

示例:

在Java中 java.net.InetAddress.getLocalHost();

在C#中 System.Environment.GetEnvironmentVariable("COMPUTERNAME");

答案 2 :(得分:0)

这对我有用。

podName = Optional.ofNullable(System.getenv("HOSTNAME"));