Skip to content

Commit b9f1626

Browse files
committed
Add rest of CL2 modules
1 parent 2448965 commit b9f1626

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+2326
-0
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ENABLE_RESTART_COUNT_CHECK: true
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
RESTART_COUNT_THRESHOLD_OVERRIDES: |
2+
# To be investigated in https://github.com/kubernetes/perf-tests/issues/872.
3+
fluentd-gcp: 999
4+
5+
# Main purpose of this check is detection crashlooping pods.
6+
# It was extended to check whether master pods were restarted even once.
7+
# For components that we run multiple instances of we should be less aggressive and tolerate restarts e.g. due to node restarts.
8+
kube-proxy: 2
9+
metadata-proxy: 2
10+
prometheus-to-sd-exporter: 2
11+
coredns: 2
12+
konnectivity-agent: 2
13+
node-problem-detector: 2
14+
15+
# Allow for a single restart of master components.
16+
# As long as tests are passing, a single restart shouldn't be a problem
17+
kube-scheduler: 1
18+
kube-controller-manager: 1
19+
l7-lb-controller: 1
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
RESTART_COUNT_THRESHOLD_OVERRIDES: |
2+
# To be fixed by https://github.com/kubernetes/perf-tests/issues/871.
3+
kubernetes-dashboard: 999
4+
5+
# To be fixed by https://github.com/kubernetes/perf-tests/issues/874.
6+
kube-scheduler: 5
7+
kube-controller-manager: 5
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
USE_SIMPLE_LATENCY_QUERY: true
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Huge service test config
2+
{{$HUGE_SERVICE_HEADLESS := DefaultParam .CL2_HUGE_SERVICE_HEADLESS false}}
3+
{{$HUGE_SERVICE_ENDPOINTS := DefaultParam .CL2_HUGE_SERVICE_ENDPOINTS 1000}}
4+
{{$STATEFULSET_ENDPOINTS := DefaultParam .CL2_STATEFULSET_ENDPOINTS 100}}
5+
{{$DELETE_NAMESPACE_TIMEOUT := DefaultParam .CL2_DELETE_NAMESPACE_TIMEOUT "10m"}}
6+
7+
name: huge-service
8+
namespace:
9+
number: 1
10+
deleteNamespaceTimeout: {{$DELETE_NAMESPACE_TIMEOUT}}
11+
tuningSets:
12+
- name: Sequence
13+
parallelismLimitedLoad:
14+
parallelismLimit: 1
15+
steps:
16+
- module:
17+
path: modules/measurements.yaml
18+
params:
19+
action: start
20+
namespaceIdx: 1
21+
serviceName: huge-service-statefulset-0
22+
statefulsetEndpoints: {{$STATEFULSET_ENDPOINTS}}
23+
- module:
24+
path: modules/service.yaml
25+
params:
26+
endpoints: {{$HUGE_SERVICE_ENDPOINTS}}
27+
statefulsetEndpoints: {{$STATEFULSET_ENDPOINTS}}
28+
isHeadless: {{$HUGE_SERVICE_HEADLESS}}
29+
serviceName: huge-service
30+
- module:
31+
path: modules/measurements.yaml
32+
params:
33+
action: gather
34+
namespaceIdx: 1
35+
serviceName: huge-service-statefulset-0
36+
statefulsetEndpoints: {{$STATEFULSET_ENDPOINTS}}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
# Valid actions: "start", "gather"
2+
{{$action := .action}}
3+
{{$statefulsetEndpoints := .statefulsetEndpoints}}
4+
{{$serviceName := .serviceName}}
5+
{{$namespaceIdx := .namespaceIdx}}
6+
7+
{{$ALLOWED_SLOW_API_CALLS := DefaultParam .CL2_ALLOWED_SLOW_API_CALLS 0}}
8+
{{$HUGE_SERVICE_ALLOWED_SLOW_API_CALLS := DefaultParam .CL2_HUGE_SERVICE_ALLOWED_SLOW_API_CALLS 2}}
9+
{{$PROBE_MEASUREMENTS_CHECK_PROBES_READY_TIMEOUT := DefaultParam .CL2_PROBE_MEASUREMENTS_CHECK_PROBES_READY_TIMEOUT "15m"}}
10+
{{$ENABLE_VIOLATIONS_FOR_API_CALL_PROMETHEUS := DefaultParam .CL2_ENABLE_VIOLATIONS_FOR_API_CALL_PROMETHEUS false}}
11+
{{$ENABLE_VIOLATIONS_FOR_API_CALL_PROMETHEUS_SIMPLE := DefaultParam .CL2_ENABLE_VIOLATIONS_FOR_API_CALL_PROMETHEUS_SIMPLE true}}
12+
13+
{{$CUSTOM_API_CALL_THRESHOLDS := DefaultParam .CUSTOM_API_CALL_THRESHOLDS ""}}
14+
{{$ENABLE_IN_CLUSTER_NETWORK_LATENCY := DefaultParam .CL2_ENABLE_IN_CLUSTER_NETWORK_LATENCY true}}
15+
{{$ENABLE_RESTART_COUNT_CHECK := DefaultParam .ENABLE_RESTART_COUNT_CHECK true}}
16+
{{$ENABLE_SYSTEM_POD_METRICS := DefaultParam .ENABLE_SYSTEM_POD_METRICS true}}
17+
{{$RESTART_COUNT_THRESHOLD_OVERRIDES := DefaultParam .RESTART_COUNT_THRESHOLD_OVERRIDES ""}}
18+
{{$USE_SIMPLE_LATENCY_QUERY := DefaultParam .USE_SIMPLE_LATENCY_QUERY false}}
19+
{{$CLUSTER_OOMS_IGNORED_PROCESSES := DefaultParam .CL2_CLUSTER_OOMS_IGNORED_PROCESSES ""}}
20+
{{$ENABLE_CLUSTER_OOMS_TRACKER := DefaultParam .CL2_ENABLE_CLUSTER_OOMS_TRACKER true}}
21+
{{$ENABLE_CONTAINER_RESTARTS_MEASUREMENT := DefaultParam .CL2_ENABLE_CONTAINER_RESTARTS_MEASUREMENT false}}
22+
{{$ALLOWED_CONTAINER_RESTARTS := DefaultParam .CL2_ALLOWED_CONTAINER_RESTARTS 1}}
23+
{{$CUSTOM_ALLOWED_CONTAINER_RESTARTS := DefaultParam .CL2_CUSTOM_ALLOWED_CONTAINER_RESTARTS ""}}
24+
{{$PROBE_MEASUREMENTS_PING_SLEEP_DURATION := DefaultParam .CL2_PROBE_MEASUREMENTS_PING_SLEEP_DURATION "1s"}}
25+
26+
{{$allowedSlowCalls := AddInt $ALLOWED_SLOW_API_CALLS $HUGE_SERVICE_ALLOWED_SLOW_API_CALLS}}
27+
28+
# DNS propagation configs, used to measure DNS propagation latency for statefulset in statefulset.yaml
29+
# Flag to enable/disable the DNS propagation measurement
30+
{{$ENABLE_DNS_PROPAGATION_MEASUREMENT := DefaultParam .CL2_ENABLE_DNS_PROPAGATION_MEASUREMENT false}}
31+
# Time threshold for the DNS propagation measurement
32+
{{$DNS_PROPAGATION_THRESHOLD := DefaultParam .CL2_DNS_PROPAGATION_THRESHOLD "10s"}}
33+
34+
35+
steps:
36+
- name: {{$action}}ing measurements
37+
measurements:
38+
- Identifier: APIResponsivenessPrometheus
39+
Method: APIResponsivenessPrometheus
40+
Params:
41+
action: {{$action}}
42+
{{if not $USE_SIMPLE_LATENCY_QUERY}}
43+
enableViolations: {{$ENABLE_VIOLATIONS_FOR_API_CALL_PROMETHEUS}}
44+
allowedSlowCalls: {{$allowedSlowCalls}}
45+
customThresholds: {{YamlQuote $CUSTOM_API_CALL_THRESHOLDS 4}}
46+
{{end}}
47+
- Identifier: APIResponsivenessPrometheusSimple
48+
Method: APIResponsivenessPrometheus
49+
Params:
50+
action: {{$action}}
51+
enableViolations: {{$ENABLE_VIOLATIONS_FOR_API_CALL_PROMETHEUS_SIMPLE}}
52+
useSimpleLatencyQuery: true
53+
summaryName: APIResponsivenessPrometheus_simple
54+
allowedSlowCalls: {{$allowedSlowCalls}}
55+
customThresholds: {{YamlQuote $CUSTOM_API_CALL_THRESHOLDS 4}}
56+
- Identifier: TestMetrics
57+
Method: TestMetrics
58+
Params:
59+
action: {{$action}}
60+
systemPodMetricsEnabled: {{$ENABLE_SYSTEM_POD_METRICS}}
61+
restartCountThresholdOverrides: {{YamlQuote $RESTART_COUNT_THRESHOLD_OVERRIDES 4}}
62+
enableRestartCountCheck: {{$ENABLE_RESTART_COUNT_CHECK}}
63+
clusterOOMsIgnoredProcesses: {{YamlQuote $CLUSTER_OOMS_IGNORED_PROCESSES 4}}
64+
clusterOOMsTrackerEnabled: {{$ENABLE_CLUSTER_OOMS_TRACKER}}
65+
{{if $ENABLE_IN_CLUSTER_NETWORK_LATENCY}}
66+
- Identifier: InClusterNetworkLatency
67+
Method: InClusterNetworkLatency
68+
Params:
69+
action: {{$action}}
70+
checkProbesReadyTimeout: {{$PROBE_MEASUREMENTS_CHECK_PROBES_READY_TIMEOUT}}
71+
replicasPerProbe: {{AddInt 2 (DivideInt .Nodes 100)}}
72+
pingSleepDuration: {{$PROBE_MEASUREMENTS_PING_SLEEP_DURATION}}
73+
{{end}}
74+
{{if $ENABLE_CONTAINER_RESTARTS_MEASUREMENT}}
75+
- Identifier: ContainerRestarts
76+
Method: ContainerRestarts
77+
Params:
78+
action: {{$action}}
79+
enableViolations: true
80+
defaultAllowedRestarts: {{$ALLOWED_CONTAINER_RESTARTS}}
81+
customAllowedRestarts: {{YamlQuote $CUSTOM_ALLOWED_CONTAINER_RESTARTS 4}}
82+
{{end}}
83+
{{if $ENABLE_DNS_PROPAGATION_MEASUREMENT}}
84+
- Identifier: DnsPropagation
85+
Method: DnsPropagation
86+
Params:
87+
action: {{$action}}
88+
DNSPropagationProbeStatefulSet: {{$serviceName}}
89+
DNSPropagationProbeService: {{$serviceName}}
90+
DNSPropagationProbeNamespaceIndex: {{$namespaceIdx}}
91+
DNSPropagationProbePodCount: {{$statefulsetEndpoints}}
92+
DNSPropagationProbeSampleCount: {{MinInt 25 (AddInt 15 (DivideInt $statefulsetEndpoints 1000))}}
93+
replicasPerProbe: {{MinInt 10 (AddInt 2 (DivideInt .Nodes 100))}}
94+
threshold: {{$DNS_PROPAGATION_THRESHOLD}}
95+
{{end}}
96+
- module:
97+
path: ../load/modules/dns-performance-metrics.yaml
98+
params:
99+
action: {{$action}}
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{{$endpoints := .endpoints}}
2+
{{$statefulsetEndpoints := .statefulsetEndpoints}}
3+
{{$isHeadless := .isHeadless}}
4+
{{$serviceName := .serviceName}}
5+
6+
## CL2 params
7+
{{$CHECK_IF_PODS_ARE_UPDATED := DefaultParam .CL2_CHECK_IF_PODS_ARE_UPDATED true}}
8+
{{$ENABLE_LARGE_STATEFULSET := DefaultParam .CL2_ENABLE_LARGE_STATEFULSET false}}
9+
10+
steps:
11+
{{if $ENABLE_LARGE_STATEFULSET}}
12+
- module:
13+
path: modules/statefulset.yaml
14+
params:
15+
action: "create"
16+
replicasPerNamespace: 1
17+
endpoints: {{$statefulsetEndpoints}}
18+
serviceName: {{$serviceName}}-statefulset
19+
{{end}}
20+
21+
- name: Create {{$serviceName}}
22+
phases:
23+
- namespaceRange:
24+
min: 1
25+
max: 1
26+
replicasPerNamespace: 1
27+
tuningSet: Sequence
28+
objectBundle:
29+
- basename: {{$serviceName}}
30+
objectTemplatePath: service.yaml
31+
templateFillMap:
32+
HeadlessService: {{$isHeadless}}
33+
- name: Creating {{$serviceName}} measurements
34+
measurements:
35+
- Identifier: WaitForHugeServiceDeployments
36+
Method: WaitForControlledPodsRunning
37+
Params:
38+
action: start
39+
apiVersion: apps/v1
40+
checkIfPodsAreUpdated: {{$CHECK_IF_PODS_ARE_UPDATED}}
41+
kind: Deployment
42+
labelSelector: group = {{$serviceName}}
43+
operationTimeout: 30m
44+
- name: Creating {{$serviceName}} pods
45+
phases:
46+
- namespaceRange:
47+
min: 1
48+
max: 1
49+
replicasPerNamespace: 1
50+
tuningSet: Sequence
51+
objectBundle:
52+
- basename: huge-service-deployment
53+
objectTemplatePath: simple-deployment.yaml
54+
templateFillMap:
55+
Replicas: {{$endpoints}}
56+
EnvVar: a
57+
Group: huge-service
58+
CpuRequest: 1m
59+
MemoryRequest: 10M
60+
SvcName: {{$serviceName}}
61+
- name: Waiting for {{$serviceName}} pods to be created
62+
measurements:
63+
- Identifier: WaitForHugeServiceDeployments
64+
Method: WaitForControlledPodsRunning
65+
Params:
66+
action: gather
67+
68+
- module:
69+
path: ../load/modules/dns-k8s-hostnames.yaml
70+
71+
- name: Updating {{$serviceName}} pods
72+
phases:
73+
- namespaceRange:
74+
min: 1
75+
max: 1
76+
replicasPerNamespace: 1
77+
tuningSet: Sequence
78+
objectBundle:
79+
- basename: huge-service-deployment
80+
objectTemplatePath: simple-deployment.yaml
81+
templateFillMap:
82+
Replicas: {{$endpoints}}
83+
EnvVar: b
84+
Group: huge-service
85+
CpuRequest: 1m
86+
MemoryRequest: 10M
87+
SvcName: {{$serviceName}}
88+
- name: Waiting for {{$serviceName}} pods to be updated
89+
measurements:
90+
- Identifier: WaitForHugeServiceDeployments
91+
Method: WaitForControlledPodsRunning
92+
Params:
93+
action: gather
94+
95+
{{if $ENABLE_LARGE_STATEFULSET}}
96+
- module:
97+
path: modules/statefulset.yaml
98+
params:
99+
action: "delete"
100+
replicasPerNamespace: 0
101+
serviceName: {{$serviceName}}-statefulset
102+
{{end}}
103+
104+
- name: Deleting {{$serviceName}} pods
105+
phases:
106+
- namespaceRange:
107+
min: 1
108+
max: 1
109+
replicasPerNamespace: 0
110+
tuningSet: Sequence
111+
objectBundle:
112+
- basename: huge-service-deployment
113+
objectTemplatePath: simple-deployment.yaml
114+
templateFillMap:
115+
Replicas: {{$endpoints}}
116+
Group: {{$serviceName}}
117+
CpuRequest: 1m
118+
MemoryRequest: 10M
119+
SvcName: {{$serviceName}}
120+
- name: Waiting for {{$serviceName}} pods to be deleted
121+
measurements:
122+
- Identifier: WaitForHugeServiceDeployments
123+
Method: WaitForControlledPodsRunning
124+
Params:
125+
action: gather
126+
- name: Delete {{$serviceName}}
127+
phases:
128+
- namespaceRange:
129+
min: 1
130+
max: 1
131+
replicasPerNamespace: 0
132+
tuningSet: Sequence
133+
objectBundle:
134+
- basename: {{$serviceName}}
135+
objectTemplatePath: service.yaml
136+
templateFillMap:
137+
HeadlessService: {{$isHeadless}}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Valid actions: "create", "delete"
2+
{{$action := .action}}
3+
4+
{{$replicasPerNamespace := .replicasPerNamespace}}
5+
{{$endpoints := DefaultParam .endpoints 100}}
6+
{{$serviceName := .serviceName}}
7+
8+
steps:
9+
- name: {{$action}} {{$serviceName}}
10+
phases:
11+
- namespaceRange:
12+
min: 1
13+
max: 1
14+
replicasPerNamespace: {{$replicasPerNamespace}}
15+
tuningSet: Sequence
16+
objectBundle:
17+
- basename: {{$serviceName}}
18+
objectTemplatePath: statefulset_service.yaml
19+
- name: Creating {{$serviceName}} measurements
20+
measurements:
21+
- Identifier: WaitForHugeServiceStatefulSet
22+
Method: WaitForControlledPodsRunning
23+
Params:
24+
action: start
25+
apiVersion: apps/v1
26+
kind: StatefulSet
27+
labelSelector: group = load
28+
operationTimeout: 30m
29+
- name: {{$action}} {{$serviceName}} pods
30+
phases:
31+
- namespaceRange:
32+
min: 1
33+
max: 1
34+
replicasPerNamespace: {{$replicasPerNamespace}}
35+
tuningSet: Sequence
36+
objectBundle:
37+
- basename: {{$serviceName}}
38+
objectTemplatePath: statefulset.yaml
39+
templateFillMap:
40+
ReplicasMin: {{$endpoints}}
41+
ReplicasMax: {{$endpoints}}
42+
- name: Waiting for {{$serviceName}} pods to be {{$action}}d
43+
measurements:
44+
- Identifier: WaitForHugeServiceStatefulSet
45+
Method: WaitForControlledPodsRunning
46+
Params:
47+
action: gather
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../load/service.yaml
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../load/simple-deployment.yaml

0 commit comments

Comments
 (0)