From c9314dde593b0b845fa5345e58230e620ad41195 Mon Sep 17 00:00:00 2001 From: Aldo Culquicondor Date: Fri, 20 Mar 2020 16:18:44 -0400 Subject: [PATCH 1/3] Add support for multiple label values in test cases They are assigned in a round robin fashion Signed-off-by: Aldo Culquicondor --- .../config/performance-config.yaml | 2 +- test/utils/runners.go | 17 +++++++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/test/integration/scheduler_perf/config/performance-config.yaml b/test/integration/scheduler_perf/config/performance-config.yaml index 4ea03b9959a..34ac6dc4b16 100644 --- a/test/integration/scheduler_perf/config/performance-config.yaml +++ b/test/integration/scheduler_perf/config/performance-config.yaml @@ -162,7 +162,7 @@ nodeTemplatePath: config/node-default.yaml labelNodePrepareStrategy: labelKey: "failure-domain.beta.kubernetes.io/zone" - labelValue: "zone1" + labelValues: ["zone1"] initPods: - podTemplatePath: config/pod-with-node-affinity.yaml podsToSchedule: diff --git a/test/utils/runners.go b/test/utils/runners.go index aaac8bd37d5..fde5a703071 100644 --- a/test/utils/runners.go +++ b/test/utils/runners.go @@ -980,22 +980,27 @@ func (*TrivialNodePrepareStrategy) CleanupDependentObjects(nodeName string, clie } type LabelNodePrepareStrategy struct { - LabelKey string - LabelValue string + LabelKey string + LabelValues []string + roundRobinIdx int } var _ PrepareNodeStrategy = &LabelNodePrepareStrategy{} -func NewLabelNodePrepareStrategy(labelKey string, labelValue string) *LabelNodePrepareStrategy { +func NewLabelNodePrepareStrategy(labelKey string, labelValues ...string) *LabelNodePrepareStrategy { return &LabelNodePrepareStrategy{ - LabelKey: labelKey, - LabelValue: labelValue, + LabelKey: labelKey, + LabelValues: labelValues, } } func (s *LabelNodePrepareStrategy) PreparePatch(*v1.Node) []byte { - labelString := fmt.Sprintf("{\"%v\":\"%v\"}", s.LabelKey, s.LabelValue) + labelString := fmt.Sprintf("{\"%v\":\"%v\"}", s.LabelKey, s.LabelValues[s.roundRobinIdx]) patch := fmt.Sprintf(`{"metadata":{"labels":%v}}`, labelString) + s.roundRobinIdx++ + if s.roundRobinIdx == len(s.LabelValues) { + s.roundRobinIdx = 0 + } return []byte(patch) } From 671cd339862cab311df0aa62ea7f9a490f0f79cc Mon Sep 17 00:00:00 2001 From: Aldo Culquicondor Date: Mon, 23 Mar 2020 14:33:46 -0400 Subject: [PATCH 2/3] Add perf test cases for topology spreading Signed-off-by: Aldo Culquicondor --- .../config/performance-config.yaml | 36 +++++++++++++++++++ ...pod-with-preferred-topology-spreading.yaml | 21 +++++++++++ .../config/pod-with-topology-spreading.yaml | 21 +++++++++++ 3 files changed, 78 insertions(+) create mode 100644 test/integration/scheduler_perf/config/pod-with-preferred-topology-spreading.yaml create mode 100644 test/integration/scheduler_perf/config/pod-with-topology-spreading.yaml diff --git a/test/integration/scheduler_perf/config/performance-config.yaml b/test/integration/scheduler_perf/config/performance-config.yaml index 34ac6dc4b16..f9cb6a254aa 100644 --- a/test/integration/scheduler_perf/config/performance-config.yaml +++ b/test/integration/scheduler_perf/config/performance-config.yaml @@ -174,6 +174,42 @@ - numNodes: 5000 numInitPods: [5000] numPodsToSchedule: 1000 +- template: + desc: TopologySpreading + nodes: + nodeTemplatePath: config/node-default.yaml + labelNodePrepareStrategy: + labelKey: "topology.kubernetes.io/zone" + labelValues: ["moon-1", "moon-2", "moon-3"] + initPods: + - podTemplatePath: config/pod-default.yaml + podsToSchedule: + podTemplatePath: config/pod-with-topology-spreading.yaml + params: + - numNodes: 500 + numInitPods: [1000] + numPodsToSchedule: 1000 + - numNodes: 5000 + numInitPods: [5000] + numPodsToSchedule: 2000 +- template: + desc: PreferredTopologySpreading + nodes: + nodeTemplatePath: config/node-default.yaml + labelNodePrepareStrategy: + labelKey: "topology.kubernetes.io/zone" + labelValues: ["moon-1", "moon-2", "moon-3"] + initPods: + - podTemplatePath: config/pod-default.yaml + podsToSchedule: + podTemplatePath: config/pod-with-preferred-topology-spreading.yaml + params: + - numNodes: 500 + numInitPods: [1000] + numPodsToSchedule: 1000 + - numNodes: 5000 + numInitPods: [5000] + numPodsToSchedule: 2000 - template: desc: MixedSchedulingBasePod initPods: diff --git a/test/integration/scheduler_perf/config/pod-with-preferred-topology-spreading.yaml b/test/integration/scheduler_perf/config/pod-with-preferred-topology-spreading.yaml new file mode 100644 index 00000000000..39a171f393a --- /dev/null +++ b/test/integration/scheduler_perf/config/pod-with-preferred-topology-spreading.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + generateName: spreading-pod- +spec: + topologySpreadConstraints: + - maxSkew: 5 + topologyKey: topology.kubernetes.io/zone + whenUnsatisfiable: ScheduleAnyway + containers: + - image: k8s.gcr.io/pause:3.2 + name: pause + ports: + - containerPort: 80 + resources: + limits: + cpu: 100m + memory: 500Mi + requests: + cpu: 100m + memory: 500Mi diff --git a/test/integration/scheduler_perf/config/pod-with-topology-spreading.yaml b/test/integration/scheduler_perf/config/pod-with-topology-spreading.yaml new file mode 100644 index 00000000000..cb3769675ed --- /dev/null +++ b/test/integration/scheduler_perf/config/pod-with-topology-spreading.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Pod +metadata: + generateName: spreading-pod- +spec: + topologySpreadConstraints: + - maxSkew: 5 + topologyKey: topology.kubernetes.io/zone + whenUnsatisfiable: DoNotSchedule + containers: + - image: k8s.gcr.io/pause:3.2 + name: pause + ports: + - containerPort: 80 + resources: + limits: + cpu: 100m + memory: 500Mi + requests: + cpu: 100m + memory: 500Mi From 9b2ff544ede9c064002637b5bd00597105347e94 Mon Sep 17 00:00:00 2001 From: Aldo Culquicondor Date: Thu, 26 Mar 2020 15:52:44 -0400 Subject: [PATCH 3/3] Fix pod affinity performance test configuration Signed-off-by: Aldo Culquicondor --- .../integration/scheduler_perf/config/performance-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/integration/scheduler_perf/config/performance-config.yaml b/test/integration/scheduler_perf/config/performance-config.yaml index f9cb6a254aa..3be7e3b77af 100644 --- a/test/integration/scheduler_perf/config/performance-config.yaml +++ b/test/integration/scheduler_perf/config/performance-config.yaml @@ -110,9 +110,9 @@ desc: SchedulingPodAffinity nodes: nodeTemplatePath: config/node-default.yaml - labelNodeStrategy: + labelNodePrepareStrategy: labelKey: "failure-domain.beta.kubernetes.io/zone" - labelValue: "zone1" + labelValues: ["zone1"] initPods: - podTemplatePath: config/pod-with-pod-affinity.yaml podsToSchedule: