我正在Kubernetes集群上部署微服务。每个应用程序都有4个副本或PODS。对于1个应用程序中的REST API,我想跟踪哪个POD解决了我的请求。例如我的/app/deploy(body contains app_id)
请求由POD1
处理。
同样,我在应用程序中导入了Kubernetes jar。在我的代码中,我想检查运行此代码的当前POD。
我想要类似kubernetesDiscoveryClient.getCurrentPOD()
这样的API。
答案 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)
每个窗格的hostname
与pod_name
相同。因此,您可以做的是编写一个返回hostname
的api。
示例:
在Java中
java.net.InetAddress.getLocalHost();
在C#中
System.Environment.GetEnvironmentVariable("COMPUTERNAME");
答案 2 :(得分:0)
这对我有用。
podName = Optional.ofNullable(System.getenv("HOSTNAME"));