Поиск по сайту:
Год ловеласа — 12 медовых месяцев (Ц. Меламед).

Как перезапустить поды в Kubernetes

15.09.2020
Как читать узлы в Kubernetes

Иногда вы можете попасть в ситуацию, когда вам нужно перезапустить Pod. Например, если ваш модуль находится в состоянии ошибки.

В зависимости от политики перезапуска Kubernetes сам пытается перезапустить и исправить это.

Но если это не сработает и вы не можете найти источник ошибки, перезапуск Kubernetes Pod вручную – это самый быстрый способ заставить ваше приложение снова заработать.

 

Как перезапустить поды в Kubernetes

К сожалению, для этой цели нет команды kubectl restart pod. Вот несколько способов перезапустить поды:

  1. Модуль развертывания перезапускается
  2. Масштабирование количества реплик

Позвольте нам подробно показать вам оба метода.

 

Метод 1. Перезапуск модуля развертывания

Начиная с версии Kubernetes 1.15, вы можете выполнять непрерывный перезапуск развертываний.

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

Примечание
IP-адреса отдельных модулей будут изменены.

 

Возьмем пример. У вас есть развертывание с именем my-dep, которое состоит из двух модулей (поскольку для реплики установлено значение два).

root@andreyex:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           13s

 

Давайте узнаем детали pod:

root@andreyex:~# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
my-dep-6d9f78d6c4-8j5fq   1/1     Running   0          47s   172.16.213.255   kworker-rj2   <none>           <none>
my-dep-6d9f78d6c4-rkhrz   1/1     Running   0          47s   172.16.213.35    kworker-rj1   <none>           <none>

 

Читать  Как удалить развертывание Kubernetes

Теперь давайте развернем перезапуск для развертывания my-dep с помощью такой команды:

kubectl rollout restart deployment name_of_deployment

 

Вы помните название развертывания из предыдущих команд? Используйте это здесь:

root@andreyex:~# kubectl rollout restart deployment my-dep
deployment.apps/my-dep restarted

 

Вы можете наблюдать за процессом завершения работы старых модулей и создания новых с помощью команды kubectl get pod -w:

root@andreyex:~# kubectl get pod -w
NAME                      READY   STATUS              RESTARTS   AGE
my-dep-557548758d-kz6r7   1/1     Running             0          5s
my-dep-557548758d-svg7w   0/1     ContainerCreating   0          1s
my-dep-6d9f78d6c4-8j5fq   1/1     Running             0          69s
my-dep-6d9f78d6c4-rkhrz   1/1     Terminating         0          69s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          69s
my-dep-557548758d-svg7w   0/1     ContainerCreating   0          1s
my-dep-557548758d-svg7w   1/1     Running             0          3s
my-dep-6d9f78d6c4-8j5fq   1/1     Terminating         0          71s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          72s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          74s
my-dep-6d9f78d6c4-rkhrz   0/1     Terminating         0          74s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          76s
my-dep-6d9f78d6c4-8j5fq   0/1     Terminating         0          76s

 

Если вы проверите модули сейчас, то увидите, что здесь детали изменились:

root@andreyex:~# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP               NODE          NOMINATED NODE   READINESS GATES
my-dep-557548758d-kz6r7   1/1     Running   0          42s   172.16.213.43    kworker-rj1   <none>           <none>
my-dep-557548758d-svg7w   1/1     Running   0          38s   172.16.213.251   kworker-rj2   <none>           <none>

 

Метод 2. Масштабирование количества реплик.

В среде CI/CD процесс перезагрузки модулей при возникновении ошибки может занять много времени, так как он должен снова пройти весь процесс сборки.

Более быстрый способ добиться этого – использовать команду kubectl scale для изменения номера реплики на ноль, и как только вы установите число больше нуля, Kubernetes создаст новые реплики.

Давай попробуем. Сначала проверьте свои pod:

root@andreyex:~# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-557548758d-kz6r7   1/1     Running   0          11m
my-dep-557548758d-svg7w   1/1     Running   0          11m

 

Читать  kubectl apply vs create. Какую команду использовать для создания ресурсов в кластерной среде Kubernetes?

Получите информацию о развертывании:

root@andreyex:~# kubectl get deployments
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
my-dep   2/2     2            2           12m

 

Теперь установите номер реплики на ноль:

root@andreyex:~# kubectl scale deployment --replicas=0 my-dep
deployment.apps/my-dep scaled

 

А затем установите его обратно на два:

root@andreyex:~# kubectscale deployment --replicas=2 my-dep
deployment.apps/my-dep scaled

 

Проверьте pod сейчас:

root@andreyex:~# kubectl get pod
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-557548758d-d2pmd   1/1     Running   0          10s
my-dep-557548758d-gprnr   1/1     Running   0          10s

 

Вы успешно перезапустили модули Kubernetes.

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

После выполнения этого упражнения убедитесь, что вы нашли основную проблему и исправили ее, поскольку перезапуск модуля не устранит основную проблему.

Надеюсь, вам понравится этот совет Kubernetes. Не забудьте подписаться на больше.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Ремонт компьютеров, как и большинство других вещей, изменился перед лицом…

Спасибо!

Теперь редакторы в курсе.