@@ -30,6 +30,12 @@ if [[ -z "${K8S_VERSION:-}" ]]; then
3030 K8S_VERSION=https://storage.googleapis.com/k8s-release-dev/ci/latest.txt
3131fi
3232
33+ # Default Scale Scenario to performance
34+ if [[ -z " ${SCALE_SCENARIO:- } " ]]; then
35+ SCALE_SCENARIO=" performance"
36+ export SCALE_SCENARIO
37+ fi
38+
3339# Default cloud provider to aws
3440if [[ -z " ${CLOUD_PROVIDER:- } " ]]; then
3541 CLOUD_PROVIDER=" aws"
@@ -69,23 +75,29 @@ if [[ "${CLOUD_PROVIDER}" == "gce" ]]; then
6975 create_args+=(" --master-volume-size=1000" )
7076 create_args+=(" --gce-service-account=default" )
7177 create_args+=(" --topology=private" )
78+ create_args+=(" --bastion" )
7279 create_args+=(" --image=${INSTANCE_IMAGE:- ubuntu-os-cloud/ ubuntu-2404-noble-amd64-v20251001} " )
73- create_args+=(" --etcd-storage-type=hyperdisk-balanced" )
74- create_args+=(" --set spec.networking.podCIDR=10.64.0.0/11" )
75- create_args+=(" --set spec.networking.subnets[0].cidr=10.96.0.0/15" )
76- create_args+=(" --set spec.networking.serviceClusterIPRange=10.98.0.0/15" )
80+ create_args+=(" --set spec.networking.podCIDR=10.64.0.0/10" )
81+ create_args+=(" --set spec.networking.subnets[0].cidr=10.128.0.0/15" )
82+ create_args+=(" --set spec.networking.serviceClusterIPRange=10.130.0.0/15" )
7783 create_args+=(" --set spec.networking.nonMasqueradeCIDR=10.64.0.0/10" )
84+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeIOPS=10000" )
85+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeThroughput=1000" )
86+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeSize=120" )
87+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeType=hyperdisk-balanced" )
7888fi
7989create_args+=(" --networking=${CNI_PLUGIN:- calico} " )
8090if [[ " ${CNI_PLUGIN} " == " amazonvpc" ]]; then
8191 create_args+=(" --set spec.networking.amazonVPC.env=ENABLE_PREFIX_DELEGATION=true" )
8292fi
8393create_args+=(" --set spec.etcdClusters[0].manager.listenMetricsURLs=http://localhost:2382" )
84- create_args+=(" --set spec.etcdClusters[0 ].manager.env=ETCD_QUOTA_BACKEND_BYTES=8589934592" )
85- create_args+=(" --set spec.etcdClusters[1 ].manager.env=ETCD_QUOTA_BACKEND_BYTES=8589934592 " )
94+ create_args+=(" --set spec.etcdClusters[* ].manager.env=ETCD_QUOTA_BACKEND_BYTES=8589934592" )
95+ create_args+=(" --set spec.etcdClusters[* ].manager.env=ETCD_ENABLE_PPROF=true " )
8696create_args+=(" --set spec.cloudControllerManager.concurrentNodeSyncs=10" )
8797create_args+=(" --set spec.kubelet.maxPods=96" )
8898create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/healthz" )
99+ create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/livez" )
100+ create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/readyz" )
89101create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/metrics" )
90102create_args+=(" --set spec.kubeScheduler.kubeAPIQPS=500" )
91103create_args+=(" --set spec.kubeScheduler.kubeAPIBurst=500" )
@@ -99,7 +111,7 @@ create_args+=("--set spec.kubeControllerManager.enableProfiling=true")
99111create_args+=(" --set spec.kubeControllerManager.enableContentionProfiling=true" )
100112# inflight requests are bit higher than what currently upstream uses for GCE scale tests
101113create_args+=(" --set spec.kubeAPIServer.maxRequestsInflight=800" )
102- create_args+=(" --set spec.kubeAPIServer.maxMutatingRequestsInflight=400 " )
114+ create_args+=(" --set spec.kubeAPIServer.maxMutatingRequestsInflight=0 " )
103115create_args+=(" --set spec.kubeAPIServer.enableProfiling=true" )
104116create_args+=(" --set spec.kubeAPIServer.enableContentionProfiling=true" )
105117create_args+=(" --set spec.kubeAPIServer.logLevel=2" )
@@ -118,18 +130,10 @@ create_args+=("--master-size=${CONTROL_PLANE_SIZE:-c5.2xlarge}")
118130if [[ " ${CLOUD_PROVIDER} " == " aws" ]]; then
119131 # Enable creating a single nodes instance group
120132 KOPS_FEATURE_FLAGS=" AWSSingleNodesInstanceGroup,${KOPS_FEATURE_FLAGS:- } "
121- create_args+=(" --set spec.etcdClusters[0].etcdMembers[0].volumeIOPS=6000" )
122- create_args+=(" --set spec.etcdClusters[0].etcdMembers[1].volumeIOPS=6000" )
123- create_args+=(" --set spec.etcdClusters[0].etcdMembers[2].volumeIOPS=6000" )
124- create_args+=(" --set spec.etcdClusters[0].etcdMembers[0].volumeThroughput=1000" )
125- create_args+=(" --set spec.etcdClusters[0].etcdMembers[1].volumeThroughput=1000" )
126- create_args+=(" --set spec.etcdClusters[0].etcdMembers[2].volumeThroughput=1000" )
127- create_args+=(" --set spec.etcdClusters[0].etcdMembers[0].volumeSize=120" )
128- create_args+=(" --set spec.etcdClusters[0].etcdMembers[1].volumeSize=120" )
129- create_args+=(" --set spec.etcdClusters[0].etcdMembers[2].volumeSize=120" )
130- create_args+=(" --set spec.etcdClusters[0].etcdMembers[0].volumeType=io1" )
131- create_args+=(" --set spec.etcdClusters[0].etcdMembers[1].volumeType=io1" )
132- create_args+=(" --set spec.etcdClusters[0].etcdMembers[2].volumeType=io1" )
133+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeIOPS=6000" )
134+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeThroughput=1000" )
135+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeSize=120" )
136+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeType=io1" )
133137
134138fi
135139echo " KOPS_FEATURE_FLAGS=${KOPS_FEATURE_FLAGS} "
@@ -140,9 +144,14 @@ KUBETEST2_ARGS+=("-v=2")
140144KUBETEST2_ARGS+=(" --max-nodes-to-dump=${MAX_NODES_TO_DUMP:- 5} " )
141145KUBETEST2_ARGS+=(" --cloud-provider=${CLOUD_PROVIDER} " )
142146KUBETEST2_ARGS+=(" --cluster-name=${CLUSTER_NAME:- } " )
143- KUBETEST2_ARGS+=(" --kops-version-marker=${KOPS_VERSION_MARKER:- https:// storage.googleapis.com/ k8s-staging-kops/ kops/ releases/ markers/ master/ latest-ci.txt} " )
144147KUBETEST2_ARGS+=(" --admin-access=${ADMIN_ACCESS:- } " )
145148KUBETEST2_ARGS+=(" --env=KOPS_FEATURE_FLAGS=${KOPS_FEATURE_FLAGS} " )
149+ if [[ " ${JOB_TYPE} " == " presubmit" && " ${REPO_OWNER} /${REPO_NAME} " == " kubernetes/kops" ]]; then
150+ KUBETEST2_ARGS+=(" --build" )
151+ KUBETEST2_ARGS+=(" --kops-binary-path=${GOPATH} /src/k8s.io/kops/.build/dist/linux/$( go env GOARCH) /kops" )
152+ else
153+ KUBETEST2_ARGS+=(" --kops-version-marker=${KOPS_VERSION_MARKER:- https:// storage.googleapis.com/ k8s-staging-kops/ kops/ releases/ markers/ master/ latest-ci.txt} " )
154+ fi
146155
147156if [[ " ${CLOUD_PROVIDER} " == " gce" ]]; then
148157 if [[ -n " ${GCP_PROJECT:- } " ]]; then
@@ -151,10 +160,13 @@ if [[ "${CLOUD_PROVIDER}" == "gce" ]]; then
151160 KUBETEST2_ARGS+=(" --boskos-resource-type=${BOSKOS_RESOURCE_TYPE:- scalability-project} " )
152161 fi
153162 KUBETEST2_ARGS+=(" --control-plane-instance-group-overrides=spec.rootVolume.type=hyperdisk-balanced" )
163+ KUBETEST2_ARGS+=(" --control-plane-instance-group-overrides=spec.rootVolume.iops=10000" )
164+ KUBETEST2_ARGS+=(" --control-plane-instance-group-overrides=spec.rootVolume.throughput=1000" )
165+ KUBETEST2_ARGS+=(" --control-plane-instance-group-overrides=spec.associatePublicIP=true" )
154166fi
155167
156168# More time for bigger clusters
157- KUBETEST2_ARGS+=(" --validation-wait=55m " )
169+ KUBETEST2_ARGS+=(" --validation-wait=75m " )
158170KUBETEST2_ARGS+=(" --validation-count=3" )
159171KUBETEST2_ARGS+=(" --validation-interval=60s" )
160172
172184export PROMETHEUS_KUBE_PROXY_SELECTOR_KEY=" k8s-app"
173185export PROMETHEUS_SCRAPE_APISERVER_ONLY=" true"
174186export CL2_PROMETHEUS_TOLERATE_MASTER=" true"
175- if [[ " ${CLOUD_PROVIDER} " == " aws" ]]; then
187+ if [[ " ${CLOUD_PROVIDER} " == " aws" && " ${SCALE_SCENARIO} " == " performance " ]]; then
176188 # CL2 uses KUBE_SSH_KEY_PATH path to ssh to instances for scraping metrics
177189 export KUBE_SSH_KEY_PATH=" /tmp/kops/${CLUSTER_NAME} /id_ed25519"
178190 cat > " ${GOPATH} " /src/k8s.io/perf-tests/clusterloader2/testing/load/overrides.yaml << EOL
@@ -188,20 +200,41 @@ else
188200EOL
189201fi
190202
191- kubetest2 kops " ${KUBETEST2_ARGS[@]} " \
192- --up \
193- --kubernetes-version=" ${K8S_VERSION} " \
194- --create-args=" ${create_args[*]} " \
195- --test=clusterloader2 \
196- -- \
197- --provider=" ${CLOUD_PROVIDER} " \
198- --repo-root=" ${GOPATH} " /src/k8s.io/perf-tests \
199- --test-configs=" ${GOPATH} " /src/k8s.io/perf-tests/clusterloader2/testing/load/config.yaml \
200- --test-overrides=" ${GOPATH} " /src/k8s.io/perf-tests/clusterloader2/testing/load/overrides.yaml \
201- --extra-args=" --experimental-prometheus-snapshot-to-report-dir=true" \
202- --kube-config=" ${HOME} /.kube/config"
203- # --test-overrides="${GOPATH}"/src/k8s.io/perf-tests/clusterloader2/testing/experiments/enable_restart_count_check.yaml \
204- # --test-overrides="${GOPATH}"/src/k8s.io/perf-tests/clusterloader2/testing/experiments/ignore_known_gce_container_restarts.yaml \
205- # --test-overrides="${GOPATH}"/src/k8s.io/perf-tests/clusterloader2/testing/overrides/5000_nodes.yaml \
206- # --test-overrides="${GOPATH}"/src/k8s.io/perf-tests/clusterloader2/testing/huge-service/config.yaml \
207- # --test-overrides="${GOPATH}"/src/k8s.io/perf-tests/clusterloader2/testing/access-tokens/config.yaml \
203+ CLUSTERLOADER2_ARGS=()
204+ if [[ -n " ${KOPS_CL2_TEST_CONFIG} " ]]; then
205+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/${KOPS_CL2_TEST_CONFIG} " )
206+ else
207+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/load/config.yaml" )
208+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/huge-service/config.yaml" )
209+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/access-tokens/config.yaml" )
210+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/load/overrides.yaml" )
211+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/experiments/enable_restart_count_check.yaml" )
212+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/experiments/ignore_known_gce_container_restarts.yaml" )
213+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/overrides/5000_nodes.yaml" )
214+ CLUSTERLOADER2_ARGS+=(" --extra-args=--experimental-prometheus-snapshot-to-report-dir=true" )
215+ fi
216+
217+ if [[ " ${SCALE_SCENARIO: performance} " == " correctness" ]]; then
218+ kubetest2 kops " ${KUBETEST2_ARGS[@]} " \
219+ --up \
220+ --kubernetes-version=" ${K8S_VERSION} " \
221+ --create-args=" ${create_args[*]} " \
222+ --test=kops \
223+ -- \
224+ --test-package-url=https://storage.googleapis.com/k8s-release-dev \
225+ --test-package-dir=ci \
226+ --test-package-marker=latest.txt \
227+ --skip-regex=" \[Driver:.gcepd\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:([^L].*|L[^o].*|Lo[^a].*|Loa[^d].*)\]\[KubeUp\]" \
228+ --parallel=25
229+ else
230+ kubetest2 kops " ${KUBETEST2_ARGS[@]} " \
231+ --up \
232+ --kubernetes-version=" ${K8S_VERSION} " \
233+ --create-args=" ${create_args[*]} " \
234+ --test=clusterloader2 \
235+ -- \
236+ --provider=" ${CLOUD_PROVIDER} " \
237+ --repo-root=" ${GOPATH} " /src/k8s.io/perf-tests \
238+ --kube-config=" ${HOME} /.kube/config" \
239+ " ${CLUSTERLOADER2_ARGS[@]} "
240+ fi
0 commit comments