Какой лучший способ запустить задачу messenger:consume
в Kubernetes?
Развертывание?
Если мы сделаем это с развертыванием с определенным количеством репликэто может сработать, но что если мы сделаем непрерывное обновление развертывания, которое затем приведет к замене модуля, хотя он обрабатывает долго выполняющееся сообщение?
Чтобы предотвратить это, мы, вероятно, могли бы установитьhigh terminationGracePeriodSeconds
и использовать lifecycle.preStop
в комбинации?
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: deploy
name: deploy
spec:
replicas: 1
selector:
matchLabels:
run: deploy
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: deploy
spec:
terminationGracePeriodSeconds: 6000
containers:
- command:
- sh
- -c
- sleep 1d # bin/console messenger:consume
image: bash
name: deploy
lifecycle:
preStop:
exec:
command:
- sh
- -c
- echo "Test if a message is consumed at the moment and prevent POD shutdown till then?"
Но во время моих тестов, даже если задачи lifecycle.preStop
заканчиваются рано, полное время, определенное terminationGracePeriodSeconds
, все еще ждет, пока модульпрекращено.
У кого-нибудь есть хорошая идея?