code: func groupPods(client kube_client.Interface, node *v1.Node) ([]*v1.Pod, []*v1.Pod, error) {
  	podsOnNode, err := client.CoreV1().Pods(v1.NamespaceAll).List(
  		metav1.ListOptions{FieldSelector: fields.SelectorFromSet(fields.Set{"spec.nodeName": node.Name}).String()})
  	if err != nil {
  		return []*v1.Pod{}, []*v1.Pod{}, err
  	}
  
  	requiredPods := make([]*v1.Pod, 0)
  	otherPods := make([]*v1.Pod, 0)
  	for i := range podsOnNode.Items {
  		pod := &podsOnNode.Items[i]
  
  		//creatorRef, err := ca_drain.CreatorRefKind(pod)
  		if err != nil {
  			return []*v1.Pod{}, []*v1.Pod{}, err
  		}
  
  		if isMirrorPod(pod) || isDaemonsetPod(pod) || isCriticalPod(pod) {
  			requiredPods = append(requiredPods, pod)
  		} else {
  			otherPods = append(otherPods, pod)
  		}
  	}
  
  	return requiredPods, otherPods, nil
  }
docs: // groupPods divides pods running on <node> into those which can't be deleted and the others