Дождитесь завершения процесса перед завершением модуля в kubernetes

#kubernetes

#kubernetes

Вопрос:

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

 terminationGracePeriodSeconds 
 

и

 lifecycle:
        preStop:
          exec:
            command:
              - "sleep"
              - "60"
 

Ответ №1:

Льготный период завершения и предварительная остановка — это две разные вещи. Льготный период — это время, которое kubelet дает вам для корректного завершения работы (путем обработки сигналов TERM). Перехват предварительной остановки можно использовать для выполнения команды перед завершением работы модуля. Если предварительный перехват превышает льготный период, ему дается еще 2 секунды на завершение.

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

Дополнительная информация о завершении модуля: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination