Как проверить удалениеGracePeriodSeconds в шаблонах подов с помощью K8S - PullRequest
0 голосов
/ 05 августа 2020

Я новичок в k8s. Я хочу протестировать функцию deletionGracePeriodSeconds. В документации говорится:

deletionGracePeriodSeconds (целое число): количество секунд, в течение которых этот объект должен корректно завершиться, прежде чем он будет удален из системы. Устанавливается только тогда, когда также установлено deletionTimestamp.

Я предполагаю, что если модуль завершается правильно, функция не применяется.

Итак, как я могу сделать так, чтобы модуль "отклонил" удаление чтобы увидеть, как работает эта функция? Работает ли удаление по команде:

kubectl delete pod mypod 

или только с запланированным удалением с «deletionTimestamp»

Вот как я пытался это сделать (с помощью команды trap), но это не так похоже, работает:

apiVersion: v1
kind: Pod
metadata:
  deletionGracePeriodSeconds: 10
  deletionTimestamp: 2020-08-05T14:40:00Z
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
    command: ["/bin/sh", "-c"]
    args:
    - trap "" 2 3 15 20 | sleep 600

Заранее спасибо, Абдельгани

1 Ответ

1 голос
/ 05 августа 2020

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

terminationGracePeriodSeconds - это время между отправкой Kubernetes сигнала SIGTERM на основной процесс модуля (PID 1) до тех пор, пока он не отправит сигнал SIGKILL, который внезапно завершит процесс (а затем и сам модуль). Сигнал

SIGTERM предназначен для интерпретации процессом , и он должен начать «плавное завершение работы» - перестать получать новые задачи и sh завершить работу над существующими. Если процессу в вашем модуле требуется более 30 секунд для этой процедуры (допустим, вы запускаете воркер, который обрабатывает каждую задачу за 2 минуты), вам нужно соответственно расширить terminationGracePeriodSeconds.

Таким образом, вы не можете заставить модуль «отклонить» удаление, но ваш процесс может либо игнорировать сигнал SIGTERM, а затем по истечении периода, заданного в terminationGracePeriodSeconds, он будет внезапно завершен, или может быть так, что ваш процесс требуется больше времени для корректного завершения работы (и в этом случае вам нужно увеличить `

...