From aaac9228a244b94540a21fcf446e06454de846e0 Mon Sep 17 00:00:00 2001 From: Guangya Liu Date: Tue, 6 Jun 2017 23:29:35 +0800 Subject: [PATCH] godoc update for scheduler predicates. --- .../pkg/scheduler/algorithm/predicates/predicates.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/plugin/pkg/scheduler/algorithm/predicates/predicates.go b/plugin/pkg/scheduler/algorithm/predicates/predicates.go index a6b644a5091..dbb214c943d 100644 --- a/plugin/pkg/scheduler/algorithm/predicates/predicates.go +++ b/plugin/pkg/scheduler/algorithm/predicates/predicates.go @@ -564,6 +564,9 @@ func podName(pod *v1.Pod) string { return pod.Namespace + "/" + pod.Name } +// PodFitsResources checks if a node has sufficient resources, such as cpu, memory, gpu, opaque int resources etc to run a pod. +// First return value indicates whether a node has sufficient resources to run a pod while the second return value indicates the +// predicate failure reasons if the node has insufficient resources to run the pod. func PodFitsResources(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { node := nodeInfo.Node() if node == nil { @@ -693,6 +696,7 @@ func podMatchesNodeLabels(pod *v1.Pod, node *v1.Node) bool { return nodeAffinityMatches } +// PodMatchNodeSelector checks if a pod node selector matches the node label. func PodMatchNodeSelector(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { node := nodeInfo.Node() if node == nil { @@ -704,6 +708,7 @@ func PodMatchNodeSelector(pod *v1.Pod, meta interface{}, nodeInfo *schedulercach return false, []algorithm.PredicateFailureReason{ErrNodeSelectorNotMatch}, nil } +// PodFitsHost checks if a pod spec node name matches the current node. func PodFitsHost(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { if len(pod.Spec.NodeName) == 0 { return true, nil, nil @@ -864,6 +869,7 @@ func (s *ServiceAffinity) checkServiceAffinity(pod *v1.Pod, meta interface{}, no return false, []algorithm.PredicateFailureReason{ErrServiceAffinityViolated}, nil } +// PodFitsHostPorts checks if a node has free ports for the requested pod ports. func PodFitsHostPorts(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { var wantPorts map[int]bool if predicateMeta, ok := meta.(*predicateMetadata); ok { @@ -897,6 +903,8 @@ func haveSame(a1, a2 []string) bool { return false } +// GeneralPredicates checks whether noncriticalPredicates and EssentialPredicates pass. noncriticalPredicates are the predicates +// that only non-critical pods need and EssentialPredicates are the predicates that all pods, including critical pods, need func GeneralPredicates(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { var predicateFails []algorithm.PredicateFailureReason fit, reasons, err := noncriticalPredicates(pod, meta, nodeInfo) @@ -976,6 +984,9 @@ func NewPodAffinityPredicate(info NodeInfo, podLister algorithm.PodLister) algor return checker.InterPodAffinityMatches } +// InterPodAffinityMatches checks if a pod can be scheduled on the specified node with pod affinity/anti-affinity configuration. +// First return value indicates whether a pod can be scheduled on the specified node while the second return value indicates the +// predicate failure reasons if the pod cannot be scheduled on the specified node. func (c *PodAffinityChecker) InterPodAffinityMatches(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { node := nodeInfo.Node() if node == nil { @@ -1234,6 +1245,7 @@ func (c *PodAffinityChecker) satisfiesPodsAffinityAntiAffinity(pod *v1.Pod, node return true } +// PodToleratesNodeTaints checks if a pod tolertaions can tolerate the node taints func PodToleratesNodeTaints(pod *v1.Pod, meta interface{}, nodeInfo *schedulercache.NodeInfo) (bool, []algorithm.PredicateFailureReason, error) { taints, err := nodeInfo.Taints() if err != nil {