Как узел (экземпляр AWS EC2) может читать свои метки Kubernetes? - PullRequest
0 голосов
/ 15 марта 2019

Мы используем kops для создания нашего собственного kubernetes кластера в AWS EC2. Мы запускаем некоторые специальные процессы на экземплярах EC2 и хотели бы, чтобы у них был доступ к меткам узла kubernetes, но я не могу найти способ получить к ним доступ из экземпляра.

Как получить доступ к меткам Kubernetes для узла, на котором размещен экземпляр, из уровня экземпляра, вне каких-либо контейнеров, используя стандартные инструменты Unix, такие как bash, curl и sed?

1 Ответ

0 голосов
/ 15 марта 2019

Предполагая, что вы запускаете процесс за пределами 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 и выставляет на нодпорте, к которому может получить доступ хост-процесс, кажется, что вы можете получить шкаф!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...