Eli Schiff created YUNIKORN-1616:
------------------------------------

             Summary: Terminating scheduler pods still actively scheduling when 
replacement pod launches
                 Key: YUNIKORN-1616
                 URL: https://issues.apache.org/jira/browse/YUNIKORN-1616
             Project: Apache YuniKorn
          Issue Type: Bug
            Reporter: Eli Schiff
            Assignee: Eli Schiff


If a yunikorn scheduler pod gets shut down for any reason (EX: manually 
deleted) the pod goes into a terminating state. After maybe 30 seconds the pod 
is fully shut down. However, once the pod goes into that terminating state, the 
replica set from the k8s deployment immediately creates a new pod. This can 
cause race conditions where both pods are trying to schedule for a short period 
of time. 

I have noticed errors like `failed to create placeholder pod \{"error": "pods 
\"tg-spark-executor-abcdefg-0\" already exists"}` caused by both scheduler pods 
attempting to make this placeholder pod at once. I believe this has also caused 
pods to get stuck pending when they should have been scheduled.

 

There is currently discussion about adding a way to tell k8s deployments to not 
allow new pods to start before the old pod is fully shut down. 
[https://github.com/kubernetes/kubernetes/issues/115844]

 

In the meantime the solutions seems to be to switch to a statefulset.

[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#recreate-deployment]
 

> *Note:* This will only guarantee Pod termination previous to creation for 
>upgrades. If you upgrade a Deployment, all Pods of the old revision will be 
>terminated immediately. Successful removal is awaited before any Pod of the 
>new revision is created. If you manually delete a Pod, the lifecycle is 
>controlled by the ReplicaSet and the replacement will be created immediately 
>(even if the old Pod is still in a Terminating state). If you need an "at 
>most" guarantee for your Pods, you should consider using a 
>[StatefulSet|https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/].

 

>From what I can tell, the use of a StatefulSet here is a pretty smooth 
>transition, but I am not sure if there are wider issues or implications to 
>this change that I do not know about.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to