如何在 Kubernetes Java Application 中获取 Current Pod

2022-09-03 17:10:46

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

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


答案 1

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

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

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

答案 2

这对我有用。

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

推荐