Существует два способа выставить поля Pod и Container в работающий контейнер:
- Переменные среды
- Файлы томов
Вместеэти два способа представления полей Pod и Container называются Downward API.
Итак, просто используя переменные окружения, вы можете вставить любые метаданные модуля в работающий контейнер.
Обновление комментария - В соответствии с документацией kubernetes каждое имя имеет UID, который добавляется к имени ресурса, например, модуль или контейнер, который предоставит способ получитьуникальный идентификатор, который будет использоваться для регистрации.
metadata.name = myimage + unique id
примечание * - единственным предостережением здесь является тот факт, что UID меняется при каждом обновлении, поэтому было бы лучше назначить уникальный идентификатор с вашей стороны для идентификации контейнера или контейнера. в сочетании с K8 UID.
Вот пример YAML.
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en '\n';
printenv MY_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
sleep 10;
done;
env:
- name: MY_POD_ID // <--- here you inject env into container
valueFrom:
fieldRef:
fieldPath: metadata.name // <--- set value of the env var to pod name
- name: MY_POD_SERVICE_ACCOUNT
valueFrom:
fieldRef:
fieldPath: spec.serviceAccountName
restartPolicy: Never
ссылка.