![](/img/trans.png)
[英]Programmatically get the name of the pod that a container belongs to in Kubernetes?
[英]Kubernetes get pod's full name inside tomcat container in Java
尝试在启动时获取 Tomcat 容器内的 pod 名称。 已经在search.yaml
文件中使用Kubernetes Downward API
将 pod 的全名公开为环境变量(仅附加文件的一部分)
apiVersion: apps/v1
kind: Deployment
metadata:
name: search
namespace: dev
labels:
app: search
spec:
replicas: 1
selector:
matchLabels:
app: search
template:
metadata:
labels:
app: search
spec:
hostname: search-host
imagePullSecrets:
- name: regcred
containers:
- name: search-container
image: docker.test.net/search:develop-202104070845
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
ports:
- containerPort: 8080
resources:
requests:
memory: "2048Mi"
cpu: "1"
limits:
memory: "2048Mi"
cpu: "2"
env:
- name: SERVER_GROUP
value: "SEARCH"
- name: MIN_TOMCAT_MEMORY
value: "512M"
- name: MAX_TOMCAT_MEMORY
value: "5596M"
- name: DOCKER_TIME_ZONE
value: "Asia/Colombo"
- name: AVAILABILITY_ZONE
value: "CMB"
运行 pod 后,此环境变量在 docker 级别中可用。
吊舱详细信息
NAME READY STATUS RESTARTS AGE
search-56c9544d58-bqrxv 1/1 Running 0 4s
Pod 名称的 Pod 环境变量
POD_NAME=search-56c9544d58-bqrxv
When accessed this as below in Tomcat container's java code in a jar called BootsTrap.jar
and it returned as null
.
String dockerPodName = System.getenv( "POD_NAME" );
是因为在 tomcat 容器初始化之前 Pod 没有启动并运行还是访问 Java 中的环境变量不正确还是有另一种方式通过 Z93F725A07423FE1C889F448B33 访问 Pod 的环境变量
您将MY_POD_NAME
设置为环境变量,但要查找POD_NAME
。 在 Java 代码和部署中使用相同的名称。
注意:您的 YAML 似乎有错误的缩进,我认为这只是一个复制粘贴工件。 如果不是这种情况,则可能导致部署更改被拒绝,因为 YAML 无效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.