Skip to content

Commit 6511b60

Browse files
committed
Define workloads specs by YAML
1 parent 30a5db1 commit 6511b60

16 files changed

+747
-18
lines changed

test/integration/framework/perf_utils.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ type IntegrationTestNodePreparer struct {
3636
client clientset.Interface
3737
countToStrategy []testutils.CountToStrategy
3838
nodeNamePrefix string
39+
nodeSpec *v1.Node
3940
}
4041

4142
// NewIntegrationTestNodePreparer creates an IntegrationTestNodePreparer configured with defaults.
@@ -47,6 +48,15 @@ func NewIntegrationTestNodePreparer(client clientset.Interface, countToStrategy
4748
}
4849
}
4950

51+
// NewIntegrationTestNodePreparerWithNodeSpec creates an IntegrationTestNodePreparer configured with nodespec.
52+
func NewIntegrationTestNodePreparerWithNodeSpec(client clientset.Interface, countToStrategy []testutils.CountToStrategy, nodeSpec *v1.Node) testutils.TestNodePreparer {
53+
return &IntegrationTestNodePreparer{
54+
client: client,
55+
countToStrategy: countToStrategy,
56+
nodeSpec: nodeSpec,
57+
}
58+
}
59+
5060
// PrepareNodes prepares countToStrategy test nodes.
5161
func (p *IntegrationTestNodePreparer) PrepareNodes() error {
5262
numNodes := 0
@@ -71,6 +81,11 @@ func (p *IntegrationTestNodePreparer) PrepareNodes() error {
7181
},
7282
},
7383
}
84+
85+
if p.nodeSpec != nil {
86+
baseNode = p.nodeSpec
87+
}
88+
7489
for i := 0; i < numNodes; i++ {
7590
var err error
7691
for retry := 0; retry < retries; retry++ {

test/integration/scheduler_perf/BUILD

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ go_test(
3030
srcs = [
3131
"main_test.go",
3232
"scheduler_bench_test.go",
33+
"scheduler_perf_test.go",
3334
"scheduler_test.go",
3435
],
3536
embed = [":go_default_library"],
@@ -45,11 +46,13 @@ go_test(
4546
"//staging/src/k8s.io/client-go/informers/core/v1:go_default_library",
4647
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
4748
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
49+
"//staging/src/k8s.io/component-base/featuregate:go_default_library",
4850
"//staging/src/k8s.io/component-base/featuregate/testing:go_default_library",
4951
"//staging/src/k8s.io/csi-translation-lib/plugins:go_default_library",
5052
"//test/integration/framework:go_default_library",
5153
"//test/utils:go_default_library",
5254
"//vendor/k8s.io/klog:go_default_library",
55+
"//vendor/sigs.k8s.io/yaml:go_default_library",
5356
],
5457
)
5558

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: Node
3+
metadata:
4+
generateName: scheduler-perf-
5+
spec: {}
6+
status:
7+
capacity:
8+
pods: "110"
9+
cpu: "4"
10+
memory: 32Gi
11+
conditions:
12+
- status: "True"
13+
type: Ready
14+
phase: Running
Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
- template:
2+
desc: SchedulingBasic
3+
initPods:
4+
podTemplatePath: config/pod-default.yaml
5+
podsToSchedule:
6+
podTemplatePath: config/pod-default.yaml
7+
params:
8+
- numNodes: 500
9+
numInitPods: 500
10+
numPodsToSchedule: 1000
11+
- numNodes: 5000
12+
numInitPods: 5000
13+
numPodsToSchedule: 1000
14+
- template:
15+
desc: SchedulingPodAntiAffinity
16+
nodes:
17+
uniqueNodeLabelStrategy:
18+
labelKey: kubernetes.io/hostname
19+
initPods:
20+
podTemplatePath: config/pod-with-pod-anti-affinity.yaml
21+
podsToSchedule:
22+
podTemplatePath: config/pod-with-pod-anti-affinity.yaml
23+
params:
24+
- numNodes: 500
25+
numInitPods: 100
26+
numPodsToSchedule: 400
27+
- numNodes: 5000
28+
numInitPods: 1000
29+
numPodsToSchedule: 1000
30+
- template:
31+
desc: SchedulingSecrets
32+
initPods:
33+
podTemplatePath: config/pod-with-secret-volume.yaml
34+
podsToSchedule:
35+
podTemplatePath: config/pod-with-secret-volume.yaml
36+
params:
37+
- numNodes: 500
38+
numInitPods: 500
39+
numPodsToSchedule: 1000
40+
- numNodes: 5000
41+
numInitPods: 5000
42+
numPodsToSchedule: 1000
43+
- template:
44+
desc: SchedulingInTreePVs
45+
initPods:
46+
persistentVolumeTemplatePath: config/pv-aws.yaml
47+
persistentVolumeClaimTemplatePath: config/pvc.yaml
48+
podsToSchedule:
49+
persistentVolumeTemplatePath: config/pv-aws.yaml
50+
persistentVolumeClaimTemplatePath: config/pvc.yaml
51+
params:
52+
- numNodes: 500
53+
numInitPods: 500
54+
numPodsToSchedule: 1000
55+
- numNodes: 5000
56+
numInitPods: 5000
57+
numPodsToSchedule: 1000
58+
- template:
59+
desc: SchedulingMigratedInTreePVs
60+
nodes:
61+
nodeTemplatePath: config/node-default.yaml
62+
nodeAllocatableStrategy:
63+
nodeAllocatable:
64+
attachable-volumes-csi-ebs.csi.aws.com: 39
65+
csiNodeAllocatable:
66+
ebs.csi.aws.com:
67+
count: 39
68+
migratedPlugins:
69+
- "kubernetes.io/aws-ebs"
70+
initPods:
71+
persistentVolumeTemplatePath: config/pv-aws.yaml
72+
persistentVolumeClaimTemplatePath: config/pvc.yaml
73+
podsToSchedule:
74+
persistentVolumeTemplatePath: config/pv-aws.yaml
75+
persistentVolumeClaimTemplatePath: config/pvc.yaml
76+
featureGates:
77+
CSIMigration: true
78+
CSIMigrationAWS: true
79+
params:
80+
- numNodes: 500
81+
numInitPods: 500
82+
numPodsToSchedule: 1000
83+
- numNodes: 5000
84+
numInitPods: 5000
85+
numPodsToSchedule: 1000
86+
- template:
87+
desc: SchedulingCSIPVs
88+
nodes:
89+
nodeTemplatePath: config/node-default.yaml
90+
nodeAllocatableStrategy:
91+
nodeAllocatable:
92+
attachable-volumes-csi-ebs.csi.aws.com: 39
93+
csiNodeAllocatable:
94+
ebs.csi.aws.com:
95+
count: 39
96+
initPods:
97+
persistentVolumeTemplatePath: config/pv-csi.yaml
98+
persistentVolumeClaimTemplatePath: config/pvc.yaml
99+
podsToSchedule:
100+
persistentVolumeTemplatePath: config/pv-csi.yaml
101+
persistentVolumeClaimTemplatePath: config/pvc.yaml
102+
params:
103+
- numNodes: 500
104+
numInitPods: 500
105+
numPodsToSchedule: 1000
106+
- numNodes: 5000
107+
numInitPods: 5000
108+
numPodsToSchedule: 1000
109+
- template:
110+
desc: SchedulingPodAffinity
111+
nodes:
112+
nodeTemplatePath: config/node-default.yaml
113+
labelNodeStrategy:
114+
labelKey: "failure-domain.beta.kubernetes.io/zone"
115+
labelValue: "zone1"
116+
initPods:
117+
podTemplatePath: config/pod-with-pod-affinity.yaml
118+
podsToSchedule:
119+
podTemplatePath: config/pod-with-pod-affinity.yaml
120+
params:
121+
- numNodes: 500
122+
numInitPods: 500
123+
numPodsToSchedule: 1000
124+
- numNodes: 5000
125+
numInitPods: 5000
126+
numPodsToSchedule: 1000
127+
- template:
128+
desc: SchedulingPreferredPodAffinity
129+
nodes:
130+
uniqueNodeLabelStrategy:
131+
labelKey: kubernetes.io/hostname
132+
initPods:
133+
podTemplatePath: config/pod-with-preferred-pod-affinity.yaml
134+
podsToSchedule:
135+
podTemplatePath: config/pod-with-preferred-pod-affinity.yaml
136+
params:
137+
- numNodes: 500
138+
numInitPods: 500
139+
numPodsToSchedule: 1000
140+
- numNodes: 5000
141+
numInitPods: 5000
142+
numPodsToSchedule: 1000
143+
- template:
144+
desc: SchedulingPreferredPodAntiAffinity
145+
nodes:
146+
uniqueNodeLabelStrategy:
147+
labelKey: kubernetes.io/hostname
148+
initPods:
149+
podTemplatePath: config/pod-with-preferred-pod-anti-affinity.yaml
150+
podsToSchedule:
151+
podTemplatePath: config/pod-with-preferred-pod-anti-affinity.yaml
152+
params:
153+
- numNodes: 500
154+
numInitPods: 500
155+
numPodsToSchedule: 1000
156+
- numNodes: 5000
157+
numInitPods: 5000
158+
numPodsToSchedule: 1000
159+
- template:
160+
desc: SchedulingNodeAffinity
161+
nodes:
162+
nodeTemplatePath: config/node-default.yaml
163+
labelNodePrepareStrategy:
164+
labelKey: "failure-domain.beta.kubernetes.io/zone"
165+
labelValue: "zone1"
166+
initPods:
167+
podTemplatePath: config/pod-with-node-affinity.yaml
168+
podsToSchedule:
169+
podTemplatePath: config/pod-with-node-affinity.yaml
170+
params:
171+
- numNodes: 500
172+
numInitPods: 500
173+
numPodsToSchedule: 1000
174+
- numNodes: 5000
175+
numInitPods: 5000
176+
numPodsToSchedule: 1000
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
generateName: pod-
5+
spec:
6+
containers:
7+
- image: k8s.gcr.io/pause:3.1
8+
name: pause
9+
ports:
10+
- containerPort: 80
11+
resources:
12+
limits:
13+
cpu: 100m
14+
memory: 500Mi
15+
requests:
16+
cpu: 100m
17+
memory: 500Mi
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
generateName: node-affinity-
5+
spec:
6+
affinity:
7+
nodeAffinity:
8+
requiredDuringSchedulingIgnoredDuringExecution:
9+
nodeSelectorTerms:
10+
- matchExpressions:
11+
- key: failure-domain.beta.kubernetes.io/zone
12+
operator: In
13+
values:
14+
- zone1
15+
- zone2
16+
containers:
17+
- image: k8s.gcr.io/pause:3.1
18+
name: pause
19+
ports:
20+
- containerPort: 80
21+
resources:
22+
limits:
23+
cpu: 100m
24+
memory: 500Mi
25+
requests:
26+
cpu: 100m
27+
memory: 500Mi
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
generateName: affinity-pod-
5+
labels:
6+
foo: ""
7+
spec:
8+
affinity:
9+
podAffinity:
10+
requiredDuringSchedulingIgnoredDuringExecution:
11+
- labelSelector:
12+
matchLabels:
13+
foo: ""
14+
topologyKey: failure-domain.beta.kubernetes.io/zone
15+
namespaces: ["sched-test", "sched-setup"]
16+
containers:
17+
- image: k8s.gcr.io/pause:3.1
18+
name: pause
19+
ports:
20+
- containerPort: 80
21+
resources:
22+
limits:
23+
cpu: 100m
24+
memory: 500Mi
25+
requests:
26+
cpu: 100m
27+
memory: 500Mi
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
generateName: anti-affinity-pod-
5+
labels:
6+
color: green
7+
name: test
8+
spec:
9+
affinity:
10+
podAntiAffinity:
11+
requiredDuringSchedulingIgnoredDuringExecution:
12+
- labelSelector:
13+
matchLabels:
14+
color: green
15+
topologyKey: kubernetes.io/hostname
16+
namespaces: ["sched-test", "sched-setup"]
17+
containers:
18+
- image: k8s.gcr.io/pause:3.1
19+
name: pause
20+
ports:
21+
- containerPort: 80
22+
resources:
23+
limits:
24+
cpu: 100m
25+
memory: 500Mi
26+
requests:
27+
cpu: 100m
28+
memory: 500Mi
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
apiVersion: v1
2+
kind: Pod
3+
metadata:
4+
generateName: preferred-affinity-pod-
5+
labels:
6+
foo: ""
7+
spec:
8+
affinity:
9+
podAffinity:
10+
preferredDuringSchedulingIgnoredDuringExecution:
11+
- podAffinityTerm:
12+
labelSelector:
13+
matchLabels:
14+
foo: ""
15+
topologyKey: kubernetes.io/hostname
16+
namespaces: ["sched-test", "sched-setup"]
17+
weight: 1
18+
containers:
19+
- image: k8s.gcr.io/pause:3.1
20+
name: pause
21+
ports:
22+
- containerPort: 80
23+
resources:
24+
limits:
25+
cpu: 100m
26+
memory: 500Mi
27+
requests:
28+
cpu: 100m
29+
memory: 500Mi

0 commit comments

Comments
 (0)