gpt4 book ai didi

kubernetes - 如何在 kubernetes yaml 文件的环境变量中分配集群、命名空间和 pod 名称

转载 作者:行者123 更新时间:2023-12-02 11:54:18 30 4
gpt4 key购买 nike

我需要将集群、命名空间和 pod 名称从部署在 Kubernetes 集群中的容器传递给 AppDynamics 代理。

我尝试了以下方法,但不起作用。

containers:
- env:
- name: JAVA_OPTS
value: -Dappdynamics.agent.nodeName=$HOST-$spec.nodeName-spec.PodName

- name: appdynamics.agent.nodeName
value= $HOST-$spec.nodeName-spec.PodName

任何人都可以在这里帮助我如何收集详细信息并传递给 AppD。提前致谢。

最佳答案

您可以通过 fieldRef 获取 POD_NAMEPOD_NAMESPACE 作为环境变量。

apiVersion: v1
kind: Pod
metadata:
name: test-env
spec:
containers:
- name: test-container
image: my-test-image:latest
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: MY_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: MY_POD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
- name: REFERENCE_EXAMPLE
value: "/$(MY_NODE_NAME)/$(MY_POD_NAMESPACE)/$(MY_POD_NAME)/data.log"
restartPolicy: Never

编辑:添加了示例环境 REFERENCE_EXAMPLE 以显示如何引用变量。感谢 this指出 $() 插值的答案。

您可以引用文档中提到的 supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP here .

但是,CLUSTERNAME 不是可用的标准属性。据此PR #22043 ,如果使用 GCE,CLUSTERNAME 应该被注入(inject)到 .metadata 字段中。

否则,您必须在 .metadata 字段中手动指定 CLUSTERNAME,然后使用 fieldRef 将其作为环境注入(inject)变量。

关于kubernetes - 如何在 kubernetes yaml 文件的环境变量中分配集群、命名空间和 pod 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680807/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com