#kubernetes
Вопрос:
Я не знаю, как установить env, чтобы получить имя контейнера. например,
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_CONTAINER_NAME
value: "test-container"
Интересно, может ли значение env:MY_CONTAINER_NAME быть своего рода ссылкой?
Комментарии:
1. Что бы вы сделали с именем контейнера, если бы оно у вас было? (Модуль, как правило, будет иметь только один [основной] контейнер, и вы не сможете много сделать с именем контейнера, не имея также имени модуля.)
2. Вы можете использовать нисходящий API для получения имени модуля в переменной среды, но не имени контейнера.
Ответ №1:
если вам просто нужно имя контейнера, вы можете использовать HOSTNAME
переменную, чтобы избежать определения новой переменной env:
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 HOSTNAME
sleep 10;
done;
если вам нужна новая переменная env, вы можете использовать якоря в yaml:
apiVersion: v1
kind: Pod
metadata:
name: dapi-envars-fieldref
spec:
containers:
- name: amp;containername test-container
image: k8s.gcr.io/busybox
command: [ "sh", "-c"]
args:
- while true; do
echo -en 'n';
printenv MY_CONTAINER_NAME;
sleep 10;
done;
env:
- name: MY_CONTAINER_NAME
value: *containername
и тогда вы получите это:
$ kubectl logs dapi-envars-fieldref
test-container
Комментарии:
1. Имя хоста(8) обычно будет именем модуля , в отличие от имени контейнера внутри модуля.