Больше чем указанное количество модулей, созданных при удалении модуля - PullRequest
0 голосов
/ 28 июня 2018

Я развернул Хранилище Хашикорпа в моих кластерах Kubernetes на AWS, используя для этого диаграмму Хелма.

Количество реплик в развертывании указано как 3.

Из этих 3 модулей 1 был готов (1/1), в то время как два других модуля реплики не были готовы (0/1). Я убил готовый модуль, и, хотя ожидалось, что Kubernetes развернет новый модуль, чтобы заменить его, он развернул два новых модуля.

Теперь у меня есть две готовые капсулы и две неготовые капсулы. После удаления одного из этих модулей теперь Kubernetes воссоздает только один модуль. Поэтому для развертывания хранилища у меня есть 4 вместо 3. Что может быть причиной этого и как мы можем предотвратить это?

Ответы [ 2 ]

0 голосов
/ 07 июля 2018

Ваше развертывание не работает, поскольку HA (высокая доступность) недоступна при использовании бэкэнда хранилища s3. Для этого вам понадобится консул Hashicorp, DynamoDB AWS или другой бэкэнд-провайдер. Измените количество реплик на 1, если вы придерживаетесь бэкэнд-провайдера s3.

Что касается того, почему вы видите 4 пакета вместо 3, вам нужно предоставить более подробную информацию. Вставьте вывод kubectl get pods -l app=vault, а также kubectl describe deploy -l app=vault, и я обновлю этот ответ.

Я могу только предположить, что это стоит. У объектов развертывания есть свойство maxSurge, которое позволяет масштабировать обновления до уровня, превышающего желаемое количество реплик. По умолчанию округляется до 25%, что в вашем случае будет дополнительным 1 стручком.

Максимальный всплеск

.spec.strategy.rollingUpdate.maxSurge - это необязательное поле, указывает максимальное количество модулей, которое может быть создано в течение желаемое количество стручков. Значение может быть абсолютным числом (для например, 5) или процент желаемых стручков (например, 10%). значение не может быть 0, если MaxUnavailable равно 0. Абсолютное число равно рассчитывается от процента путем округления в большую сторону. Значением по умолчанию является 25%.

Например, если для этого значения установлено значение 30%, новый ReplicaSet может быть сразу же после запуска обновления обновления, так что общее количество старых и новых Бобов не превышает 130% желаемых Бобов. Как только старые Бобы были убиты, новый Набор Реплики может быть увеличен далее, гарантируя, что общее количество модулей работает в любое время во время обновления - не более 130% желаемых модулей.

Возможно, что удаление одного модуля Running (1/1) вместе с состоянием NotReady других модулей привело к тому, что ваше развертывание перешло в состояние «непрерывного обновления» или что-то в том же духе, что позволило вашему развертыванию масштабироваться до maxSurge настройка.

0 голосов
/ 06 июля 2018

Если у вас есть такие проблемы, вы должны

kubectl describe pod <PROBLEMATIC_POD>

и посмотрите нижнюю часть вашего вывода Events.

Некоторые причины, по которым ваши модули не запускаются:

  • нет доступных узлов с достаточным количеством ресурсов для ваших запросов
  • нет доступных томов
  • некоторые антиаффинные правила и недостаточно узлов, поэтому планировщик не может назначать узлы вашим модулям.
...