clusterloader2/testing/load/deployment.yaml (83 lines of code) (raw):

{{$HostNetworkMode := DefaultParam .CL2_USE_HOST_NETWORK_PODS false}} # Keep the CpuRequest/MemoryRequest request equal percentage of 1-core, 4GB node. # For now we're setting it to 0.5%. {{$CpuRequest := DefaultParam .CpuRequest "5m"}} {{$MemoryRequest := DefaultParam .MemoryRequest "20M"}} {{$dnsQPSPerClient := DefaultParam .CL2_DNS_QPS_PER_CLIENT 1}} # Guard the new DNS tests. Remove it once it's confirmed that it works on a subset of tests. {{$USE_ADVANCED_DNSTEST := DefaultParam .CL2_USE_ADVANCED_DNSTEST false}} {{$RUN_ON_ARM_NODES := DefaultParam .CL2_RUN_ON_ARM_NODES false}} apiVersion: apps/v1 kind: Deployment metadata: name: {{.Name}} labels: group: load svc: {{.SvcName}}-{{.Index}} spec: replicas: {{RandIntRange .ReplicasMin .ReplicasMax}} selector: matchLabels: name: {{.Name}} template: metadata: labels: group: load name: {{.Name}} svc: {{.SvcName}}-{{.Index}} {{if and .EnableDNSTests $USE_ADVANCED_DNSTEST}} dns-test: dnsperfgo {{end}} spec: hostNetwork: {{$HostNetworkMode}} containers: {{if .EnableDNSTests}} {{if $USE_ADVANCED_DNSTEST}} - image: gcr.io/k8s-staging-perf-tests/dnsperfgo:v1.3.0 ports: - containerPort: 9153 name: dnsperfmetrics protocol: TCP {{else}} - image: gcr.io/k8s-staging-perf-tests/dnsperfgo:v1.2.0 {{end}} # Fetches the dns server from /etc/resolv.conf and # sends 1 query per second. # With searchpath expansion, this is upto 12 queries per second. # dnsperfgo has a default client timeout of 5s. It sends queries for 60s, # then sleeps for 10s, to mimic bursts of DNS queries. command: - sh - -c - server=$(cat /etc/resolv.conf | grep nameserver | cut -d ' ' -f 2); echo "Using nameserver ${server}"; ./dnsperfgo -duration 60s -idle-duration 10s -inputfile /var/configmap/all-queries -qps {{$dnsQPSPerClient}}; name: {{.Name}}-dnsperf {{else}} - image: k8s.gcr.io/pause:3.1 name: {{.Name}} {{end}} resources: requests: cpu: {{$CpuRequest}} memory: {{$MemoryRequest}} volumeMounts: - name: configmap mountPath: /var/configmap - name: secret mountPath: /var/secret terminationGracePeriodSeconds: 1 # Add not-ready/unreachable tolerations for 15 minutes so that node # failure doesn't trigger pod deletion. tolerations: - key: "node.kubernetes.io/not-ready" operator: "Exists" effect: "NoExecute" tolerationSeconds: 900 - key: "node.kubernetes.io/unreachable" operator: "Exists" effect: "NoExecute" tolerationSeconds: 900 {{if $RUN_ON_ARM_NODES}} - key: "kubernetes.io/arch" operator: Equal value: arm64 effect: NoSchedule {{end}} volumes: - name: configmap configMap: name: {{.BaseName}}-{{.Index}} - name: secret secret: secretName: {{.BaseName}}-{{.Index}}