Может ли kubernetes pod динамически менять свой собственный ярлык? - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь настроить кластер postgresql в режиме основного ожидания, используя repmgr , и я думаю о том, как правильно перенаправить трафик на «основной» модуль.

Моя интуиция заключается в том, чтобы использовать одну метку для «выделения» основного модуля и полагаться на селектор меток сервисного объекта для «привязки» IP-адреса кластера к нему.Но это приводит к вопросу: как «переместить» метку со старого основного модуля на новый после восстановления после отказа?

Есть ли способ, как позволить мне зарегистрировать собственный сценарий в моем определении модуля yaml дляпериодически проверяйте роль модуля и меняйте его название в зависимости от результатов?

Ребята, знаете ли вы, возможен ли этот метод?А может, уже есть острое решение, которое может справиться с моей ситуацией?

1 Ответ

0 голосов
/ 16 октября 2018
  • StatefulSets - это ответ!

Я цитирую из официальных документов Kubernetes

Как и Deployment, StatefulSet управляет модулями, основанными на идентичной спецификации контейнера.В отличие от развертывания, StatefulSet поддерживает липкую идентификацию для каждого из своих модулей.Эти модули созданы из одной и той же спецификации, но не являются взаимозаменяемыми: у каждого есть постоянный идентификатор, который он поддерживает при любом перепланировании.

И даже больше

StatefulSets являются ценнымидля приложений, требующих одного или нескольких из следующих действий.

1. Stable, unique network identifiers.
2. Stable, persistent storage.
3. Ordered, graceful deployment and scaling.
4. Ordered, automated rolling updates.

Я считаю, что пункт 1 более важен для вас (согласно вашему вопросу).StatefullSets также поддерживает порядок порождения стручков.Некоторое время назад я работал над развертыванием Redis Cluster на K8, я не помню правильно или не делал репозиторий, но они использовали некоторые скрипты в контейнере для определения Redis Master.Поскольку StatefullSet поддерживает порядок порождения, легко сделать первый порожденный модуль мастером.И снова, пожалуйста, обратитесь к документу до конца и любые блоги по этой концепции.

И даже больше

Стабильный идентификатор сети

Каждый Pod в StatefulSet получает свое имя хоста из имени StatefulSet и порядкового номера Pod.Шаблон для созданного имени хоста: $ (имя набора состояний) - $ (порядковый номер)

Из-за стабильного n / w ID DNS-имя для модуля никогда не меняется

Я бы порекомендовалразвернуть свой кластер postgress как StatefullSet.Пожалуйста, обратитесь к ссылкам ниже, чтобы получить представление

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