首页 > 解决方案 > 如何在 Kubernetes Java 应用程序中获取当前 Pod

问题描述

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

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

标签: javaspring-bootkubernetes

解决方案


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

更正式地说,您可以在 Kube 规范中使用以下内容(详细参考),然后阅读System.getenv("MY_POD_NAME")Java 中使用的环境。

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

推荐阅读