code: func (kl *Kubelet) runPod(pod *v1.Pod, retryDelay time.Duration) error {
  	delay := retryDelay
  	retry := 0
  	for {
  		status, err := kl.containerRuntime.GetPodStatus(pod.UID, pod.Name, pod.Namespace)
  		if err != nil {
  			return fmt.Errorf("Unable to get status for pod %q: %v", format.Pod(pod), err)
  		}
  
  		if kl.isPodRunning(pod, status) {
  			klog.Infof("pod %q containers running", format.Pod(pod))
  			return nil
  		}
  		klog.Infof("pod %q containers not running: syncing", format.Pod(pod))
  
  		klog.Infof("Creating a mirror pod for static pod %q", format.Pod(pod))
  		if err := kl.podManager.CreateMirrorPod(pod); err != nil {
  			klog.Errorf("Failed creating a mirror pod %q: %v", format.Pod(pod), err)
  		}
  		mirrorPod, _ := kl.podManager.GetMirrorPodByPod(pod)
  		if err = kl.syncPod(syncPodOptions{
  			pod:        pod,
  			mirrorPod:  mirrorPod,
  			podStatus:  status,
  			updateType: kubetypes.SyncPodUpdate,
  		}); err != nil {
  			return fmt.Errorf("error syncing pod %q: %v", format.Pod(pod), err)
  		}
  		if retry >= runOnceMaxRetries {
  			return fmt.Errorf("timeout error: pod %q containers not running after %d retries", format.Pod(pod), runOnceMaxRetries)
  		}
  		// TODO(proppy): health checking would be better than waiting + checking the state at the next iteration.
  		klog.Infof("pod %q containers synced, waiting for %v", format.Pod(pod), delay)
  		time.Sleep(delay)
  		retry++
  		delay *= runOnceRetryDelayBackoff
  	}
  }
docs: // runPod runs a single pod and wait until all containers are running.