code: func (kl *Kubelet) canAdmitPod(pods []*v1.Pod, pod *v1.Pod) (bool, string, string) {
  	// the kubelet will invoke each pod admit handler in sequence
  	// if any handler rejects, the pod is rejected.
  	// TODO: move out of disk check into a pod admitter
  	// TODO: out of resource eviction should have a pod admitter call-out
  	attrs := &lifecycle.PodAdmitAttributes{Pod: pod, OtherPods: pods}
  	for _, podAdmitHandler := range kl.admitHandlers {
  		if result := podAdmitHandler.Admit(attrs); !result.Admit {
  			return false, result.Reason, result.Message
  		}
  	}
  
  	return true, "", ""
  }
docs: // canAdmitPod determines if a pod can be admitted, and gives a reason if it
  // cannot. "pod" is new pod, while "pods" are all admitted pods
  // The function returns a boolean value indicating whether the pod
  // can be admitted, a brief single-word reason and a message explaining why
  // the pod cannot be admitted.