From 58ed69a9c87b6cfcfcb0829638f5ba5a7914b94f Mon Sep 17 00:00:00 2001
From: Gavin
Date: Fri, 24 Nov 2017 15:04:19 +0800
Subject: [PATCH] put pod controllerref to metadata
---
plugin/pkg/scheduler/algorithm/priorities/metadata.go | 3 +++
.../algorithm/priorities/node_prefer_avoid_pods.go | 9 ++++++++-
2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/plugin/pkg/scheduler/algorithm/priorities/metadata.go b/plugin/pkg/scheduler/algorithm/priorities/metadata.go
index 1e16c4aad4d..fb561241798 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/metadata.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/metadata.go
@@ -21,6 +21,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm"
+ priorityutil "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util"
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
)
@@ -47,6 +48,7 @@ type priorityMetadata struct {
podTolerations []v1.Toleration
affinity *v1.Affinity
podSelectors []labels.Selector
+ controllerRef *metav1.OwnerReference
}
// PriorityMetadata is a MetadataProducer. Node info can be nil.
@@ -62,6 +64,7 @@ func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, nodeNameToInfo
podTolerations: tolerationsPreferNoSchedule,
affinity: pod.Spec.Affinity,
podSelectors: podSelectors,
+ controllerRef: priorityutil.GetControllerRef(pod),
}
}
diff --git a/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go b/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go
index c4311fb3ab5..7392f76b716 100644
--- a/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go
+++ b/plugin/pkg/scheduler/algorithm/priorities/node_prefer_avoid_pods.go
@@ -20,6 +20,7 @@ import (
"fmt"
"k8s.io/api/core/v1"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper"
priorityutil "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util"
schedulerapi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
@@ -31,8 +32,14 @@ func CalculateNodePreferAvoidPodsPriorityMap(pod *v1.Pod, meta interface{}, node
if node == nil {
return schedulerapi.HostPriority{}, fmt.Errorf("node not found")
}
+ var controllerRef *metav1.OwnerReference
+ if priorityMeta, ok := meta.(*priorityMetadata); ok {
+ controllerRef = priorityMeta.controllerRef
+ } else {
+ // We couldn't parse metadata - fallback to the podspec.
+ controllerRef = priorityutil.GetControllerRef(pod)
+ }
- controllerRef := priorityutil.GetControllerRef(pod)
if controllerRef != nil {
// Ignore pods that are owned by other controller than ReplicationController
// or ReplicaSet.