Предполагая, что вы запускаете процесс за пределами Kubernetes и непосредственно на хосте, первым шагом будет получение правильного имени узла (которое совпадает с именем хоста, но только для уверенности), как , описанное в этом ответе :
$ curl -Gs http://localhost:10255/pods/ | grep -o '"nodeName":"[^"]*"' | head -n 1
"nodeName":"e2e-test-stclair-minion-8o3b"
Затем с помощью Kubectl или Kubernetes API - в зависимости от того, что работает, получите метки этого узла. Я предполагаю, что у вас есть доступ к Kubeconfig и вы используете Kubectl:
kubectl get nodes gke-nodename-pool-87c8b616-549c -ojsonpath='{.metadata.labels}'
Если вы работали с Daemonset - вы можете использовать нисходящий API для получения имени узла, а затем запросить API для получения меток для этого домена. Чтобы получить имя узла как переменную env внутри модуля pod:
env:
- name: MY_NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
Если на узлах нет Kubectl и если вы не хотите запускать процесс как daemonset - тогда запустите небольшой контейнер Go lang в качестве daemonset - который получает имя узла из ENV, а затем запрашивает метки с сервера Kubernetes и выставляет на нодпорте, к которому может получить доступ хост-процесс, кажется, что вы можете получить шкаф!