Can I terminate a process gracefully before the hard eviction with a prestop hook?

2/24/2021

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.

-- Park Beomsu
apache-zookeeper
go
kubernetes

1 Answer

2/24/2021

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"]
-- colm.anseo
Source: StackOverflow