【问题标题】:How to Get Current Pod in Kubernetes Java Application如何在 Kubernetes Java 应用程序中获取当前 Pod
【发布时间】:2019-01-06 15:42:46
【问题描述】:

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

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

【问题讨论】:

    标签: java spring-boot kubernetes


    【解决方案1】:

    您的 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     
    

    【讨论】:

      【解决方案2】:

      这对我有用。

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

      【讨论】:

        【解决方案3】:

        每个 pod 都有一个与 pod_name 相同的 hostname。所以你可以做的是,写一个返回你hostname的api。

        例子:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-13
          • 2011-01-06
          • 2020-01-08
          • 2021-10-04
          • 2019-05-08
          • 2012-11-26
          • 2012-03-14
          • 1970-01-01
          相关资源
          最近更新 更多