mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #84542 from Huang-Wei/priority-meta-signature
Expose filteredNodes to func PriorityMetadataProducer
This commit is contained in:
commit
87c60f32ff
@ -62,7 +62,7 @@ type priorityMetadata struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PriorityMetadata is a PriorityMetadataProducer. Node info can be nil.
|
// PriorityMetadata is a PriorityMetadataProducer. Node info can be nil.
|
||||||
func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) interface{} {
|
func (pmf *PriorityMetadataFactory) PriorityMetadata(pod *v1.Pod, _ []*v1.Node, sharedLister schedulerlisters.SharedLister) interface{} {
|
||||||
// If we cannot compute metadata, just return nil
|
// If we cannot compute metadata, just return nil
|
||||||
if pod == nil {
|
if pod == nil {
|
||||||
return nil
|
return nil
|
||||||
|
@ -173,7 +173,7 @@ func TestPriorityMetadata(t *testing.T) {
|
|||||||
)
|
)
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
ptData := metaDataProducer(test.pod, nil)
|
ptData := metaDataProducer(test.pod, nil, nil)
|
||||||
if !reflect.DeepEqual(test.expected, ptData) {
|
if !reflect.DeepEqual(test.expected, ptData) {
|
||||||
t.Errorf("expected %#v, got %#v", test.expected, ptData)
|
t.Errorf("expected %#v, got %#v", test.expected, ptData)
|
||||||
}
|
}
|
||||||
|
@ -337,7 +337,8 @@ func TestSelectorSpreadPriority(t *testing.T) {
|
|||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, makeNodeList(test.nodes))
|
nodes := makeNodeList(test.nodes)
|
||||||
|
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, nodes)
|
||||||
selectorSpread := SelectorSpread{
|
selectorSpread := SelectorSpread{
|
||||||
serviceLister: fakelisters.ServiceLister(test.services),
|
serviceLister: fakelisters.ServiceLister(test.services),
|
||||||
controllerLister: fakelisters.ControllerLister(test.rcs),
|
controllerLister: fakelisters.ControllerLister(test.rcs),
|
||||||
@ -350,7 +351,7 @@ func TestSelectorSpreadPriority(t *testing.T) {
|
|||||||
fakelisters.ControllerLister(test.rcs),
|
fakelisters.ControllerLister(test.rcs),
|
||||||
fakelisters.ReplicaSetLister(test.rss),
|
fakelisters.ReplicaSetLister(test.rss),
|
||||||
fakelisters.StatefulSetLister(test.sss))
|
fakelisters.StatefulSetLister(test.sss))
|
||||||
metaData := metaDataProducer(test.pod, snapshot)
|
metaData := metaDataProducer(test.pod, nodes, snapshot)
|
||||||
|
|
||||||
ttp := priorityFunction(selectorSpread.CalculateSpreadPriorityMap, selectorSpread.CalculateSpreadPriorityReduce, metaData)
|
ttp := priorityFunction(selectorSpread.CalculateSpreadPriorityMap, selectorSpread.CalculateSpreadPriorityReduce, metaData)
|
||||||
list, err := ttp(test.pod, snapshot, makeNodeList(test.nodes))
|
list, err := ttp(test.pod, snapshot, makeNodeList(test.nodes))
|
||||||
@ -573,7 +574,8 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
|
|||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, makeLabeledNodeList(labeledNodes))
|
nodes := makeLabeledNodeList(labeledNodes)
|
||||||
|
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, nodes)
|
||||||
selectorSpread := SelectorSpread{
|
selectorSpread := SelectorSpread{
|
||||||
serviceLister: fakelisters.ServiceLister(test.services),
|
serviceLister: fakelisters.ServiceLister(test.services),
|
||||||
controllerLister: fakelisters.ControllerLister(test.rcs),
|
controllerLister: fakelisters.ControllerLister(test.rcs),
|
||||||
@ -586,7 +588,7 @@ func TestZoneSelectorSpreadPriority(t *testing.T) {
|
|||||||
fakelisters.ControllerLister(test.rcs),
|
fakelisters.ControllerLister(test.rcs),
|
||||||
fakelisters.ReplicaSetLister(test.rss),
|
fakelisters.ReplicaSetLister(test.rss),
|
||||||
fakelisters.StatefulSetLister(test.sss))
|
fakelisters.StatefulSetLister(test.sss))
|
||||||
metaData := metaDataProducer(test.pod, snapshot)
|
metaData := metaDataProducer(test.pod, nodes, snapshot)
|
||||||
ttp := priorityFunction(selectorSpread.CalculateSpreadPriorityMap, selectorSpread.CalculateSpreadPriorityReduce, metaData)
|
ttp := priorityFunction(selectorSpread.CalculateSpreadPriorityMap, selectorSpread.CalculateSpreadPriorityReduce, metaData)
|
||||||
list, err := ttp(test.pod, snapshot, makeLabeledNodeList(labeledNodes))
|
list, err := ttp(test.pod, snapshot, makeLabeledNodeList(labeledNodes))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -765,7 +767,8 @@ func TestZoneSpreadPriority(t *testing.T) {
|
|||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
t.Run(test.name, func(t *testing.T) {
|
t.Run(test.name, func(t *testing.T) {
|
||||||
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, makeLabeledNodeList(test.nodes))
|
nodes := makeLabeledNodeList(labeledNodes)
|
||||||
|
snapshot := nodeinfosnapshot.NewSnapshot(test.pods, nodes)
|
||||||
zoneSpread := ServiceAntiAffinity{podLister: snapshot.Pods(), serviceLister: fakelisters.ServiceLister(test.services), label: "zone"}
|
zoneSpread := ServiceAntiAffinity{podLister: snapshot.Pods(), serviceLister: fakelisters.ServiceLister(test.services), label: "zone"}
|
||||||
|
|
||||||
metaDataProducer := NewPriorityMetadataFactory(
|
metaDataProducer := NewPriorityMetadataFactory(
|
||||||
@ -773,7 +776,7 @@ func TestZoneSpreadPriority(t *testing.T) {
|
|||||||
fakelisters.ControllerLister(rcs),
|
fakelisters.ControllerLister(rcs),
|
||||||
fakelisters.ReplicaSetLister(rss),
|
fakelisters.ReplicaSetLister(rss),
|
||||||
fakelisters.StatefulSetLister(sss))
|
fakelisters.StatefulSetLister(sss))
|
||||||
metaData := metaDataProducer(test.pod, snapshot)
|
metaData := metaDataProducer(test.pod, nodes, snapshot)
|
||||||
ttp := priorityFunction(zoneSpread.CalculateAntiAffinityPriorityMap, zoneSpread.CalculateAntiAffinityPriorityReduce, metaData)
|
ttp := priorityFunction(zoneSpread.CalculateAntiAffinityPriorityMap, zoneSpread.CalculateAntiAffinityPriorityReduce, metaData)
|
||||||
list, err := ttp(test.pod, snapshot, makeLabeledNodeList(test.nodes))
|
list, err := ttp(test.pod, snapshot, makeLabeledNodeList(test.nodes))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -36,7 +36,7 @@ type PriorityReduceFunction func(pod *v1.Pod, meta interface{}, sharedLister sch
|
|||||||
|
|
||||||
// PriorityMetadataProducer is a function that computes metadata for a given pod. This
|
// PriorityMetadataProducer is a function that computes metadata for a given pod. This
|
||||||
// is now used for only for priority functions. For predicates please use PredicateMetadataProducer.
|
// is now used for only for priority functions. For predicates please use PredicateMetadataProducer.
|
||||||
type PriorityMetadataProducer func(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) interface{}
|
type PriorityMetadataProducer func(pod *v1.Pod, filteredNodes []*v1.Node, sharedLister schedulerlisters.SharedLister) interface{}
|
||||||
|
|
||||||
// PriorityFunction is a function that computes scores for all nodes.
|
// PriorityFunction is a function that computes scores for all nodes.
|
||||||
// DEPRECATED
|
// DEPRECATED
|
||||||
@ -55,6 +55,6 @@ type PriorityConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// EmptyPriorityMetadataProducer returns a no-op PriorityMetadataProducer type.
|
// EmptyPriorityMetadataProducer returns a no-op PriorityMetadataProducer type.
|
||||||
func EmptyPriorityMetadataProducer(pod *v1.Pod, sharedLister schedulerlisters.SharedLister) interface{} {
|
func EmptyPriorityMetadataProducer(pod *v1.Pod, filteredNodes []*v1.Node, sharedLister schedulerlisters.SharedLister) interface{} {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -30,10 +30,11 @@ import (
|
|||||||
func TestEmptyPriorityMetadataProducer(t *testing.T) {
|
func TestEmptyPriorityMetadataProducer(t *testing.T) {
|
||||||
fakePod := st.MakePod().Name("p1").Node("node2").Obj()
|
fakePod := st.MakePod().Name("p1").Node("node2").Obj()
|
||||||
fakeLabelSelector := labels.SelectorFromSet(labels.Set{"foo": "bar"})
|
fakeLabelSelector := labels.SelectorFromSet(labels.Set{"foo": "bar"})
|
||||||
|
fakeNodes := []*v1.Node{st.MakeNode().Name("node1").Obj(), st.MakeNode().Name("node-a").Obj()}
|
||||||
|
|
||||||
snapshot := nodeinfosnapshot.NewSnapshot([]*v1.Pod{fakePod}, []*v1.Node{st.MakeNode().Name("node1").Obj(), st.MakeNode().Name("node-a").Obj()})
|
snapshot := nodeinfosnapshot.NewSnapshot([]*v1.Pod{fakePod}, fakeNodes)
|
||||||
// Test EmptyPriorityMetadataProducer
|
// Test EmptyPriorityMetadataProducer
|
||||||
metadata := EmptyPriorityMetadataProducer(fakePod, snapshot)
|
metadata := EmptyPriorityMetadataProducer(fakePod, fakeNodes, snapshot)
|
||||||
if metadata != nil {
|
if metadata != nil {
|
||||||
t.Errorf("failed to produce empty metadata: got %v, expected nil", metadata)
|
t.Errorf("failed to produce empty metadata: got %v, expected nil", metadata)
|
||||||
}
|
}
|
||||||
|
@ -238,7 +238,7 @@ func (g *genericScheduler) Schedule(ctx context.Context, state *framework.CycleS
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
metaPrioritiesInterface := g.priorityMetaProducer(pod, g.nodeInfoSnapshot)
|
metaPrioritiesInterface := g.priorityMetaProducer(pod, filteredNodes, g.nodeInfoSnapshot)
|
||||||
priorityList, err := PrioritizeNodes(ctx, pod, g.nodeInfoSnapshot, metaPrioritiesInterface, g.prioritizers, filteredNodes, g.extenders, g.framework, state)
|
priorityList, err := PrioritizeNodes(ctx, pod, g.nodeInfoSnapshot, metaPrioritiesInterface, g.prioritizers, filteredNodes, g.extenders, g.framework, state)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return result, err
|
return result, err
|
||||||
|
@ -1008,7 +1008,7 @@ func TestZeroRequest(t *testing.T) {
|
|||||||
informerFactory.Apps().V1().StatefulSets().Lister(),
|
informerFactory.Apps().V1().StatefulSets().Lister(),
|
||||||
)
|
)
|
||||||
|
|
||||||
metaData := metaDataProducer(test.pod, snapshot)
|
metaData := metaDataProducer(test.pod, test.nodes, snapshot)
|
||||||
|
|
||||||
list, err := PrioritizeNodes(
|
list, err := PrioritizeNodes(
|
||||||
context.Background(),
|
context.Background(),
|
||||||
|
@ -201,7 +201,7 @@ func TestImageLocalityPriority(t *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
snapshot := nodeinfosnapshot.NewSnapshot(nil, test.nodes)
|
snapshot := nodeinfosnapshot.NewSnapshot(nil, test.nodes)
|
||||||
meta := metaDataProducer(test.pod, snapshot)
|
meta := metaDataProducer(test.pod, test.nodes, snapshot)
|
||||||
|
|
||||||
state := framework.NewCycleState()
|
state := framework.NewCycleState()
|
||||||
state.Write(migration.PrioritiesStateKey, &migration.PrioritiesStateData{Reference: meta})
|
state.Write(migration.PrioritiesStateKey, &migration.PrioritiesStateData{Reference: meta})
|
||||||
|
Loading…
Reference in New Issue
Block a user