我需要将Kubernetes集群中部署的容器中的集群,名称空间和Pod名称传递给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。 预先感谢。
答案 0 :(得分:2)
您可以通过fit
获得POD_NAME
和POD_NAMESPACE
作为环境变量进行传递。
fieldRef
编辑:添加了示例env 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
,以显示如何引用变量。感谢this的答案指出了REFERENCE_EXAMPLE
插值。
您可以参考文档here中提到的$()
。
但是,supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP
不是可用的标准属性。根据此PR #22043,如果使用GCE,应将CLUSTERNAME
注入到CLUSTERNAME
字段中。
否则,您必须在.metadata
字段中手动指定CLUSTERNAME
,然后使用.metadata
将其作为环境变量注入。
答案 1 :(得分:0)
以下格式对我有帮助,ewok2030和Praveen建议。 确保变量在用作JAVA_OPTS之前应该声明的只有一件事。
容器:
- env:
- name: APPD_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: APPD_POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: APP_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: JAVA_OPTS
value: -Xmx712m -Xms556m -Dpdp.logging.level=WARN -Dappdynamics.agent.nodeName=$(APPD_NODE_NAME)-$(APPD_POD_NAMESPACE)-$(APP_POD_NAME)