Вы можете получить 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
РЕДАКТИРОВАТЬ : Добавлен пример env REFERENCE_EXAMPLE
, чтобы показать, как ссылаться на переменные.Благодаря этому ответу за указание на интерполяцию $()
.
Вы можете сослаться на supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP
, как упомянуто в документации здесь .
Однако CLUSTERNAME
не является стандартным доступным свойством.В соответствии с этим PR # 22043 , CLUSTERNAME
должен вводиться в поле .metadata
при использовании GCE.
В противном случае вам придется указать CLUSTERNAME
вручную вполе .metadata
, а затем используйте fieldRef
для внедрения его в качестве переменной среды.