Модуль Node.js не получает сигнал жизненного цикла preStop от Kubernetes - PullRequest
0 голосов
/ 10 января 2019

Я хочу корректно завершить работу Node.js, но он не получает сигнал PreStop от Kubernetes.

process.on('preStop', handleShutdown);

function handleShutdown() {
  console.log("Pod will shut down in 30 seconds");
}

В настоящее время у меня нет команды preStop жизненного цикла в .yaml, потому что я не смог найти способ заставить ее уведомить работника Node.js

Спасибо!

1 Ответ

0 голосов
/ 15 мая 2019

preStop Команда убьет контейнер. По сути, это убьет процесс вашего приложения. Если вы установили только preStop, он, к сожалению, не работает. Вот пример POD, я играл с миникубе, чтобы проверить.

apiVersion: v1
kind: Pod
metadata:
  name: lifecycle-demo
spec:
  containers:
  - name: lifecycle-demo-container
    image: nginx
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
      preStop:
        exec:
          command: ["/bin/sh", "-c", "/bin/sleep 120"]
  terminationGracePeriodSeconds: 6000

Я говорю держать убийство в течение 120 секунд, прежде чем убить его. Если этого не произойдет, он будет насильственно убит через 6000 секунд.

Для вашего случая достаточно terminationGracePeriodSeconds.

...