В Kubernetes флаг --restartне является допустимым параметром. Однако при перезапуске ресурса Kubernetes, такого как модуль, доступно несколько методов. Вот несколько распространенных подходов с примерами кода:
-
Последовательный перезапуск.
При последовательном перезапуске модули обновляются постепенно, один за другим, чтобы обеспечить нулевое время простоя. Он завершает работу и заменяет модули контролируемым образом.Пример кода:
kubectl rollout restart deployment/my-deployment -
Удаление и создание.
Этот метод предполагает удаление существующего ресурса и создание нового. Он подходит для приложений без сохранения состояния, где сохранение данных не является проблемой.Пример кода:
kubectl delete pod/my-pod kubectl create -f pod.yaml -
Уменьшение и увеличение масштаба.
Уменьшение количества реплик до нуля, а затем его повторное масштабирование позволяет эффективно перезапустить модули, связанные с развертыванием или набором реплик.Пример кода:
kubectl scale deployment/my-deployment --replicas=0 kubectl scale deployment/my-deployment --replicas=3 -
Последовательное обновление.
Обновляя шаблон модуля развертывания, можно запустить чередующееся обновление, что приведет к созданию новых модулей и прекращению действия старых.Пример кода:
kubectl set image deployment/my-deployment my-container=my-image:new-tag -
Использование аннотаций.
Добавив или изменив аннотацию в модуле, вы можете инициировать перезагрузку с помощью внешнего инструмента или контроллера, который отслеживает изменения в аннотациях.Пример кода:
kubectl annotate pod/my-pod restartTimestamp=$(date +%s)