Как отложить создание нового модуля в развертывании при удалении одного модуля? - PullRequest
0 голосов
/ 20 апреля 2020

Если при развертывании для реплики задано значение 2, то мы удаляем один модуль с помощью команды «kubectl delete pods», тогда старый модуль будет в состоянии «завершение», а новый модуль получится.

Итак, я надеюсь, что новый модуль начнет создаваться после успешного завершения старого модуля, так что мне с этим делать?

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете использовать команду wait :

Ожидание определенного условия c для одного или нескольких ресурсов.

Команда принимает несколько ресурсов и ждет, пока указанное поле не будет отображено в поле «Состояние» каждого данного ресурса.

В качестве альтернативы команда может ожидать удаления указанного набора ресурсов, предоставив ключевое слово «delete» в качестве значение для флага --for.

Вот пример:

Подождите, пока модуль "busybox1" будет удален с таймаутом 60 с после выполнил команду «удалить»:

kubectl delete pod/busybox1
kubectl wait --for=delete pod/busybox1 --timeout=60s

--- РЕДАКТИРОВАТЬ ---

В зависимости от вашего варианта использования дополнительные опции будут:

  • использовать StatefulSet с "Упорядоченным, изящным развертыванием и масштабированием."

  • установить реплики равными 1, дождитесь окончания 2-го модуля и установите его обратно в 2

  • используйте дополнительное развертывание со nfiguration как maxSurge и maxUnavailable

  • (менее рекомендуется) использовать grace-period=0 с параметром force, но это может привести к несогласованности или потере данных и требует подтверждения , Подробнее здесь и здесь .

Пожалуйста, дайте мне знать, если это помогло.

...