java - 如何在 Kubernetes Java 应用程序中获取当前 Pod
问题描述
我正在 Kubernetes 集群上部署我的微服务。每个应用程序有 4 个副本或 PODS。对于 1 应用程序中的 REST API,我想跟踪哪个 POD 解决了我的请求。例如,我的/app/deploy(body contains app_id)
请求由POD1
.
同样,我在我的应用程序中导入了 Kubernetes jar。在我的代码中,我想检查运行此代码的当前 POD。我想要一个类似的 API,类似kubernetesDiscoveryClient.getCurrentPOD()
的东西。
解决方案
您的 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
推荐阅读
- google-cloud-platform - 如何在 Google Cloud Platform CLI 中切换配置 - Cloud Shell
- python - 当列表中没有值时,list.count() 表示 1
- python - 在嵌套字典中添加项目
- c++ - 按唯一标识符描述数字列表
- php - PHP 仅将 SQL 拉为文本
- javascript - 在以下代码中制作反应应用程序时收到“解析错误:意外的令牌,预期的”;“”
- r - x * w 中的 dudi.hillsmith 错误:二元运算符的非数字参数
- amazon-web-services - Amazon S3 生命周期规则:存档文件具有最近的日期
- javascript - 通过选择选项 javascript 更改品牌详细信息
- c# - 映射列表
- > 到具有最大值对象属性的字典