Skip to content

Commit a8d0fcd

Browse files
committed
test: use clusterloader2 framework for large scale testing
Signed-off-by: Wantong Jiang <[email protected]>
1 parent 8a5bb61 commit a8d0fcd

File tree

5 files changed

+151
-0
lines changed

5 files changed

+151
-0
lines changed

hack/cl2/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
This folder contains a list of (clusterloader2)[https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/docs/GETTING_STARTED.md] configuration manifests for large scale testing.
2+
3+
## Prerequisites
4+
5+
Follow (clusterloader2 GETTING STARTED)[https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/docs/GETTING_STARTED.md] to clone the `perf-tests` repository.
6+
7+
## Execute Tests
8+
9+
Run `clusterloader2` under `perf-tests/clusterloader2` directory:
10+
```bash
11+
go run cmd/clusterloader.go --testconfig=<path to the test yaml> --provider=local --kubeconfig=<path to the hub cluster kubeconfig> --v=2 --enable-exec-service=false
12+
```
13+
We need to set `--enable-exec-service=false` to prevent creating agnostic deployment on the hub cluster as hub
14+
cluster does not allow pod creation.
15+
16+
## Cleanup Resources After Tests
17+
18+
By default, clusterloader2 automatically deletes all the generated namespaces after the tests.
19+
In addition, we also want to delete all the CRPs created. To facilitate cleanup process, run the simple script
20+
provided in this folder:
21+
```
22+
export KUBECONFIG=<your path to the kubeconfig file>
23+
./cleanup.sh
24+
```

hack/cl2/busy_cluster.yaml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: busy_cluster_test
2+
3+
{{$duration := "10m"}}
4+
{{$count := 1000}}
5+
6+
namespace:
7+
number: 2
8+
prefix: busy-cluster-test-ns
9+
10+
tuningSets:
11+
- name: Uniform100qps
12+
qpsLoad:
13+
qps: 100
14+
15+
steps:
16+
- name: Create CRPs
17+
phases:
18+
- replicasPerNamespace: 2
19+
tuningSet: Uniform100qps
20+
objectBundle:
21+
- basename: test-crp
22+
objectTemplatePath: "manifests/test-crp.yaml"
23+
- name: Create ConfigMaps
24+
phases:
25+
- namespaceRange:
26+
min: 1
27+
max: 2
28+
replicasPerNamespace: {{$count}}
29+
tuningSet: Uniform100qps
30+
objectBundle:
31+
- basename: test-configmap
32+
objectTemplatePath: "manifests/test-configmap.yaml"
33+
- name: Sleep
34+
measurements:
35+
- Identifier: sleep
36+
Method: Sleep
37+
Params:
38+
duration: {{$duration}}
39+
# - name: Wait for CRPs to be Ready
40+
# measurements:
41+
# - Identifier: WaitForGenericK8sObjects
42+
# Method: WaitForGenericK8sObjects
43+
# Params:
44+
# objectGroup: placement.kubernetes-fleet.io
45+
# objectVersion: v1beta1
46+
# objectResource: clusterresourceplacements
47+
# timeout: {{$duration}}
48+
# successfulConditions: ResourceAvailable=True
49+
# minDesiredObjectCount: 2
50+
- name: Delete ConfigMaps
51+
phases:
52+
- namespaceRange:
53+
min: 1
54+
max: 2
55+
replicasPerNamespace: 0
56+
tuningSet: Uniform100qps
57+
objectBundle:
58+
- basename: test-configmap
59+
objectTemplatePath: "manifests/test-configmap.yaml"
60+
- name: Sleep
61+
measurements:
62+
- Identifier: sleep
63+
Method: Sleep
64+
Params:
65+
duration: {{$duration}}
66+
- name: Create ConfigMaps
67+
phases:
68+
- namespaceRange:
69+
min: 1
70+
max: 2
71+
replicasPerNamespace: {{$count}}
72+
tuningSet: Uniform100qps
73+
objectBundle:
74+
- basename: test-configmap
75+
objectTemplatePath: "manifests/test-configmap.yaml"
76+
- name: Sleep
77+
measurements:
78+
- Identifier: sleep
79+
Method: Sleep
80+
Params:
81+
duration: {{$duration}}
82+
- name: Delete ConfigMaps
83+
phases:
84+
- namespaceRange:
85+
min: 1
86+
max: 2
87+
replicasPerNamespace: 0
88+
tuningSet: Uniform100qps
89+
objectBundle:
90+
- basename: test-configmap
91+
objectTemplatePath: "manifests/test-configmap.yaml"

hack/cl2/cleanup.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env bash
2+
3+
set -o errexit
4+
set -o nounset
5+
set -o pipefail
6+
7+
: "${KUBECONFIG:?Environment variable KUBECONFIG must be set}"
8+
9+
echo "Deleting all CRPs generated during the load test from the hub cluster..."
10+
kubectl delete crp -l test=cl2-test
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# Test configmap with 1k payload
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: {{.Name}}
6+
data:
7+
random: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a, venenatis vitae, justo. Nullam dictum felis eu pede mollis pretium. Integer tincidunt. Cras dapibus. Vivamus elementum semper nisi. Aenean vulputate eleifend tellus. Aenean leo ligula, porttitor eu, consequat vitae, eleifend ac, enim. Aliquam lorem ante, dapibus in, viverra quis, feugiat a, tellus. Phasellus viverra nulla ut metus varius laoreet. Quisque rutrum. Aenean imperdiet. Etiam ultricies nisi vel augue. Curabitur ullamcorper ultricies nisi. Nam eget dui. Etiam rhoncus. Maecenas tempus, tellus eget condimentum rhoncus, sem quam semper libero, sit amet adipiscing sem neque sed ipsum. Nam quam nunc, blandit ve

hack/cl2/manifests/test-crp.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: placement.kubernetes-fleet.io/v1beta1
2+
kind: ClusterResourcePlacement
3+
metadata:
4+
name: {{.Name}}
5+
labels:
6+
test: cl2-test
7+
spec:
8+
resourceSelectors:
9+
- group: ""
10+
kind: Namespace
11+
name: busy-cluster-test-ns-{{AddInt .Index 1}}
12+
version: v1
13+
strategy:
14+
type: RollingUpdate
15+
rollingUpdate:
16+
maxUnavailable: 25%
17+
maxSurge: 25%
18+
unavailablePeriodSeconds: 60
19+
revisionHistoryLimit: 15

0 commit comments

Comments
 (0)