Как однозначно идентифицировать узел Kubernetes с помощью Kubernetes API и операционной системы узла?
У меня есть 2 компонента, которые работают в среде Kubernetes. Один перечисляет все узлы в кластере (с использованием Kubernetes API), а другой сообщает подробности узла, на котором он работает, первому.
Я хочу, чтобы мой первый компонент соответствовал сообщаемому узлу второго компонента с узлом в списке первого компонента.
Для этого мне нужны 2 вещи:
- Определите уникальное значение для узла в кластере Kubernetes.
- Получите одинаковый идентификатор для узла из двух разных мест - API Kubernetes и от самого узла.
Идентификация узла:
Я пытаюсь идентифицировать узел Kubernetes. Но я все еще не могу получить уникальный идентификатор для узла.
Сначала я думал, что поле machine-id уникально, но это не так (скопировано при клонировании узла). Затем я создал формулу идентификации, состоящую из _.
Эта формула не уникальна, но пока она работает довольно хорошо.
Получение одного и того же идентификатора узла двумя разными способами:
Довольно просто получить machine_id и имя хоста узла с помощью Kubernetes API, а также выполнив команды в операционной системе узла. Проблема, с которой я столкнулся, заключается в том, что в некоторых случаях идентификаторы не совпадают. В частности, имя хоста не идентично.Получение имени хоста с помощью Kubernetes API не возвращает реальное имя хоста узла. Я столкнулся с этой проблемой на IKS и ICP.
Есть ли нормальный способ получить уникальный идентификатор для узла Kubernetes? Тот, который вернет тот же результат, запустив команду на узле и используя API?
1 ответ
Вы должны использовать имя узла, как в имени объекта API. Вы можете передать его процессу DaemonSet, используя env var с полем ref или нисходящий том api.