mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 20:53:33 +00:00
EvenPodsSpread: Make some funcs in predicates pkg as public
This commit is contained in:
parent
f25cc921e1
commit
821446ed70
@ -229,12 +229,12 @@ func getTPMapMatchingSpreadConstraints(pod *v1.Pod, nodeInfoMap map[string]*sche
|
|||||||
}
|
}
|
||||||
// In accordance to design, if NodeAffinity or NodeSelector is defined,
|
// In accordance to design, if NodeAffinity or NodeSelector is defined,
|
||||||
// spreading is applied to nodes that pass those filters.
|
// spreading is applied to nodes that pass those filters.
|
||||||
if !podMatchesNodeSelectorAndAffinityTerms(pod, node) {
|
if !PodMatchesNodeSelectorAndAffinityTerms(pod, node) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ensure current node's labels contains all topologyKeys in 'constraints'.
|
// Ensure current node's labels contains all topologyKeys in 'constraints'.
|
||||||
if !nodeLabelsMatchSpreadConstraints(node.Labels, constraints) {
|
if !NodeLabelsMatchSpreadConstraints(node.Labels, constraints) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
nodeTopologyMaps := newTopologyPairsMaps()
|
nodeTopologyMaps := newTopologyPairsMaps()
|
||||||
@ -319,7 +319,7 @@ func podMatchesSpreadConstraint(podLabelSet labels.Set, constraint v1.TopologySp
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check if ALL topology keys in spread constraints are present in node labels
|
// check if ALL topology keys in spread constraints are present in node labels
|
||||||
func nodeLabelsMatchSpreadConstraints(nodeLabels map[string]string, constraints []v1.TopologySpreadConstraint) bool {
|
func NodeLabelsMatchSpreadConstraints(nodeLabels map[string]string, constraints []v1.TopologySpreadConstraint) bool {
|
||||||
for _, constraint := range constraints {
|
for _, constraint := range constraints {
|
||||||
if _, ok := nodeLabels[constraint.TopologyKey]; !ok {
|
if _, ok := nodeLabels[constraint.TopologyKey]; !ok {
|
||||||
return false
|
return false
|
||||||
@ -388,7 +388,7 @@ func (m *topologyPairsPodSpreadMap) addPod(addedPod, preemptorPod *v1.Pod, node
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
constraints := getHardTopologySpreadConstraints(preemptorPod)
|
constraints := getHardTopologySpreadConstraints(preemptorPod)
|
||||||
if !nodeLabelsMatchSpreadConstraints(node.Labels, constraints) {
|
if !NodeLabelsMatchSpreadConstraints(node.Labels, constraints) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -853,9 +853,9 @@ func nodeMatchesNodeSelectorTerms(node *v1.Node, nodeSelectorTerms []v1.NodeSele
|
|||||||
return v1helper.MatchNodeSelectorTerms(nodeSelectorTerms, labels.Set(node.Labels), fields.Set(nodeFields))
|
return v1helper.MatchNodeSelectorTerms(nodeSelectorTerms, labels.Set(node.Labels), fields.Set(nodeFields))
|
||||||
}
|
}
|
||||||
|
|
||||||
// podMatchesNodeSelectorAndAffinityTerms checks whether the pod is schedulable onto nodes according to
|
// PodMatchesNodeSelectorAndAffinityTerms checks whether the pod is schedulable onto nodes according to
|
||||||
// the requirements in both NodeAffinity and nodeSelector.
|
// the requirements in both NodeAffinity and nodeSelector.
|
||||||
func podMatchesNodeSelectorAndAffinityTerms(pod *v1.Pod, node *v1.Node) bool {
|
func PodMatchesNodeSelectorAndAffinityTerms(pod *v1.Pod, node *v1.Node) bool {
|
||||||
// Check if node.Labels match pod.Spec.NodeSelector.
|
// Check if node.Labels match pod.Spec.NodeSelector.
|
||||||
if len(pod.Spec.NodeSelector) > 0 {
|
if len(pod.Spec.NodeSelector) > 0 {
|
||||||
selector := labels.SelectorFromSet(pod.Spec.NodeSelector)
|
selector := labels.SelectorFromSet(pod.Spec.NodeSelector)
|
||||||
@ -906,7 +906,7 @@ func PodMatchNodeSelector(pod *v1.Pod, meta PredicateMetadata, nodeInfo *schedul
|
|||||||
if node == nil {
|
if node == nil {
|
||||||
return false, nil, fmt.Errorf("node not found")
|
return false, nil, fmt.Errorf("node not found")
|
||||||
}
|
}
|
||||||
if podMatchesNodeSelectorAndAffinityTerms(pod, node) {
|
if PodMatchesNodeSelectorAndAffinityTerms(pod, node) {
|
||||||
return true, nil, nil
|
return true, nil, nil
|
||||||
}
|
}
|
||||||
return false, []PredicateFailureReason{ErrNodeSelectorNotMatch}, nil
|
return false, []PredicateFailureReason{ErrNodeSelectorNotMatch}, nil
|
||||||
|
@ -23,7 +23,7 @@ import (
|
|||||||
"k8s.io/api/core/v1"
|
"k8s.io/api/core/v1"
|
||||||
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
schedulerapi "k8s.io/kubernetes/pkg/scheduler/api"
|
||||||
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo"
|
||||||
u "k8s.io/kubernetes/pkg/scheduler/util"
|
st "k8s.io/kubernetes/pkg/scheduler/testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Test_topologySpreadConstrantsMap_initialize(t *testing.T) {
|
func Test_topologySpreadConstrantsMap_initialize(t *testing.T) {
|
||||||
@ -35,14 +35,14 @@ func Test_topologySpreadConstrantsMap_initialize(t *testing.T) {
|
|||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "normal case",
|
name: "normal case",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "zone", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "zone", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("zone", "zone1").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("zone", "zone1").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-b").Label("zone", "zone1").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("zone", "zone1").Label("node", "node-b").Obj(),
|
||||||
u.MakeNode().Name("node-x").Label("zone", "zone2").Label("node", "node-x").Obj(),
|
st.MakeNode().Name("node-x").Label("zone", "zone2").Label("node", "node-x").Obj(),
|
||||||
},
|
},
|
||||||
want: map[topologyPair][]string{
|
want: map[topologyPair][]string{
|
||||||
{key: "zone", value: "zone1"}: {"node-a", "node-b"},
|
{key: "zone", value: "zone1"}: {"node-a", "node-b"},
|
||||||
@ -83,12 +83,12 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
{
|
{
|
||||||
// if there is only one candidate node, it should be scored to 10
|
// if there is only one candidate node, it should be scored to 10
|
||||||
name: "one constraint on node, no existing pods",
|
name: "one constraint on node, no existing pods",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
||||||
},
|
},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
{Host: "node-a", Score: 10},
|
{Host: "node-a", Score: 10},
|
||||||
@ -98,19 +98,19 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
{
|
{
|
||||||
// if there is only one candidate node, it should be scored to 10
|
// if there is only one candidate node, it should be scored to 10
|
||||||
name: "one constraint on node, only one node is candidate",
|
name: "one constraint on node, only one node is candidate",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
existingPods: []*v1.Pod{
|
existingPods: []*v1.Pod{
|
||||||
u.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
||||||
},
|
},
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
||||||
},
|
},
|
||||||
failedNodes: []*v1.Node{
|
failedNodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
||||||
},
|
},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
{Host: "node-a", Score: 10},
|
{Host: "node-a", Score: 10},
|
||||||
@ -121,22 +121,22 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
// after reversing, it's 4/5/6/3
|
// after reversing, it's 4/5/6/3
|
||||||
// so scores = 40/6, 50/6, 60/6, 30/6
|
// so scores = 40/6, 50/6, 60/6, 30/6
|
||||||
name: "one constraint on node, all 4 nodes are candidates",
|
name: "one constraint on node, all 4 nodes are candidates",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
existingPods: []*v1.Pod{
|
existingPods: []*v1.Pod{
|
||||||
u.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-d1").Node("node-d").Label("foo", "").Obj(),
|
st.MakePod().Name("p-d1").Node("node-d").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-d2").Node("node-d").Label("foo", "").Obj(),
|
st.MakePod().Name("p-d2").Node("node-d").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-d3").Node("node-d").Label("foo", "").Obj(),
|
st.MakePod().Name("p-d3").Node("node-d").Label("foo", "").Obj(),
|
||||||
},
|
},
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
||||||
u.MakeNode().Name("node-c").Label("node", "node-c").Obj(),
|
st.MakeNode().Name("node-c").Label("node", "node-c").Obj(),
|
||||||
u.MakeNode().Name("node-d").Label("node", "node-d").Obj(),
|
st.MakeNode().Name("node-d").Label("node", "node-d").Obj(),
|
||||||
},
|
},
|
||||||
failedNodes: []*v1.Node{},
|
failedNodes: []*v1.Node{},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
@ -151,28 +151,28 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
// after reversing, it's 3/5/6
|
// after reversing, it's 3/5/6
|
||||||
// so scores = 30/6, 50/6, 60/6
|
// so scores = 30/6, 50/6, 60/6
|
||||||
name: "one constraint on node, 3 out of 4 nodes are candidates",
|
name: "one constraint on node, 3 out of 4 nodes are candidates",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
existingPods: []*v1.Pod{
|
existingPods: []*v1.Pod{
|
||||||
u.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a3").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a3").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a4").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a4").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b2").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b2").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
st.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
||||||
},
|
},
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("node", "node-b").Obj(),
|
||||||
u.MakeNode().Name("node-x").Label("node", "node-x").Obj(),
|
st.MakeNode().Name("node-x").Label("node", "node-x").Obj(),
|
||||||
},
|
},
|
||||||
failedNodes: []*v1.Node{
|
failedNodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-y").Label("node", "node-y").Obj(),
|
st.MakeNode().Name("node-y").Label("node", "node-y").Obj(),
|
||||||
},
|
},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
{Host: "node-a", Score: 5},
|
{Host: "node-a", Score: 5},
|
||||||
@ -185,28 +185,28 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
// after reversing, it's 1/?/4
|
// after reversing, it's 1/?/4
|
||||||
// so scores = 10/4, 0, 40/4
|
// so scores = 10/4, 0, 40/4
|
||||||
name: "one constraint on node, 3 out of 4 nodes are candidates",
|
name: "one constraint on node, 3 out of 4 nodes are candidates",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
existingPods: []*v1.Pod{
|
existingPods: []*v1.Pod{
|
||||||
u.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a3").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a3").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a4").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a4").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b2").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b2").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
st.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
||||||
},
|
},
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-b").Label("n", "node-b").Obj(), // label `n` doesn't match topologyKey
|
st.MakeNode().Name("node-b").Label("n", "node-b").Obj(), // label `n` doesn't match topologyKey
|
||||||
u.MakeNode().Name("node-x").Label("node", "node-x").Obj(),
|
st.MakeNode().Name("node-x").Label("node", "node-x").Obj(),
|
||||||
},
|
},
|
||||||
failedNodes: []*v1.Node{
|
failedNodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-y").Label("node", "node-y").Obj(),
|
st.MakeNode().Name("node-y").Label("node", "node-y").Obj(),
|
||||||
},
|
},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
{Host: "node-a", Score: 2},
|
{Host: "node-a", Score: 2},
|
||||||
@ -219,28 +219,28 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
// after reversing, it's 10/10/12
|
// after reversing, it's 10/10/12
|
||||||
// so scores = 100/12, 100/12, 120/12
|
// so scores = 100/12, 100/12, 120/12
|
||||||
name: "one constraint on zone, 3 out of 4 nodes are candidates",
|
name: "one constraint on zone, 3 out of 4 nodes are candidates",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "zone", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "zone", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
existingPods: []*v1.Pod{
|
existingPods: []*v1.Pod{
|
||||||
u.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a3").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a3").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a4").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a4").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b2").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b2").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
st.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
||||||
},
|
},
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("zone", "zone1").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("zone", "zone1").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-b").Label("zone", "zone1").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("zone", "zone1").Label("node", "node-b").Obj(),
|
||||||
u.MakeNode().Name("node-x").Label("zone", "zone2").Label("node", "node-x").Obj(),
|
st.MakeNode().Name("node-x").Label("zone", "zone2").Label("node", "node-x").Obj(),
|
||||||
},
|
},
|
||||||
failedNodes: []*v1.Node{
|
failedNodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-y").Label("zone", "zone2").Label("node", "node-y").Obj(),
|
st.MakeNode().Name("node-y").Label("zone", "zone2").Label("node", "node-y").Obj(),
|
||||||
},
|
},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
{Host: "node-a", Score: 8},
|
{Host: "node-a", Score: 8},
|
||||||
@ -253,28 +253,28 @@ func TestCalculateEvenPodsSpreadPriority(t *testing.T) {
|
|||||||
// after reversing, it's 8/5
|
// after reversing, it's 8/5
|
||||||
// so scores = 80/8, 50/8
|
// so scores = 80/8, 50/8
|
||||||
name: "two constraint on zone and node, 2 out of 4 nodes are candidates",
|
name: "two constraint on zone and node, 2 out of 4 nodes are candidates",
|
||||||
pod: u.MakePod().Name("p").Label("foo", "").
|
pod: st.MakePod().Name("p").Label("foo", "").
|
||||||
SpreadConstraint(1, "zone", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "zone", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
SpreadConstraint(1, "node", softSpread, u.MakeLabelSelector().Exists("foo").Obj()).
|
SpreadConstraint(1, "node", softSpread, st.MakeLabelSelector().Exists("foo").Obj()).
|
||||||
Obj(),
|
Obj(),
|
||||||
existingPods: []*v1.Pod{
|
existingPods: []*v1.Pod{
|
||||||
u.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a1").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
st.MakePod().Name("p-a2").Node("node-a").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
st.MakePod().Name("p-b1").Node("node-b").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
st.MakePod().Name("p-x1").Node("node-x").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-x2").Node("node-x").Label("foo", "").Obj(),
|
st.MakePod().Name("p-x2").Node("node-x").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y1").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y2").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y3").Node("node-y").Label("foo", "").Obj(),
|
||||||
u.MakePod().Name("p-y4").Node("node-y").Label("foo", "").Obj(),
|
st.MakePod().Name("p-y4").Node("node-y").Label("foo", "").Obj(),
|
||||||
},
|
},
|
||||||
nodes: []*v1.Node{
|
nodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-a").Label("zone", "zone1").Label("node", "node-a").Obj(),
|
st.MakeNode().Name("node-a").Label("zone", "zone1").Label("node", "node-a").Obj(),
|
||||||
u.MakeNode().Name("node-x").Label("zone", "zone2").Label("node", "node-x").Obj(),
|
st.MakeNode().Name("node-x").Label("zone", "zone2").Label("node", "node-x").Obj(),
|
||||||
},
|
},
|
||||||
failedNodes: []*v1.Node{
|
failedNodes: []*v1.Node{
|
||||||
u.MakeNode().Name("node-b").Label("zone", "zone1").Label("node", "node-b").Obj(),
|
st.MakeNode().Name("node-b").Label("zone", "zone1").Label("node", "node-b").Obj(),
|
||||||
u.MakeNode().Name("node-y").Label("zone", "zone2").Label("node", "node-y").Obj(),
|
st.MakeNode().Name("node-y").Label("zone", "zone2").Label("node", "node-y").Obj(),
|
||||||
},
|
},
|
||||||
want: []schedulerapi.HostPriority{
|
want: []schedulerapi.HostPriority{
|
||||||
{Host: "node-a", Score: 10},
|
{Host: "node-a", Score: 10},
|
||||||
|
Loading…
Reference in New Issue
Block a user