modules/python/clusterloader2/slo/config/cluster-scale-config.yaml (131 lines of code) (raw):
name: deployment-churn
{{$nodesPerStep := DefaultParam .CL2_NODES_PER_STEP 100}}
{{$nodesPerNamespace := DefaultParam .CL2_NODES_PER_NAMESPACE 100}}
{{$podsPerNode := DefaultParam .CL2_PODS_PER_NODE 50}}
{{$loadTestThroughput := DefaultParam .CL2_LOAD_TEST_THROUGHPUT 100}}
{{$deploymentSize := DefaultParam .CL2_DEPLOYMENT_SIZE 100}}
{{$repeats := DefaultParam .CL2_REPEATS 1}}
{{$steps := DefaultParam .CL2_STEPS 5}}
{{$latencyPodCpu := DefaultParam .CL2_LATENCY_POD_CPU 10}}
{{$latencyPodMemory := DefaultParam .CL2_LATENCY_POD_MEMORY 50}}
{{$podStartupLatencyThreshold := DefaultParam .CL2_POD_STARTUP_LATENCY_THRESHOLD "15s"}}
{{$namespaces := DivideInt $nodesPerStep $nodesPerNamespace}}
{{$deploymentQPS := DivideFloat $loadTestThroughput $deploymentSize}}
{{$operationTimeout := DefaultParam .CL2_OPERATION_TIMEOUT "15m"}}
{{$groupName := DefaultParam .CL2_GROUP_NAME "deployment-churn"}}
{{$totalNodes := MultiplyInt $nodesPerStep $steps}}
{{$totalPods := MultiplyInt $nodesPerStep $steps $podsPerNode}}
{{$podsPerNamespace := DivideInt $totalPods $namespaces}}
{{$deploymentsPerNamespace := DivideInt $podsPerNamespace (MultiplyInt $deploymentSize $steps)}}
{{$CILIUM_METRICS_ENABLED := DefaultParam .CL2_CILIUM_METRICS_ENABLED false}}
namespace:
number: {{$namespaces}}
prefix: slo
deleteStaleNamespaces: true
deleteAutomanagedNamespaces: true
enableExistingNamespaces: false
tuningSets:
- name: DeploymentCreateQps
qpsLoad:
qps: {{$deploymentQPS}}
- name: DeploymentDeleteQps
qpsLoad:
qps: {{$deploymentQPS}}
steps:
- name: Log - totalNodes={{$totalNodes}}, namespaces={{$namespaces}}, nodesPerNamespace={{$nodesPerNamespace}}, podsPerNode={{$podsPerNode}}, totalPods={{$totalPods}}, podsPerNamespace={{$podsPerNamespace}}, deploymentsPerNamespace={{$deploymentsPerNamespace}}, deploymentSize={{$deploymentSize}}, deploymentQPS={{$deploymentQPS}}
measurements:
- Identifier: Dummy
Method: Sleep
Params:
action: start
duration: 1ms
- module:
path: /modules/measurements.yaml
params:
action: start
group: {{$groupName}}
{{if $CILIUM_METRICS_ENABLED}}
- module:
path: /modules/cilium-measurements.yaml
params:
action: start
{{end}}
- name: Start measurements
measurements:
- Identifier: WaitForRunningLatencyDeployments
Method: WaitForControlledPodsRunning
Params:
action: start
checkIfPodsAreUpdated: true
apiVersion: apps/v1
kind: Deployment
labelSelector: group = deployment-churn
operationTimeout: {{$operationTimeout}}
{{range $i := Loop $repeats}}
{{range $j := Loop $steps}}
- name: Creating Deployments {{$j}}
phases:
- namespaceRange:
min: 1
max: {{$namespaces}}
replicasPerNamespace: {{$deploymentsPerNamespace}}
tuningSet: DeploymentCreateQps
objectBundle:
- basename: deployment-churn-{{$j}}
objectTemplatePath: deployment_template.yaml
templateFillMap:
Replicas: {{$deploymentSize}}
Group: {{$groupName}}
CpuRequest: {{$latencyPodCpu}}m
MemoryRequest: {{$latencyPodMemory}}M
deploymentLabel: start
- name: Wait for nodes to be ready
measurements:
- Identifier: ConfirmNodeCount
Method: WaitForNodes
Params:
action: start
minDesiredNodeCount: {{MultiplyInt $nodesPerNamespace (AddInt $j 1)}}
maxDesiredNodeCount: {{$totalNodes}}
labelSelector: slo = true
timeout: {{$operationTimeout}}
refreshInterval: 1m
- name: Waiting for latency pods to be running
measurements:
- Identifier: WaitForRunningLatencyDeployments
Method: WaitForControlledPodsRunning
Params:
action: gather
refreshInterval: 15s
{{end}}
{{range $j := Loop $steps}}
- name: Deleting Deployments {{$j}}
phases:
- namespaceRange:
min: 1
max: {{$namespaces}}
replicasPerNamespace: 0
tuningSet: DeploymentDeleteQps
objectBundle:
- basename: deployment-churn-{{$j}}
objectTemplatePath: deployment_template.yaml
- name: Waiting for latency pods to be deleted
measurements:
- Identifier: WaitForRunningLatencyDeployments
Method: WaitForControlledPodsRunning
Params:
action: gather
refreshInterval: 15s
{{end}}
{{end}}
{{if $CILIUM_METRICS_ENABLED}}
- module:
path: /modules/cilium-measurements.yaml
params:
action: gather
{{end}}
- module:
path: /modules/measurements.yaml
params:
action: gather
group: {{$groupName}}