kubernetes - 如何在 kubernetes yaml 文件的环境变量中分配集群、命名空间和 pod 名称
问题描述
我需要将集群、命名空间和 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。提前致谢。
解决方案
您可以POD_NAME
通过.POD_NAMESPACE
fieldRef
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
编辑:添加示例 envREFERENCE_EXAMPLE
以显示如何引用变量。感谢这个答案指出$()
插值。
您可以参考此处supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP
文档中提到的内容。
但是,CLUSTERNAME
不是可用的标准属性。根据此PR #22043,如果使用 GCE ,CLUSTERNAME
则应将其注入现场。.metadata
否则,您必须CLUSTERNAME
在该字段中手动指定.metadata
,然后fieldRef
将其作为环境变量注入。
推荐阅读
- c# - 检测是否有任何带有标签的对象在触发器内
- sails.js - Sailsjs - Cloud SDK - 蓝图 API 自动生成的路线?
- javascript - 角反应形式内的切换按钮
- mysql - Mysql——查询性能
- flowtype - 使用流正确键入 fromJS 函数的返回值
- sql - SQL A不是左连接B,只是A吗?
- python - What does the rcond parameter of numpy.linalg.pinv do?
- flutter - Flutter 中是否有具有拖动功能的可扩展列表小部件?
- google-cloud-platform - 查看 GCP Cloud Datastore 指标、跟踪、查询计划
- jquery-scrollify - jquery-scrollify 中允许哪些缓动函数?