<p>From <code>PodInterface</code> the two operations <code>Delete</code> and <code>Evict</code> seems having the same effect: deleting the old Pod and creating a new Pod.</p>

<p>If the two operations have the same effect, why do we need two API to delete a Pod and create a new one?</p>

<p>Deletion of a pod is done by an end user and is a normal activity. It means the pod will be deleted from ETCD and kubernetes control plane. Unless there is a higher level controller such as deployment, daemonset, statefulset etc the pod will not be created again and scheduled to a kubernetes worker node.</p>

<p>Eviction happens if resource consumption by pod is exceeded the limit and kubelet triggers eviction of the pod or a user performs <code>kubectl drain</code> or manually invoking the <code>eviction API</code>. It's generally not not a normal activity .Sometimes evicted pods are not automatically deleted from ETCD and kubernetes control plane. Unless there is a higher level controller such as deployment, daemonset, statefulset etc the evicted pod will not be created again and scheduled to a kubernetes worker node.</p>

<p>It's preferable to use delete instead of evict because evict comes with more risk compared to delete because eviction may lead to in some cases, an application to a broken state if the replacement pod created by the application’s controller(deployment etc.) does not become ready, or if the last pod evicted has a very long termination grace period</p>
