code: func (dc *DeploymentController) deletePod(obj interface{}) {
  	pod, ok := obj.(*v1.Pod)
  
  	// When a delete is dropped, the relist will notice a pod in the store not
  	// in the list, leading to the insertion of a tombstone object which contains
  	// the deleted key/value. Note that this value might be stale. If the Pod
  	// changed labels the new deployment will not be woken up till the periodic resync.
  	if !ok {
  		tombstone, ok := obj.(cache.DeletedFinalStateUnknown)
  		if !ok {
  			utilruntime.HandleError(fmt.Errorf("Couldn't get object from tombstone %#v", obj))
  			return
  		}
  		pod, ok = tombstone.Obj.(*v1.Pod)
  		if !ok {
  			utilruntime.HandleError(fmt.Errorf("Tombstone contained object that is not a pod %#v", obj))
  			return
  		}
  	}
  	klog.V(4).Infof("Pod %s deleted.", pod.Name)
  	if d := dc.getDeploymentForPod(pod); d != nil && d.Spec.Strategy.Type == apps.RecreateDeploymentStrategyType {
  		// Sync if this Deployment now has no more Pods.
  		rsList, err := util.ListReplicaSets(d, util.RsListFromClient(dc.client.AppsV1()))
  		if err != nil {
  			return
  		}
  		podMap, err := dc.getPodMapForDeployment(d, rsList)
  		if err != nil {
  			return
  		}
  		numPods := 0
  		for _, podList := range podMap {
  			numPods += len(podList.Items)
  		}
  		if numPods == 0 {
  			dc.enqueueDeployment(d)
  		}
  	}
  }
docs: // deletePod will enqueue a Recreate Deployment once all of its pods have stopped running.