code: func CheckNodeUnschedulablePredicate(pod *v1.Pod, meta PredicateMetadata, nodeInfo *schedulernodeinfo.NodeInfo) (bool, []PredicateFailureReason, error) {
  	if nodeInfo == nil || nodeInfo.Node() == nil {
  		return false, []PredicateFailureReason{ErrNodeUnknownCondition}, nil
  	}
  
  	// If pod tolerate unschedulable taint, it's also tolerate `node.Spec.Unschedulable`.
  	podToleratesUnschedulable := v1helper.TolerationsTolerateTaint(pod.Spec.Tolerations, &v1.Taint{
  		Key:    schedulerapi.TaintNodeUnschedulable,
  		Effect: v1.TaintEffectNoSchedule,
  	})
  
  	// TODO (k82cn): deprecates `node.Spec.Unschedulable` in 1.13.
  	if nodeInfo.Node().Spec.Unschedulable && !podToleratesUnschedulable {
  		return false, []PredicateFailureReason{ErrNodeUnschedulable}, nil
  	}
  
  	return true, nil, nil
  }
docs: // CheckNodeUnschedulablePredicate checks if a pod can be scheduled on a node with Unschedulable spec.