@@ -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"
@@ -58,17 +64,18 @@ if [[ "${CLOUD_PROVIDER}" == "aws" ]]; then
5864 create_args+=(" --node-size=t3a.medium,t3.medium,t2.medium,t3a.large,c5a.large,t3.large,c5.large,m5a.large,m6a.large,m5.large,c4.large,c7a.large,r5a.large,r6a.large,m7a.large" )
5965 create_args+=(" --node-volume-size=20" )
6066 create_args+=(" --zones=us-east-2a,us-east-2b,us-east-2c" )
61- create_args+=(" --image=${INSTANCE_IMAGE:- ssm:/ aws/ service/ canonical/ ubuntu/ server/ 22 .04/ stable/ current/ amd64/ hvm/ ebs-gp2/ ami-id} " )
67+ create_args+=(" --image=${INSTANCE_IMAGE:- ssm:/ aws/ service/ canonical/ ubuntu/ server/ 24 .04/ stable/ current/ amd64/ hvm/ ebs-gp2/ ami-id} " )
6268 # TODO: track failures of tests (HostPort & OIDC) when using `--dns=none`
6369 create_args+=(" --dns=none" )
6470fi
6571if [[ " ${CLOUD_PROVIDER} " == " gce" ]]; then
6672 create_args+=(" --zones=us-east1-b,us-east1-c,us-east1-d" )
67- create_args+=(" --node-size=e2-standard-2 " )
73+ create_args+=(" --node-size=e2-medium " )
6874 create_args+=(" --node-volume-size=30" )
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} " )
7380 create_args+=(" --etcd-storage-type=hyperdisk-balanced" )
7481 create_args+=(" --set spec.networking.podCIDR=10.64.0.0/11" )
@@ -81,11 +88,13 @@ if [[ "${CNI_PLUGIN}" == "amazonvpc" ]]; then
8188 create_args+=(" --set spec.networking.amazonVPC.env=ENABLE_PREFIX_DELEGATION=true" )
8289fi
8390create_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 " )
91+ create_args+=(" --set spec.etcdClusters[* ].manager.env=ETCD_QUOTA_BACKEND_BYTES=8589934592" )
92+ create_args+=(" --set spec.etcdClusters[* ].manager.env=ETCD_ENABLE_PPROF=true " )
8693create_args+=(" --set spec.cloudControllerManager.concurrentNodeSyncs=10" )
8794create_args+=(" --set spec.kubelet.maxPods=96" )
8895create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/healthz" )
96+ create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/livez" )
97+ create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/readyz" )
8998create_args+=(" --set spec.kubeScheduler.authorizationAlwaysAllowPaths=/metrics" )
9099create_args+=(" --set spec.kubeScheduler.kubeAPIQPS=500" )
91100create_args+=(" --set spec.kubeScheduler.kubeAPIBurst=500" )
@@ -118,18 +127,10 @@ create_args+=("--master-size=${CONTROL_PLANE_SIZE:-c5.2xlarge}")
118127if [[ " ${CLOUD_PROVIDER} " == " aws" ]]; then
119128 # Enable creating a single nodes instance group
120129 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" )
130+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeIOPS=6000" )
131+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeThroughput=1000" )
132+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeSize=120" )
133+ create_args+=(" --set spec.etcdClusters[*].etcdMembers[*].volumeType=io1" )
133134
134135fi
135136echo " KOPS_FEATURE_FLAGS=${KOPS_FEATURE_FLAGS} "
@@ -140,9 +141,14 @@ KUBETEST2_ARGS+=("-v=2")
140141KUBETEST2_ARGS+=(" --max-nodes-to-dump=${MAX_NODES_TO_DUMP:- 5} " )
141142KUBETEST2_ARGS+=(" --cloud-provider=${CLOUD_PROVIDER} " )
142143KUBETEST2_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} " )
144144KUBETEST2_ARGS+=(" --admin-access=${ADMIN_ACCESS:- } " )
145145KUBETEST2_ARGS+=(" --env=KOPS_FEATURE_FLAGS=${KOPS_FEATURE_FLAGS} " )
146+ if [[ " ${JOB_TYPE} " == " presubmit" && " ${REPO_OWNER} /${REPO_NAME} " == " kubernetes/kops" ]]; then
147+ KUBETEST2_ARGS+=(" --build" )
148+ KUBETEST2_ARGS+=(" --kops-binary-path=${GOPATH} /src/k8s.io/kops/.build/dist/linux/$( go env GOARCH) /kops" )
149+ else
150+ KUBETEST2_ARGS+=(" --kops-version-marker=${KOPS_VERSION_MARKER:- https:// storage.googleapis.com/ k8s-staging-kops/ kops/ releases/ markers/ master/ latest-ci.txt} " )
151+ fi
146152
147153if [[ " ${CLOUD_PROVIDER} " == " gce" ]]; then
148154 if [[ -n " ${GCP_PROJECT:- } " ]]; then
@@ -151,10 +157,11 @@ if [[ "${CLOUD_PROVIDER}" == "gce" ]]; then
151157 KUBETEST2_ARGS+=(" --boskos-resource-type=${BOSKOS_RESOURCE_TYPE:- scalability-project} " )
152158 fi
153159 KUBETEST2_ARGS+=(" --control-plane-instance-group-overrides=spec.rootVolume.type=hyperdisk-balanced" )
160+ KUBETEST2_ARGS+=(" --control-plane-instance-group-overrides=spec.associatePublicIP=true" )
154161fi
155162
156163# More time for bigger clusters
157- KUBETEST2_ARGS+=(" --validation-wait=55m " )
164+ KUBETEST2_ARGS+=(" --validation-wait=75m " )
158165KUBETEST2_ARGS+=(" --validation-count=3" )
159166KUBETEST2_ARGS+=(" --validation-interval=60s" )
160167
172179export PROMETHEUS_KUBE_PROXY_SELECTOR_KEY=" k8s-app"
173180export PROMETHEUS_SCRAPE_APISERVER_ONLY=" true"
174181export CL2_PROMETHEUS_TOLERATE_MASTER=" true"
175- if [[ " ${CLOUD_PROVIDER} " == " aws" ]]; then
182+ if [[ " ${CLOUD_PROVIDER} " == " aws" && " ${SCALE_SCENARIO} " == " performance " ]]; then
176183 # CL2 uses KUBE_SSH_KEY_PATH path to ssh to instances for scraping metrics
177184 export KUBE_SSH_KEY_PATH=" /tmp/kops/${CLUSTER_NAME} /id_ed25519"
178185 cat > " ${GOPATH} " /src/k8s.io/perf-tests/clusterloader2/testing/load/overrides.yaml << EOL
@@ -188,20 +195,40 @@ else
188195EOL
189196fi
190197
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 \
198+ CLUSTERLOADER2_ARGS=()
199+ if [[ -n " ${KOPS_CL2_TEST_CONFIG} " ]]; then
200+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/${KOPS_CL2_TEST_CONFIG} " )
201+ else
202+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/load/config.yaml" )
203+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/huge-service/config.yaml" )
204+ CLUSTERLOADER2_ARGS+=(" --test-configs=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/access-tokens/config.yaml" )
205+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/load/overrides.yaml" )
206+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/experiments/enable_restart_count_check.yaml" )
207+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/experiments/ignore_known_gce_container_restarts.yaml" )
208+ CLUSTERLOADER2_ARGS+=(" --test-overrides=${GOPATH} /src/k8s.io/perf-tests/clusterloader2/testing/overrides/5000_nodes.yaml" )
209+ fi
210+
211+ if [[ " ${SCALE_SCENARIO: performance} " == " correctness" ]]; then
212+ kubetest2 kops " ${KUBETEST2_ARGS[@]} " \
213+ --up \
214+ --kubernetes-version=" ${K8S_VERSION} " \
215+ --create-args=" ${create_args[*]} " \
216+ --test=kops \
217+ -- \
218+ --test-package-url=https://storage.googleapis.com/k8s-release-dev \
219+ --test-package-dir=ci \
220+ --test-package-marker=latest.txt \
221+ --skip-regex=" \[Driver:.gcepd\]|\[Serial\]|\[Disruptive\]|\[Flaky\]|\[Feature:([^L].*|L[^o].*|Lo[^a].*|Loa[^d].*)\]\[KubeUp\]" \
222+ --parallel=25
223+ else
224+ kubetest2 kops " ${KUBETEST2_ARGS[@]} " \
225+ --up \
226+ --kubernetes-version=" ${K8S_VERSION} " \
227+ --create-args=" ${create_args[*]} " \
228+ --test=clusterloader2 \
229+ -- \
230+ --provider=" ${CLOUD_PROVIDER} " \
231+ --repo-root=" ${GOPATH} " /src/k8s.io/perf-tests \
232+ --kube-config=" ${HOME} /.kube/config" \
233+ " ${CLUSTERLOADER2_ARGS[@]} "
234+ fi
0 commit comments