code: func PodFitsHostPorts(pod *v1.Pod, meta PredicateMetadata, nodeInfo *schedulernodeinfo.NodeInfo) (bool, []PredicateFailureReason, error) {
  	var wantPorts []*v1.ContainerPort
  	if predicateMeta, ok := meta.(*predicateMetadata); ok {
  		wantPorts = predicateMeta.podPorts
  	} else {
  		// We couldn't parse metadata - fallback to computing it.
  		wantPorts = schedutil.GetContainerPorts(pod)
  	}
  	if len(wantPorts) == 0 {
  		return true, nil, nil
  	}
  
  	existingPorts := nodeInfo.UsedPorts()
  
  	// try to see whether existingPorts and  wantPorts will conflict or not
  	if portsConflict(existingPorts, wantPorts) {
  		return false, []PredicateFailureReason{ErrPodNotFitsHostPorts}, nil
  	}
  
  	return true, nil, nil
  }
docs: // PodFitsHostPorts checks if a node has free ports for the requested pod ports.