Skip to content

Commit b8ddd00

Browse files
committed
scheduler's NodeInfo tracks PodInfos instead of Pods
1 parent 3072d1e commit b8ddd00

File tree

25 files changed

+358
-381
lines changed

25 files changed

+358
-381
lines changed

pkg/scheduler/core/extender.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@ func (h *HTTPExtender) convertToNodeToVictims(
287287
func (h *HTTPExtender) convertPodUIDToPod(
288288
metaPod *extenderv1.MetaPod,
289289
nodeInfo *framework.NodeInfo) (*v1.Pod, error) {
290-
for _, pod := range nodeInfo.Pods() {
291-
if string(pod.UID) == metaPod.UID {
292-
return pod, nil
290+
for _, p := range nodeInfo.Pods() {
291+
if string(p.Pod.UID) == metaPod.UID {
292+
return p.Pod, nil
293293
}
294294
}
295295
return nil, fmt.Errorf("extender: %v claims to preempt pod (UID: %v) on node: %v, but the pod is not found on that node",

pkg/scheduler/core/extender_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -226,9 +226,9 @@ func (f *FakeExtender) selectVictimsOnNodeByExtender(pod *v1.Pod, node *v1.Node)
226226
// check if the given pod can be scheduled.
227227
podPriority := podutil.GetPodPriority(pod)
228228
for _, p := range nodeInfoCopy.Pods() {
229-
if podutil.GetPodPriority(p) < podPriority {
230-
potentialVictims = append(potentialVictims, p)
231-
removePod(p)
229+
if podutil.GetPodPriority(p.Pod) < podPriority {
230+
potentialVictims = append(potentialVictims, p.Pod)
231+
removePod(p.Pod)
232232
}
233233
}
234234
sort.Slice(potentialVictims, func(i, j int) bool { return util.MoreImportantPod(potentialVictims[i], potentialVictims[j]) })

pkg/scheduler/core/generic_scheduler.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -971,9 +971,9 @@ func (g *genericScheduler) selectVictimsOnNode(
971971
// check if the given pod can be scheduled.
972972
podPriority := podutil.GetPodPriority(pod)
973973
for _, p := range nodeInfo.Pods() {
974-
if podutil.GetPodPriority(p) < podPriority {
975-
potentialVictims = append(potentialVictims, p)
976-
if err := removePod(p); err != nil {
974+
if podutil.GetPodPriority(p.Pod) < podPriority {
975+
potentialVictims = append(potentialVictims, p.Pod)
976+
if err := removePod(p.Pod); err != nil {
977977
return nil, 0, false
978978
}
979979
}
@@ -1063,7 +1063,7 @@ func podEligibleToPreemptOthers(pod *v1.Pod, nodeInfos framework.NodeInfoLister,
10631063
if nodeInfo, _ := nodeInfos.Get(nomNodeName); nodeInfo != nil {
10641064
podPriority := podutil.GetPodPriority(pod)
10651065
for _, p := range nodeInfo.Pods() {
1066-
if p.DeletionTimestamp != nil && podutil.GetPodPriority(p) < podPriority {
1066+
if p.Pod.DeletionTimestamp != nil && podutil.GetPodPriority(p.Pod) < podPriority {
10671067
// There is a terminating pod on the nominated node.
10681068
return false
10691069
}

pkg/scheduler/framework/plugins/defaultpodtopologyspread/default_pod_topology_spread.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,11 @@ func countMatchingPods(namespace string, selector labels.Selector, nodeInfo *fra
200200
return 0
201201
}
202202
count := 0
203-
for _, pod := range nodeInfo.Pods() {
203+
for _, p := range nodeInfo.Pods() {
204204
// Ignore pods being deleted for spreading purposes
205205
// Similar to how it is done for SelectorSpreadPriority
206-
if namespace == pod.Namespace && pod.DeletionTimestamp == nil {
207-
if selector.Matches(labels.Set(pod.Labels)) {
206+
if namespace == p.Pod.Namespace && p.Pod.DeletionTimestamp == nil {
207+
if selector.Matches(labels.Set(p.Pod.Labels)) {
208208
count++
209209
}
210210
}

pkg/scheduler/framework/plugins/interpodaffinity/filtering.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ func getTPMapMatchingExistingAntiAffinity(pod *v1.Pod, allNodes []*framework.Nod
229229
return
230230
}
231231
for _, existingPod := range nodeInfo.PodsWithAffinity() {
232-
existingPodTopologyMaps, err := getMatchingAntiAffinityTopologyPairsOfPod(pod, existingPod, node)
232+
existingPodTopologyMaps, err := getMatchingAntiAffinityTopologyPairsOfPod(pod, existingPod.Pod, node)
233233
if err != nil {
234234
errCh.SendErrorWithCancel(err, cancel)
235235
return
@@ -293,10 +293,10 @@ func getTPMapMatchingIncomingAffinityAntiAffinity(pod *v1.Pod, allNodes []*frame
293293
nodeTopologyPairsAntiAffinityPodsMap := make(topologyToMatchedTermCount)
294294
for _, existingPod := range nodeInfo.Pods() {
295295
// Check affinity terms.
296-
nodeTopologyPairsAffinityPodsMap.updateWithAffinityTerms(existingPod, node, affinityTerms, 1)
296+
nodeTopologyPairsAffinityPodsMap.updateWithAffinityTerms(existingPod.Pod, node, affinityTerms, 1)
297297

298298
// Check anti-affinity terms.
299-
nodeTopologyPairsAntiAffinityPodsMap.updateWithAntiAffinityTerms(existingPod, node, antiAffinityTerms, 1)
299+
nodeTopologyPairsAntiAffinityPodsMap.updateWithAntiAffinityTerms(existingPod.Pod, node, antiAffinityTerms, 1)
300300
}
301301

302302
if len(nodeTopologyPairsAffinityPodsMap) > 0 || len(nodeTopologyPairsAntiAffinityPodsMap) > 0 {

pkg/scheduler/framework/plugins/interpodaffinity/scoring.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ func (pl *InterPodAffinity) PreScore(
247247

248248
topoScore := make(scoreMap)
249249
for _, existingPod := range podsToProcess {
250-
if err := pl.processExistingPod(state, existingPod, nodeInfo, pod, topoScore); err != nil {
250+
if err := pl.processExistingPod(state, existingPod.Pod, nodeInfo, pod, topoScore); err != nil {
251251
errCh.SendErrorWithCancel(err, cancel)
252252
return
253253
}

pkg/scheduler/framework/plugins/noderesources/balanced_allocation_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ import (
3232
)
3333

3434
// getExistingVolumeCountForNode gets the current number of volumes on node.
35-
func getExistingVolumeCountForNode(pods []*v1.Pod, maxVolumes int) int {
35+
func getExistingVolumeCountForNode(podInfos []*framework.PodInfo, maxVolumes int) int {
3636
volumeCount := 0
37-
for _, pod := range pods {
38-
volumeCount += len(pod.Spec.Volumes)
37+
for _, p := range podInfos {
38+
volumeCount += len(p.Pod.Spec.Volumes)
3939
}
4040
if maxVolumes-volumeCount > 0 {
4141
return maxVolumes - volumeCount

pkg/scheduler/framework/plugins/nodevolumelimits/csi.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func (pl *CSILimits) Filter(ctx context.Context, _ *framework.CycleState, pod *v
103103

104104
attachedVolumes := make(map[string]string)
105105
for _, existingPod := range nodeInfo.Pods() {
106-
if err := pl.filterAttachableVolumes(csiNode, existingPod.Spec.Volumes, existingPod.Namespace, attachedVolumes); err != nil {
106+
if err := pl.filterAttachableVolumes(csiNode, existingPod.Pod.Spec.Volumes, existingPod.Pod.Namespace, attachedVolumes); err != nil {
107107
return framework.NewStatus(framework.Error, err.Error())
108108
}
109109
}

pkg/scheduler/framework/plugins/nodevolumelimits/non_csi.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ func (pl *nonCSILimits) Filter(ctx context.Context, _ *framework.CycleState, pod
236236
// count unique volumes
237237
existingVolumes := make(map[string]bool)
238238
for _, existingPod := range nodeInfo.Pods() {
239-
if err := pl.filterVolumes(existingPod.Spec.Volumes, existingPod.Namespace, existingVolumes); err != nil {
239+
if err := pl.filterVolumes(existingPod.Pod.Spec.Volumes, existingPod.Pod.Namespace, existingVolumes); err != nil {
240240
return framework.NewStatus(framework.Error, err.Error())
241241
}
242242
}

pkg/scheduler/framework/plugins/podtopologyspread/common.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2222
"k8s.io/apimachinery/pkg/labels"
2323
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper"
24+
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
2425
)
2526

2627
type topologyPair struct {
@@ -83,14 +84,14 @@ func filterTopologySpreadConstraints(constraints []v1.TopologySpreadConstraint,
8384
return result, nil
8485
}
8586

86-
func countPodsMatchSelector(pods []*v1.Pod, selector labels.Selector, ns string) int {
87+
func countPodsMatchSelector(podInfos []*framework.PodInfo, selector labels.Selector, ns string) int {
8788
count := 0
88-
for _, p := range pods {
89+
for _, p := range podInfos {
8990
// Bypass terminating Pod (see #87621).
90-
if p.DeletionTimestamp != nil || p.Namespace != ns {
91+
if p.Pod.DeletionTimestamp != nil || p.Pod.Namespace != ns {
9192
continue
9293
}
93-
if selector.Matches(labels.Set(p.Labels)) {
94+
if selector.Matches(labels.Set(p.Pod.Labels)) {
9495
count++
9596
}
9697
}

0 commit comments

Comments
 (0)