mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-11-13 06:04:02 +00:00
1422 lines
40 KiB
YAML
1422 lines
40 KiB
YAML
# The following labels are used in this file. (listed in ascending order of the number of covered test cases)
|
|
#
|
|
# - integration-test: test cases to run as the integration test, usually to spot some issues in the scheduler implementation or scheduler-perf itself.
|
|
# - performance: test cases to run in the performance test.
|
|
# - short: supplemental label for the above two labels (must not used alone), which literally means short execution time test cases.
|
|
#
|
|
# Specifically, the CIs use labels like the following:
|
|
# - `ci-kubernetes-integration-master` (`integration-test`): Test cases are chosen based on a tradeoff between code coverage and overall runtime.
|
|
# It basically covers all test cases but with their smallest workload.
|
|
# - `pull-kubernetes-integration` (`integration-test`,`short`): Test cases are chosen so that they should take less than total 5 min to complete.
|
|
# - `ci-benchmark-scheduler-perf` (`performance`): Long enough test cases are chosen (ideally, longer than 10 seconds)
|
|
# to provide meaningful samples for the pod scheduling rate.
|
|
#
|
|
# Also, `performance`+`short` isn't used in the CIs, but it's used to test the performance test locally.
|
|
# (Sometimes, the test cases with `integration-test` are too small to spot issues.)
|
|
#
|
|
# Combining "performance" and "fast" selects suitable workloads for a local
|
|
# before/after comparisons with benchstat.
|
|
|
|
- name: SchedulingBasic
|
|
defaultPodTemplatePath: config/templates/pod-default.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_10000Pods
|
|
labels: [performance]
|
|
threshold: 270
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 1000
|
|
measurePods: 10000
|
|
|
|
- name: SchedulingPodAntiAffinity
|
|
defaultPodTemplatePath: config/templates/pod-with-pod-anti-affinity.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createNamespaces
|
|
prefix: sched
|
|
count: 2
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
namespace: sched-1
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 1
|
|
measurePods: 4
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 100
|
|
measurePods: 400
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_2000Pods
|
|
labels: [performance]
|
|
threshold: 70
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 1000
|
|
measurePods: 2000
|
|
|
|
- name: SchedulingSecrets
|
|
defaultPodTemplatePath: config/templates/pod-with-secret-volume.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_10000Pods
|
|
labels: [performance]
|
|
threshold: 260
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 1000
|
|
measurePods: 10000
|
|
|
|
- name: SchedulingInTreePVs
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
persistentVolumeTemplatePath: config/templates/pv-aws.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
persistentVolumeTemplatePath: config/templates/pv-aws.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_2000Pods
|
|
labels: [performance]
|
|
threshold: 90
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 1000
|
|
measurePods: 2000
|
|
|
|
- name: SchedulingMigratedInTreePVs
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
nodeAllocatableStrategy:
|
|
nodeAllocatable:
|
|
attachable-volumes-csi-ebs.csi.aws.com: "39"
|
|
csiNodeAllocatable:
|
|
ebs.csi.aws.com:
|
|
count: 39
|
|
migratedPlugins:
|
|
- "kubernetes.io/aws-ebs"
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
persistentVolumeTemplatePath: config/templates/pv-aws.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
persistentVolumeTemplatePath: config/templates/pv-aws.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 35
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
- name: SchedulingCSIPVs
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
nodeAllocatableStrategy:
|
|
nodeAllocatable:
|
|
attachable-volumes-csi-ebs.csi.aws.com: "39"
|
|
csiNodeAllocatable:
|
|
ebs.csi.aws.com:
|
|
count: 39
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
persistentVolumeTemplatePath: config/templates/pv-csi.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
persistentVolumeTemplatePath: config/templates/pv-csi.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 48
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
- name: SchedulingPodAffinity
|
|
defaultPodTemplatePath: config/templates/pod-with-pod-affinity.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
labelNodePrepareStrategy:
|
|
labelKey: "topology.kubernetes.io/zone"
|
|
labelValues: ["zone1"]
|
|
- opcode: createNamespaces
|
|
prefix: sched
|
|
count: 2
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
namespace: sched-1
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 35
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
- name: SchedulingPreferredPodAffinity
|
|
defaultPodTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createNamespaces
|
|
prefix: sched
|
|
count: 2
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
namespace: sched-1
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 90
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
- name: SchedulingPreferredPodAntiAffinity
|
|
defaultPodTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createNamespaces
|
|
prefix: sched
|
|
count: 2
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
namespace: sched-1
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 90
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
# This test case simulates the scheduling of daemonset.
|
|
# https://github.com/kubernetes/kubernetes/issues/124709
|
|
- name: SchedulingDaemonset
|
|
defaultPodTemplatePath: config/templates/daemonset-pod.yaml
|
|
workloadTemplate:
|
|
# Create one node with a specific name (scheduler-perf-node),
|
|
# which is supposed to get all Pods created in this test case.
|
|
- opcode: createNodes
|
|
count: 1
|
|
nodeTemplatePath: config/templates/node-with-name.yaml
|
|
# Create other nodes that the scheduler has to filter out with PreFilterResult from NodeAffinity plugin.
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
# Create pods with nodeAffinity (metadata.name=scheduler-perf-node).
|
|
# This scenario doesn't schedule each Pod to each Node though,
|
|
# they go through completely the same scheduling process as daemonset pods does.
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
measurePods: 10
|
|
- name: 15000Nodes
|
|
labels: [performance, short]
|
|
threshold: 390
|
|
params:
|
|
initNodes: 15000
|
|
measurePods: 30000
|
|
|
|
- name: SchedulingNodeAffinity
|
|
defaultPodTemplatePath: config/templates/pod-with-node-affinity.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
labelNodePrepareStrategy:
|
|
labelKey: "topology.kubernetes.io/zone"
|
|
labelValues: ["zone1"]
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 5
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 500
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_10000Pods
|
|
labels: [performance]
|
|
threshold: 220
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 10000
|
|
|
|
- name: TopologySpreading
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
labelNodePrepareStrategy:
|
|
labelKey: "topology.kubernetes.io/zone"
|
|
labelValues: ["moon-1", "moon-2", "moon-3"]
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-default.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
podTemplatePath: config/templates/pod-with-topology-spreading.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 10
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 2000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 85
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
- name: PreferredTopologySpreading
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
labelNodePrepareStrategy:
|
|
labelKey: "topology.kubernetes.io/zone"
|
|
labelValues: ["moon-1", "moon-2", "moon-3"]
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-default.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
podTemplatePath: config/templates/pod-with-preferred-topology-spreading.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 10
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 2000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 125
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 5000
|
|
measurePods: 5000
|
|
|
|
- name: MixedSchedulingBasePod
|
|
defaultPodTemplatePath: config/templates/pod-default.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
nodeTemplatePath: config/templates/node-default.yaml
|
|
labelNodePrepareStrategy:
|
|
labelKey: "topology.kubernetes.io/zone"
|
|
labelValues: ["zone1"]
|
|
- opcode: createNamespaces
|
|
prefix: sched
|
|
count: 1
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-with-pod-affinity.yaml
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-with-pod-anti-affinity.yaml
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-with-preferred-pod-affinity.yaml
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-with-preferred-pod-anti-affinity.yaml
|
|
namespace: sched-0
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 2
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 200
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 2000
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 140
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 2000
|
|
measurePods: 5000
|
|
|
|
- name: PreemptionBasic
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-low-priority.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
podTemplatePath: config/templates/pod-high-priority.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 20
|
|
measurePods: 5
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
threshold: 18
|
|
params:
|
|
initNodes: 500
|
|
initPods: 2000
|
|
measurePods: 500
|
|
# This test case always seems to fail.
|
|
# https://github.com/kubernetes/kubernetes/issues/108308
|
|
#
|
|
# - name: 5000Nodes
|
|
# params:
|
|
# initNodes: 5000
|
|
# initPods: 20000
|
|
# measurePods: 5000
|
|
|
|
- name: PreemptionPVs
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-low-priority.yaml
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
podTemplatePath: config/templates/pod-high-priority.yaml
|
|
persistentVolumeTemplatePath: config/templates/pv-aws.yaml
|
|
persistentVolumeClaimTemplatePath: config/templates/pvc.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 20
|
|
measurePods: 5
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
threshold: 18
|
|
params:
|
|
initNodes: 500
|
|
initPods: 2000
|
|
measurePods: 500
|
|
# This test case always seems to fail.
|
|
# https://github.com/kubernetes/kubernetes/issues/108308
|
|
#
|
|
# - name: 5000Nodes
|
|
# params:
|
|
# initNodes: 5000
|
|
# initPods: 20000
|
|
# measurePods: 5000
|
|
|
|
- name: Unschedulable
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
countParam: $initPods
|
|
podTemplatePath: config/templates/pod-large-cpu.yaml
|
|
skipWaitToCompletion: true
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
podTemplatePath: config/templates/pod-default.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes/2InitPods
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 5
|
|
initPods: 2
|
|
measurePods: 10
|
|
- name: 500Nodes/200InitPods
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPods: 200
|
|
measurePods: 1000
|
|
- name: 5000Nodes/200InitPods
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 200
|
|
measurePods: 5000
|
|
- name: 5000Nodes/200InitPods/10000Pods
|
|
labels: [performance]
|
|
threshold: 300
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 200
|
|
measurePods: 10000
|
|
- name: 5000Nodes/2000InitPods
|
|
params:
|
|
initNodes: 5000
|
|
initPods: 2000
|
|
measurePods: 5000
|
|
|
|
- name: SchedulingWithMixedChurn
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: churn
|
|
mode: recreate
|
|
number: 1
|
|
templatePaths:
|
|
- config/churn/node-default.yaml
|
|
- config/templates/pod-high-priority-large-cpu.yaml
|
|
- config/churn/service-default.yaml
|
|
intervalMilliseconds: 1000
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
podTemplatePath: config/templates/pod-default.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 10Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 10
|
|
measurePods: 100
|
|
- name: 1000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 1000
|
|
measurePods: 1000
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 5000
|
|
measurePods: 2000
|
|
- name: 5000Nodes_10000Pods
|
|
labels: [performance]
|
|
threshold: 265
|
|
params:
|
|
initNodes: 5000
|
|
measurePods: 10000
|
|
|
|
- name: SchedulingRequiredPodAntiAffinityWithNSSelector
|
|
defaultPodTemplatePath: config/templates/pod-anti-affinity-ns-selector.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createNamespaces
|
|
prefix: init-ns
|
|
countParam: $initNamespaces
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createNamespaces
|
|
prefix: measure-ns
|
|
count: 1
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createPodSets
|
|
countParam: $initNamespaces
|
|
namespacePrefix: init-ns
|
|
createPodsOp:
|
|
opcode: createPods
|
|
countParam: $initPodsPerNamespace
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
namespace: measure-ns-0
|
|
workloads:
|
|
- name: 10Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 10
|
|
initPodsPerNamespace: 2
|
|
initNamespaces: 2
|
|
measurePods: 6
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPodsPerNamespace: 4
|
|
initNamespaces: 10
|
|
measurePods: 100
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 40
|
|
initNamespaces: 100
|
|
measurePods: 1000
|
|
- name: 5000Nodes_2000Pods
|
|
labels: [performance]
|
|
threshold: 24
|
|
params:
|
|
initNodes: 6000
|
|
initPodsPerNamespace: 40
|
|
initNamespaces: 100
|
|
measurePods: 2000
|
|
|
|
- name: SchedulingPreferredAntiAffinityWithNSSelector
|
|
defaultPodTemplatePath: config/templates/pod-preferred-anti-affinity-ns-selector.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createNamespaces
|
|
prefix: init-ns
|
|
countParam: $initNamespaces
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createNamespaces
|
|
prefix: measure-ns
|
|
count: 1
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createPodSets
|
|
countParam: $initNamespaces
|
|
namespacePrefix: init-ns
|
|
createPodsOp:
|
|
opcode: createPods
|
|
countParam: $initPodsPerNamespace
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
namespace: measure-ns-0
|
|
workloads:
|
|
- name: 10Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 10
|
|
initPodsPerNamespace: 2
|
|
initNamespaces: 2
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPodsPerNamespace: 4
|
|
initNamespaces: 10
|
|
measurePods: 100
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 40
|
|
initNamespaces: 100
|
|
measurePods: 1000
|
|
- name: 5000Nodes_2000Pods
|
|
labels: [performance]
|
|
threshold: 55
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 40
|
|
initNamespaces: 100
|
|
measurePods: 2000
|
|
|
|
- name: SchedulingRequiredPodAffinityWithNSSelector
|
|
defaultPodTemplatePath: config/templates/pod-affinity-ns-selector.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
labelNodePrepareStrategy:
|
|
labelKey: "topology.kubernetes.io/zone"
|
|
labelValues: ["zone1"]
|
|
- opcode: createNamespaces
|
|
prefix: init-ns
|
|
countParam: $initNamespaces
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createNamespaces
|
|
prefix: measure-ns
|
|
count: 1
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createPodSets
|
|
countParam: $initNamespaces
|
|
namespacePrefix: init-ns
|
|
createPodsOp:
|
|
opcode: createPods
|
|
countParam: $initPodsPerNamespace
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
namespace: measure-ns-0
|
|
workloads:
|
|
- name: 10Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 10
|
|
initPodsPerNamespace: 2
|
|
initNamespaces: 2
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPodsPerNamespace: 4
|
|
initNamespaces: 10
|
|
measurePods: 100
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 50
|
|
initNamespaces: 100
|
|
measurePods: 1000
|
|
- name: 5000Nodes_2000Pods
|
|
labels: [performance]
|
|
threshold: 35
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 50
|
|
initNamespaces: 100
|
|
measurePods: 2000
|
|
|
|
- name: SchedulingPreferredAffinityWithNSSelector
|
|
defaultPodTemplatePath: config/templates/pod-preferred-affinity-ns-selector.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createNamespaces
|
|
prefix: init-ns
|
|
countParam: $initNamespaces
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createNamespaces
|
|
prefix: measure-ns
|
|
count: 1
|
|
namespaceTemplatePath: config/templates/namespace-with-labels.yaml
|
|
- opcode: createPodSets
|
|
countParam: $initNamespaces
|
|
namespacePrefix: init-ns
|
|
createPodsOp:
|
|
opcode: createPods
|
|
countParam: $initPodsPerNamespace
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
namespace: measure-ns-0
|
|
workloads:
|
|
- name: 10Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 10
|
|
initPodsPerNamespace: 2
|
|
initNamespaces: 2
|
|
measurePods: 10
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 500
|
|
initPodsPerNamespace: 4
|
|
initNamespaces: 10
|
|
measurePods: 100
|
|
- name: 5000Nodes
|
|
labels: [performance]
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 50
|
|
initNamespaces: 100
|
|
measurePods: 1000
|
|
- name: 5000Nodes_5000Pods
|
|
labels: [performance]
|
|
threshold: 90
|
|
params:
|
|
initNodes: 5000
|
|
initPodsPerNamespace: 50
|
|
initNamespaces: 100
|
|
measurePods: 5000
|
|
|
|
- name: SchedulingWithNodeInclusionPolicy
|
|
featureGates:
|
|
NodeInclusionPolicyInPodTopologySpread: true
|
|
defaultPodTemplatePath: config/templates/pod-with-node-inclusion-policy.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $normalNodes
|
|
- opcode: createNodes
|
|
nodeTemplatePath: config/templates/node-with-taint.yaml
|
|
countParam: $taintNodes
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 5Nodes
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
taintNodes: 1
|
|
normalNodes: 4
|
|
measurePods: 4
|
|
- name: 500Nodes
|
|
labels: [performance, short]
|
|
params:
|
|
taintNodes: 100
|
|
normalNodes: 400
|
|
measurePods: 400
|
|
- name: 5000Nodes
|
|
labels: [performance, short]
|
|
threshold: 68
|
|
params:
|
|
taintNodes: 1000
|
|
normalNodes: 4000
|
|
measurePods: 4000
|
|
|
|
# SchedulingWithResourceClaimTemplate uses a ResourceClaimTemplate
|
|
# and dynamically created ResourceClaim instances for each pod.
|
|
- name: SchedulingWithResourceClaimTemplate
|
|
featureGates:
|
|
DRAControlPlaneController: true
|
|
DynamicResourceAllocation: true
|
|
# SchedulerQueueingHints: true
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $nodesWithoutDRA
|
|
- opcode: createNodes
|
|
nodeTemplatePath: config/dra/node-with-dra-test-driver.yaml
|
|
countParam: $nodesWithDRA
|
|
- opcode: createResourceDriver
|
|
driverName: test-driver.cdi.k8s.io
|
|
nodes: scheduler-perf-dra-*
|
|
maxClaimsPerNodeParam: $maxClaimsPerNode
|
|
- opcode: createAny
|
|
templatePath: config/dra/deviceclass.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaimtemplate.yaml
|
|
namespace: init
|
|
- opcode: createPods
|
|
namespace: init
|
|
countParam: $initPods
|
|
podTemplatePath: config/dra/pod-with-claim-template.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaimtemplate.yaml
|
|
namespace: test
|
|
- opcode: createPods
|
|
namespace: test
|
|
countParam: $measurePods
|
|
podTemplatePath: config/dra/pod-with-claim-template.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: fast
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
# This testcase runs through all code paths without
|
|
# taking too long overall.
|
|
nodesWithDRA: 1
|
|
nodesWithoutDRA: 1
|
|
initPods: 0
|
|
measurePods: 10
|
|
maxClaimsPerNode: 10
|
|
- name: 2000pods_100nodes
|
|
params:
|
|
# In this testcase, the number of nodes is smaller
|
|
# than the limit for the PodScheduling slices.
|
|
nodesWithDRA: 100
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
maxClaimsPerNode: 20
|
|
- name: 2000pods_200nodes
|
|
params:
|
|
# In this testcase, the driver and scheduler must
|
|
# truncate the PotentialNodes and UnsuitableNodes
|
|
# slices.
|
|
nodesWithDRA: 200
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
maxClaimsPerNode: 10
|
|
|
|
# This similar to SchedulingWithResourceClaimTemplate, except
|
|
# that it uses four claims per pod, from two different drivers.
|
|
# This emphasizes a bit more the complexity of collaborative
|
|
# scheduling via PodSchedulingContext.
|
|
- name: SchedulingWithMultipleResourceClaims
|
|
featureGates:
|
|
DRAControlPlaneController: true
|
|
DynamicResourceAllocation: true
|
|
# SchedulerQueueingHints: true
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $nodesWithoutDRA
|
|
- opcode: createNodes
|
|
nodeTemplatePath: config/dra/node-with-dra-test-driver.yaml
|
|
countParam: $nodesWithDRA
|
|
- opcode: createResourceDriver
|
|
driverName: test-driver.cdi.k8s.io
|
|
nodes: scheduler-perf-dra-*
|
|
maxClaimsPerNodeParam: $maxClaimsPerNode
|
|
- opcode: createResourceDriver
|
|
driverName: another-test-driver.cdi.k8s.io
|
|
nodes: scheduler-perf-dra-*
|
|
maxClaimsPerNodeParam: $maxClaimsPerNode
|
|
- opcode: createAny
|
|
templatePath: config/dra/deviceclass.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaimtemplate.yaml
|
|
namespace: init
|
|
- opcode: createAny
|
|
templatePath: config/dra/another-resourceclaimtemplate.yaml
|
|
namespace: init
|
|
- opcode: createPods
|
|
namespace: init
|
|
countParam: $initPods
|
|
podTemplatePath: config/dra/pod-with-many-claim-templates.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaimtemplate.yaml
|
|
namespace: test
|
|
- opcode: createAny
|
|
templatePath: config/dra/another-resourceclaimtemplate.yaml
|
|
namespace: test
|
|
- opcode: createPods
|
|
namespace: test
|
|
countParam: $measurePods
|
|
podTemplatePath: config/dra/pod-with-many-claim-templates.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: fast
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
# This testcase runs through all code paths without
|
|
# taking too long overall.
|
|
nodesWithDRA: 1
|
|
nodesWithoutDRA: 1
|
|
initPods: 0
|
|
measurePods: 1
|
|
maxClaimsPerNode: 20
|
|
- name: 2000pods_100nodes
|
|
params:
|
|
# In this testcase, the number of nodes is smaller
|
|
# than the limit for the PodScheduling slices.
|
|
nodesWithDRA: 100
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
maxClaimsPerNode: 40
|
|
- name: 2000pods_200nodes
|
|
params:
|
|
# In this testcase, the driver and scheduler must
|
|
# truncate the PotentialNodes and UnsuitableNodes
|
|
# slices.
|
|
nodesWithDRA: 200
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
maxClaimsPerNode: 20
|
|
|
|
# SchedulingWithResourceClaimTemplateStructured uses a ResourceClaimTemplate
|
|
# and dynamically creates ResourceClaim instances for each pod.
|
|
# The driver uses structured parameters.
|
|
- name: SchedulingWithResourceClaimTemplateStructured
|
|
featureGates:
|
|
DynamicResourceAllocation: true
|
|
# SchedulerQueueingHints: true
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $nodesWithoutDRA
|
|
- opcode: createNodes
|
|
nodeTemplatePath: config/dra/node-with-dra-test-driver.yaml
|
|
countParam: $nodesWithDRA
|
|
- opcode: createResourceDriver
|
|
driverName: test-driver.cdi.k8s.io
|
|
nodes: scheduler-perf-dra-*
|
|
maxClaimsPerNodeParam: $maxClaimsPerNode
|
|
structuredParameters: true
|
|
- opcode: createAny
|
|
templatePath: config/dra/deviceclass-structured.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaimtemplate-structured.yaml
|
|
namespace: init
|
|
- opcode: createPods
|
|
namespace: init
|
|
countParam: $initPods
|
|
podTemplatePath: config/dra/pod-with-claim-template.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaimtemplate-structured.yaml
|
|
namespace: test
|
|
- opcode: createPods
|
|
namespace: test
|
|
countParam: $measurePods
|
|
podTemplatePath: config/dra/pod-with-claim-template.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: fast
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
# This testcase runs through all code paths without
|
|
# taking too long overall.
|
|
nodesWithDRA: 1
|
|
nodesWithoutDRA: 1
|
|
initPods: 0
|
|
measurePods: 10
|
|
maxClaimsPerNode: 10
|
|
- name: 2000pods_100nodes
|
|
params:
|
|
nodesWithDRA: 100
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
maxClaimsPerNode: 20
|
|
- name: 2000pods_200nodes
|
|
params:
|
|
nodesWithDRA: 200
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
measurePods: 1000
|
|
maxClaimsPerNode: 10
|
|
- name: 5000pods_500nodes
|
|
params:
|
|
nodesWithDRA: 500
|
|
nodesWithoutDRA: 0
|
|
initPods: 2500
|
|
measurePods: 2500
|
|
maxClaimsPerNode: 10
|
|
|
|
# SchedulingWithResourceClaimTemplate uses ResourceClaims
|
|
# with deterministic names that are shared between pods.
|
|
# There is a fixed ratio of 1:5 between claims and pods.
|
|
#
|
|
# The driver uses structured parameters.
|
|
- name: SchedulingWithResourceClaimStructured
|
|
featureGates:
|
|
DynamicResourceAllocation: true
|
|
# SchedulerQueueingHints: true
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $nodesWithoutDRA
|
|
- opcode: createNodes
|
|
nodeTemplatePath: config/dra/node-with-dra-test-driver.yaml
|
|
countParam: $nodesWithDRA
|
|
- opcode: createResourceDriver
|
|
driverName: test-driver.cdi.k8s.io
|
|
nodes: scheduler-perf-dra-*
|
|
maxClaimsPerNodeParam: $maxClaimsPerNode
|
|
structuredParameters: true
|
|
- opcode: createAny
|
|
templatePath: config/dra/deviceclass-structured.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaim-structured.yaml
|
|
namespace: init
|
|
countParam: $initClaims
|
|
- opcode: createPods
|
|
namespace: init
|
|
countParam: $initPods
|
|
podTemplatePath: config/dra/pod-with-claim-ref.yaml
|
|
- opcode: createAny
|
|
templatePath: config/dra/resourceclaim-structured.yaml
|
|
namespace: test
|
|
countParam: $measureClaims
|
|
- opcode: createPods
|
|
namespace: test
|
|
countParam: $measurePods
|
|
podTemplatePath: config/dra/pod-with-claim-ref.yaml
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: fast
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
# This testcase runs through all code paths without
|
|
# taking too long overall.
|
|
nodesWithDRA: 1
|
|
nodesWithoutDRA: 1
|
|
initPods: 0
|
|
initClaims: 0
|
|
measurePods: 10
|
|
measureClaims: 2 # must be measurePods / 5
|
|
maxClaimsPerNode: 2
|
|
- name: 2000pods_100nodes
|
|
params:
|
|
nodesWithDRA: 100
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
initClaims: 200 # must be initPods / 5
|
|
measurePods: 1000
|
|
measureClaims: 200 # must be initPods / 5
|
|
maxClaimsPerNode: 4
|
|
- name: 2000pods_200nodes
|
|
params:
|
|
nodesWithDRA: 200
|
|
nodesWithoutDRA: 0
|
|
initPods: 1000
|
|
initClaims: 200 # must be initPods / 5
|
|
measurePods: 1000
|
|
measureClaims: 200 # must be measurePods / 5
|
|
maxClaimsPerNode: 2
|
|
- name: 5000pods_500nodes
|
|
params:
|
|
nodesWithDRA: 500
|
|
nodesWithoutDRA: 0
|
|
initPods: 2500
|
|
initClaims: 500 # must be initPods / 5
|
|
measurePods: 2500
|
|
measureClaims: 500 # must be measurePods / 5
|
|
maxClaimsPerNode: 2
|
|
|
|
# This test case simulates the scheduling when many pods are gated and others are gradually deleted.
|
|
# https://github.com/kubernetes/kubernetes/issues/124384
|
|
- name: SchedulingWhileGated
|
|
defaultPodTemplatePath: config/templates/light-pod.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
count: 1
|
|
nodeTemplatePath: config/templates/node-with-name.yaml
|
|
# Create pods that will stay gated to the end of the test.
|
|
- opcode: createPods
|
|
countParam: $gatedPods
|
|
podTemplatePath: config/templates/gated-pod.yaml
|
|
skipWaitToCompletion: true
|
|
# Wait to make sure gated pods are enqueued in scheduler.
|
|
- opcode: sleep
|
|
duration: 5s
|
|
# Create pods that will be gradually deleted after being scheduled.
|
|
- opcode: createPods
|
|
countParam: $deletingPods
|
|
deletePodsPerSecond: 50
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 1Node_10GatedPods
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
gatedPods: 10
|
|
deletingPods: 10
|
|
measurePods: 10
|
|
- name: 1Node_10000GatedPods
|
|
labels: [performance, short]
|
|
threshold: 130
|
|
params:
|
|
gatedPods: 10000
|
|
deletingPods: 20000
|
|
measurePods: 20000
|
|
|
|
- name: SchedulingGatedPodsWithPodAffinityImpactForThroughput
|
|
defaultPodTemplatePath: config/templates/pod-with-label.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
count: 1
|
|
nodeTemplatePath: config/templates/node-with-name.yaml
|
|
- opcode: createPods
|
|
countParam: $gatedPods
|
|
podTemplatePath: config/templates/gated-pod-with-pod-affinity.yaml
|
|
skipWaitToCompletion: true
|
|
- opcode: sleep
|
|
# To produce a stable scheduler_perf result, here we make sure all gated Pods are stored in the scheduling queue.
|
|
duration: 5s
|
|
- opcode: createPods
|
|
# The scheduling of those Pods will result in many cluster events (AssignedPodAdded)
|
|
# and each of them will be processed by the scheduling queue.
|
|
# But, the scheduling throughput should only be minimally impacted by the number of gated Pods.
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 1Node_10GatedPods
|
|
labels: [performance, short]
|
|
params:
|
|
gatedPods: 10
|
|
measurePods: 10
|
|
- name: 1Node_10000GatedPods
|
|
labels: [performance, short]
|
|
threshold: 110
|
|
params:
|
|
gatedPods: 10000
|
|
measurePods: 20000
|
|
|
|
# This test case simulates the scheduling when pods selected to schedule have deletionTimestamp set.
|
|
# There was a memory leak related to this path of code fixed in:
|
|
# https://github.com/kubernetes/kubernetes/pull/126962
|
|
# Main goal of this test case is to verify if InFlightEvents is empty after the test.
|
|
- name: SchedulingDeletedPodsWithFinalizers
|
|
featureGates:
|
|
SchedulerQueueingHints: true
|
|
defaultPodTemplatePath: config/templates/light-pod.yaml
|
|
workloadTemplate:
|
|
- opcode: createNodes
|
|
countParam: $initNodes
|
|
- opcode: createPods
|
|
# Create pods with finalizers and delete them before they are scheduled.
|
|
# DeletionTimestamp field should be populated then,
|
|
# but a few pods should still be chosen into the scheduling.
|
|
countParam: $deletingPods
|
|
podTemplatePath: config/templates/pod-with-finalizer.yaml
|
|
skipWaitToCompletion: true
|
|
deletePodsPerSecond: 100
|
|
- opcode: createPods
|
|
countParam: $measurePods
|
|
collectMetrics: true
|
|
workloads:
|
|
- name: 10Node_100DeletingPods
|
|
labels: [integration-test, performance, short]
|
|
params:
|
|
initNodes: 10
|
|
deletingPods: 10
|
|
measurePods: 10
|
|
- name: 1000Node_1000DeletingPods
|
|
labels: [performance, short]
|
|
params:
|
|
initNodes: 1000
|
|
deletingPods: 1000
|
|
measurePods: 1000
|