azure-container-networking/test/scale
Hunter Gregory 9181fa67d0
ci: [NPM] add bash directive to scale scripts (#2876)
ci: add bash directive to scale scripts

Signed-off-by: Hunter Gregory <42728408+huntergregory@users.noreply.github.com>
2024-07-25 17:43:27 +00:00
..
config test: Adding prometheus config for acn docs (#1964) 2023-06-07 14:47:25 +00:00
connectivity ci: [NPM] add bash directive to scale scripts (#2876) 2024-07-25 17:43:27 +00:00
templates test: create nginx deployments in scale test (#2074) 2023-07-25 21:13:59 +00:00
utils
README.md test:[NPM] Adding service deployment for the scale test (#2007) 2023-06-20 02:30:20 +00:00
install-kwok.sh
label-nodes.sh ci: cilium scale pipeline (#2085) 2023-08-14 22:37:50 +00:00
run-kwok-as-pod.sh test(scale): [NPM] fix flakes in kwok and capture kernel state on failure (#2249) 2023-11-29 15:37:46 -08:00
run-kwok.sh
test-scale.sh ci: [NPM] add bash directive to scale scripts (#2876) 2024-07-25 17:43:27 +00:00

README.md

Overview

Scripts for scale testing our components in AKS with fake and/or real resources.

Fake Resources

Scripts can use KWOK to simulate running Pods. KWOK can instantly run thousands of fake VMs and Pods.

This saves us from:

  1. Large resource costs.
  2. Hours waiting for VMs and Pods to bootup.

Usage

  1. Create AKS cluster with --uptime-sla and create any nodepools.
  2. If making KWOK Pods, run run-kwok.sh in the background.
  3. Scale with test-scale.sh. Specify number of Deployments, Pod replicas, NetworkPolicies, and labels for Pods. Can also delete/re-add objects to cause churn.
  4. Test connectivity with connectivity/test-connectivity.sh.

Example Runs

./test-scale.sh --max-kwok-pods-per-node=50 \
    --num-kwok-deployments=10 \
    --num-kwok-replicas=1 \
    --max-real-pods-per-node=30 \
    --num-real-deployments=5 \
    --num-real-services=4 \
    --num-real-replicas=2 \
    --num-network-policies=1 \
    --num-unapplied-network-policies=10 \
    --num-unique-labels-per-pod=2 \
    --num-unique-labels-per-deployment=2 \
    --num-shared-labels-per-pod=10 \
    --delete-labels \
    --delete-labels-interval=30 \
    --delete-labels-times=2 \
    --delete-netpols \
    --delete-netpols-interval=0 \
    --delete-netpols-times=1 \
    --delete-kwok-pods=10 \
    --delete-real-pods=5 \
    --delete-pods-interval=120 \
    --delete-pods-times=2

Note: you must run ./test-scale.sh first with --num-network-policies=1 or more, and --num-shared-labels-per-pod=3 or more.

./test-connectivity.sh --num-scale-pods-to-verify=all \
    --max-wait-for-initial-connectivity=600 \
    --max-wait-after-adding-netpol=120