Pod также может иметь один или несколько контейнеров, один из которых является контейнером приложения, а другие — контейнером инициализации, который останавливается после завершения задания или контейнера приложения, готового к выполнению своей функции, и контейнера sidecar, который прикреплен к основному контейнеру приложения. Контейнер или пакет не всегда удаляются из-за сбоя приложения. В подобных сценариях вам потребуется явно перезапустить Kubernetes Pod. В этой статье вы узнаете, как принудительно перезапустить модули в развертывании несколькими способами.
Чтобы перезапустить модуль с помощью kubectl, убедитесь, что вы установили инструмент kubectl вместе с кластером minikube. В противном случае вы не сможете реализовать прописанную статью.
Чтобы перезапустить поды с помощью Kubectl, вы должны сначала запустить кластер minikube, используя следующую добавленную команду в терминале.
$ minikube start
Этот процесс займет некоторое время, поэтому вам придется подождать некоторое время, чтобы завершить процесс эффективно. Теперь мы готовы составить список модулей с помощью прикрепленной команды.
$ kubectl get pods
Вы можете пока это проверить; в системе присутствует только один модуль. Теперь создадим развертывание. Итак, изначально нам нужно создать файл конфигурации для развертывания. Создайте файл в домашнем каталоге вашей системы с помощью прикрепленной команды.
$ touch deployment.YAML
Файл будет создан в вашем домашнем каталоге. Откройте его, запишите прикрепленный ниже сценарий в файл конфигурации и сохраните его.
Теперь создайте развертывание с помощью следующей прикрепленной команды kubectl.
$ kubectl create –f deployment.yaml
Развертывание будет успешно создано. Теперь снова подключите все модули вашей системы с помощью прикрепленной команды kubectl.
$ kubectl get pods
Убедитесь, что теперь работают 2 модуля, как показано на скриншоте выше.
Последовательный перезапуск будет использоваться для перезапуска каждого модуля в порядке от развертывания. Это наиболее рекомендуемая стратегия, поскольку она не приведет к перерыву в обслуживании. Напишите в терминале команду, указанную ниже.
$ kubectl rollout restart deployment <deployment name>
Замените <deployment name> в соответствии с вашими потребностями.
Упомянутая выше команда перезапустит его. Ваше приложение будет доступно, поскольку большинство контейнеров будут работать.
Второй метод — заставить поды перезапускаться и синхронизироваться с изменениями, внесенными вами путем установки или изменения переменной среды.
$ kubectl set env deployment <deployment name> DEPLOY_DATE="$(date)"
Замените <deployment name> в соответствии с вашими потребностями.
Уменьшение количества копий развертывания до нуля и масштабирование до соответствующего состояния — еще один метод перезапуска модулей. Это заставляет все текущие модули прекратить работу и прекратить работу, после чего на их место будет назначено расписание новых модулей. Ограничение количества копий до 0 приведет к отключению. Следовательно, рекомендуется непрерывный перезапуск. Используйте следующую добавленную команду, чтобы установить для реплик развертывания значение 0.
$ kubectl scale deployment <deployment name> --replicas=0
Замените <deployment name> в соответствии с вашими потребностями.
Масштаб команд определяет количество реплик, которые должны быть активны для каждого модуля. Он эффективно завершает процесс, когда пользователи устанавливают его на ноль. Чтобы снова запустить упомянутый под, мы собираемся установить его значение реплики больше 0.
$ kubectl scale deployment <deployment name> --replicas=1
Замените <deployment name> в соответствии с вашими потребностями.
Kubernetes — это эффективная платформа для оркестровки контейнеров. Однако трудности возникают, как и со всеми системами. Таким образом, перезапуск модуля не решит основную проблему, которая изначально вызвала его сбой, поэтому обязательно определите и устраните основную причину. Мы надеемся, что вы легко сможете перезапустить свой модуль, следуя любому из методов, описанных в этом руководстве.