Глобальное назначение UUID / уникального идентификатора для каждого модуля для всех модулей. - PullRequest
0 голосов
/ 04 июня 2019

Существует ли атрибут UUID (или что-то подобное), который либо автоматически назначается всем модулям K8S, либо может быть глобально настроен для кластера?

У меня есть приложение, которое действует как база данных (БД)) интерфейс в моем кластере, где некоторые (но не все модули) представляют каталог цифровых «ресурсов», которые они делают доступными для кластера.Ожидается, что модули будут «очищать» свои записи, которые они создали в БД, перед тем как завершить работу, но в некоторых случаях они могут аварийно завершить работу, не позволяя выполнить код завершения работы / очистки.

Даже если я использую ловушку предварительного останова , модуль уже вышел из строя, и я больше не могу получить доступ к данным внутри него, чтобы узнать, какие ресурсы он сообщил приложению БД.

Я подумывал о том, чтобы при получении входящего соединения приложение БД запрашивало у удаленного модуля IP, какой-нибудь уникальный идентификатор / UUID и т. Д .;и сопоставьте эти данные с информацией БД, предоставленной модулем.Затем я могу заставить приложение БД периодически опрашивать кластер с помощью API-интерфейса REST K8S, чтобы определить, существует ли еще модуль с соответствующим UUID, и очистить отдельные записи, если связанный с ними модуль UUID больше не присутствует.


Вопрос (ы):

  1. Существует ли способ автоматического назначения такого UUID всем модулям в кластере на глобальном уровне (т. Е. Без необходимости изменять файлы YAML длявсе мои модули, развертывания и т. д.).
  2. Существует ли какой-либо другой механизм / функция, предоставляемый K8S, который обеспечил бы лучшее средство для посмертной очистки ресурсов модуля, которые живут в отдельном / внешнем модуле?

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Вы можете получить доступ к UID модуля с помощью kubectl get pods/$POD_NAME -o yaml, он находится под metadata.uid.

Он также подвергается воздействию pod env var , но убедитесь, что ваши kubernetes содержат этот commit .

1 голос
/ 05 июня 2019

вы должны использовать Statefulsets для запуска контейнеров с состоянием, таких как базы данных, а не развертывания. у вас будет контроль над именами модулей, такими как db-0, db-1, db-2

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