繁体   English   中英

Kubernetes 在 Java 的 tomcat 容器中获取 pod 的全名

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM