My Application stops gracefully when receiving a SIGTERM. graceful-stop operation is deleting a znode in the ZooKeeper.
But what I try is to automatically terminate a process gracefully before the Kubernetes evicts my pod.
I want to set prestop hook to "kill 1" to make a graceful-stop before the pod is evicted.
I'm not expecting prestop hook will work in all cases, but I think, this way I'll have some assurance.
I wonder if my idea is feasible.
Yes preStop
is possible - and covers your use case. Here's the k8s docs example:
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","nginx -s quit; while killall -0 nginx; do sleep 1; done"]