Как использовать идентификатор экземпляра в файле конфигурации Daemonset в Kubernetes?
Я хотел бы получить идентификатор экземпляра (например, идентификатор экземпляра AWS EC2, например, i-19a9fa9s8df9a8, а не имя частного узла dns) о том, где работает мой модуль, из моего файла конфигурации k8s, но не смог найти никакой документации о том, как сделай это. Кто-нибудь знает, как использовать reportingInstance
поле в https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/?
Я получаю эту ошибку:
The DaemonSet is invalid:
spec.template.spec.containers[0].env[8].valueFrom.fieldRef.fieldPath:
Invalid value: "core.reportingInstance":
error converting fieldPath: field label not supported: core.reportingInstance
Вот что я попробовал:
- name: INSTANCE_ID
valueFrom:
fieldRef:
fieldPath: core.reportingInstance
У меня уже есть это в моем файле yaml, но это дает личное имя DNS, а не идентификатор экземпляра
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
1 ответ
Позвольте мне ответить на это с моим пониманием вашего вопроса. Я думаю, вы хотите, чтобы значение вашего имени узла было установлено как переменная env в вашем контейнере. Если это правда, вы можете использовать приведенный ниже код для этого
- name: Node_Name
valueFrom:
fieldRef:
fieldPath: spec.nodeName
Если вы хотите получить какую-либо другую информацию о паке или контейнере, пожалуйста, поймите, что вы можете получить только ограниченную информацию в контейнере, используя нисходящий API, и это ограничено полем, указанным ниже.
fieldRef <Object>
Selects a field of the pod: supports metadata.name, metadata.namespace,
metadata.labels, metadata.annotations, spec.nodeName,
spec.serviceAccountName, status.hostIP, status.podIP.
resourceFieldRef <Object>
Selects a resource of the container: only resources limits and requests
(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu,
requests.memory and requests.ephemeral-storage) are currently supported.