Kubernetes - это система с открытым исходным кодом, созданная для оркестровки, масштабирования и развертывания контейнерных приложений. Если вы хоть раз работали с Kubernetes, то знаете, насколько он полезен для управления контейнерами.
Вы также знаете, что контейнеры не всегда работают должным образом. Если появляется сообщение об ошибке, вам нужен быстрый и простой способ решить проблему.
Из этого туториала Вы узнаете, как перезапустить поды в Kubernetes.
Под (Pod) – наименьшая запускаемая единица в ноде. Это группа контейнеров, которые должны работать вместе.
Перезапуск подов Kubernetes
Допустим, один из подов в вашем контейнере сообщает об ошибке. В зависимости от политики перезапуска Kubernetes может попытаться автоматически перезапустить под, чтобы он снова заработал. Однако это не всегда решает проблему.
Если Kubernetes не может решить проблему самостоятельно, и вы не можете найти источник ошибки, перезапуск пода вручную - это самый быстрый способ вернуть приложение в рабочее состояние. Быстрое решение - вручную перезапустить затронутые поды. Это может сэкономить ваше время, особенно если ваше приложение работает и вы не хотите выключать службу.
Вот три простых способа сделать это.
Метод 1: Rolling Restart
Начиная с обновления 1.15, Kubernetes позволяет выполнять непрерывный перезапуск развертывания. В качестве нового дополнения к Kubernetes это самый быстрый метод перезапуска.
kubectl rollout restart deployment [deployment_name]
Вышеупомянутая команда выполняет пошаговое завершение работы и перезапускает каждый контейнер в вашем развертывании. Ваше приложение по-прежнему будет доступно, поскольку большинство контейнеров все еще будут работать.
Метод 2: Использование переменных среды
Другой способ - установить или изменить переменную среды, чтобы поды перезагружались и синхронизировались с внесенными вами изменениями. Например, вы можете изменить дату развертывания контейнера:
kubectl set env deployment [deployment_name] DEPLOY_DATE="$(date)"
В приведенном выше примере набор команд env
настраивает изменение переменных среды, развертывание [deployment_name]
выбирает ваше развертывание, а DEPLOY_DATE="$(date)
изменяет дату развертывания.
Метод 3. Масштабирование количества реплик
Наконец, вы можете использовать команду масштабирования, чтобы изменить количество реплик неисправного пода. Установка этого количества на ноль по существу отключает под:
kubectl scale deployment [deployment_name] --replicas=0
Чтобы перезапустить под, используйте ту же команду, чтобы установить количество реплик на любое значение больше нуля:
kubectl scale deployment [deployment_name] --replicas=1
Когда вы устанавливаете количество реплик равным нулю, Kubernetes уничтожает реплики, которые ему больше не нужны.
Как только вы установите число больше нуля, Kubernetes создаст новые реплики. Новые реплики будут иметь другие имена, чем старые. Вы можете использовать команду kubectl get pods
, чтобы проверить статус модулей и увидеть новые имена.
Итог
Kubernetes - чрезвычайно полезная система, но, как и любая другая система, она не безошибочна.
Когда все же возникают проблемы, вы можете использовать три перечисленных выше метода, чтобы быстро и безопасно заставить ваше приложение работать, не закрывая службу для ваших клиентов.