У меня есть ловушка preStop, определенная в ресурсе модуля с отслеживанием состояния, который запускает сценарий bash, чтобы не убить модуль, пока несколько процессов не завершат / отменит / не завершат работу в приложении. У меня не определено terminationGracePeriodSeconds. Теперь, когда я удаляю модуль, я проверил, что сценарий, являющийся частью ловушки preStop, выполняется должным образом. Но после добавления terminationGracePeriodSeconds на 10 минут, сначала bash-скрипт запускается как часть preStop-хука в течение нескольких минут, и предполагается, что он убивает pod. Но pod зависает в статусе TERMINATING и убивается только через 10 мин.
- Почему подвешивается стручок? Не удалось найти на это ответа.
- Когда terminationGracePeriodSeconds не был добавлен, поток работал должным образом, убивая модуль сразу после завершения скрипта или в течение 30 секунд, что является terminationGracePeriodSeconds. Но когда я добавил период отсрочки 10 минут или больше, он ждет до этого времени, а затем убивает модуль.
Как решить эту проблему. Есть ли способ отправить SIGTERM или SIGKILL в модуль. Любые идеи? Заранее спасибо!
STATEFULSET.YAML
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: appx
name: appx
spec:
serviceName: appx
replicas: 1
updateStrategy:
type: RollingUpdate
selector:
matchLabels:
app: appx
template:
metadata:
labels:
app: appx
spec:
#removed some of the sensitive info
terminationGracePeriodSeconds: 600
containers:
- image: appx
imagePullPolicy: IfNotPresent
name: appx
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 30 && bash /var/tmp/runscript.sh; sleep10"]
KUBECTL DESCRIBE POD
**kubectl describe pod appx**
Name: appx
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.3
Start Time: Mon, 21 Sep 2020 07:30:55 -0500
Labels: app=appx
Annotations: <none>
Status: Running
IP: x.x.x.x
Controlled By: StatefulSet/appx
Containers:
appx:
Container ID: docker://dfdgfgfgfgfgfgfg
Image: appx
Image ID: docker://sha256:49dfgfgfgfgfgfgfgfgfg96a6fc
Port: <none>
Host Port: <none>
State: Running
Started: Mon, 21 Sep 2020 07:30:56 -0500
Ready: True
Restart Count: 0
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
data:
Type: EmptyDir (a temporary directory that shares a pod's lifetime)
Medium:
SizeLimit: <unset>
appx-token-xj6q9:
Type: Secret (a volume populated by a Secret)
SecretName: appx-token-fhfdlf
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m43s default-scheduler Successfully assigned default/appx to docker-desktop
Normal Pulled 2m42s kubelet, docker-desktop Container image "appx" already present on machine
Normal Created 2m42s kubelet, docker-desktop Created container appx
Normal Started 2m42s kubelet, docker-desktop Started container appx
describe pod
? - person acid_fuji   schedule 21.09.2020