簡體   English   中英

如何在Kubernetes Java應用程序中獲取當前Pod

[英]How to Get Current Pod in Kubernetes Java Application

我正在Kubernetes集群上部署微服務。 每個應用程序都有4個副本或PODS。 對於1個應用程序中的REST API,我想跟蹤哪個POD解決了我的請求。 例如,我的/app/deploy(body contains app_id)請求由POD1處理。

同樣,我在應用程序中導入了Kubernetes jar。 在我的代碼中,我想檢查運行此代碼的當前POD。 我想要像kubernetesDiscoveryClient.getCurrentPOD()這樣的API。

您的Java應用程序中不需要Kubernetes Jar。 一個簡單的System.getenv("HOSTNAME")將為您提供Pod的名稱。 至少在Kubernetes 1.6版以上的平台上均可使用。

更正式地說,您可以在Kube規范( 詳細參考 )中使用以下內容,然后使用Java中的System.getenv("MY_POD_NAME")讀取環境。

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

每個pod的hostnamepod_name相同。 因此,您可以做的是,編寫一個返回hostname的api。

例:

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

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

這對我有用。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM