Как передать идентификатор экземпляра Kubernetes pod в стручок при запуске?

поэтому я изучаю, как использовать Kubernetes для моего случая. Я установил его и немного поиграл.

вопрос в том, когда контроллер репликации запускает пару реплик, у них есть что-то вроде идентификатора в их имени:

  1. насколько уникален этот id? Является ли это уникальностью для жизни kubernetes? Является ли он уникальным для разных запусков kubernetes (т. е. если я перезапущу kubernetes)?
  2. как передать этот идентификатор приложения в контейнере? Могу ли я указать некоторые вид шаблона в yaml так, например, идентификатор будет назначен переменной среды или что-то подобное?
  3. в качестве альтернативы есть ли способ для приложения в контейнере запросить этот идентификатор?

больше объяснения варианта использования. У меня есть приложение, которое записывает некоторые файлы сеанса внутри каталога. Я хочу гарантировать уникальный для идентификаторов сеанса в системе. Это означает, что если один экземпляр приложения работает на VM1 и другой экземпляр на VM2, я хочу добавить какой-то идентификатор для идентификаторов, таких как app-1-dajk4l и app-2-dajk4l, где app-это имя приложения, а 1, 2-идентификатор экземпляра, который должен исходить от контроллера репликации, потому что он динамический и не может быть настроен вручную. dajk4l-это идентификатор, подобный текущей метке времени или аналогичному.

спасибо.

1 ответов


  1. идентификатор гарантированно будет уникальным в любой момент времени, так как Kubernetes не позволяет двум стручкам в одном пространстве имен иметь одинаковое имя. Нет никаких долгосрочных гарантий, поскольку они просто генерируется как случайная строка из 5 буквенно-цифровых символов. Однако, учитывая, что существует более 60 миллионов таких случайных строк, конфликты во времени также маловероятны в большинстве сред.

  2. Да, вы можете потяните пространство имен и имя модуля в качестве переменных среды, используя то, что называется "нисходящий API" добавление поля в контейнере, как env: - name: MY_POD_NAME valueFrom: fieldRef: fieldPath: metadata.name