K-Bench is a framework to benchmark the control and data plane aspects of a Kubernetes cluster. More details are available at https://github.com/vmware-tanzu/k-bench. In my case, I am going to conduct this benchmarking study on a Tanzu Kubernetes cluster which is provisioned using Tanzu Kubernetes Grid service on a vSphere 7 U1 cluster.
Step 1: Clone the K-Bench repo
git clone https://github.com/vmware-tanzu/k-bench.git
./install.sh
Once the installation is done it will say, "Completed k-bench installation.".
Step 3: Run the benchmark
./run.sh
If you don't specify any test, then it is going to conduct the default set of tests. All sets of tests are defined under the config directory. If you browse to the config directory and list, there are separate folders specific to each test. You can see folders starting with cp and dp, and it refers to control plane and data plane related tests.
Usage: ./run.sh -r <run-tag> [-t <comma-separated-tests> -o <output-dir>]
DP network internode test
For example, you can run a data plane test to check the network performance between two nodes as shown below.
./run.sh -r "kbench-run-on-tkg-cluster-02" -t "dp_network_internode" -o "./"
As soon as you run the above command, two pods will be created inside "kbench-pod-namespace" on two worker nodes as you see below.
It will then start "iperf3" process inside those two pods to create a network load following a client-server model as per the actions defined in the config.json file.
Sample logs are given below. It shows details like the amount of data transferred, transfer rate, network latency, etc.
Once the test run is complete, the pods and other resources created will be automatically deleted. Similarly, you can select the other set of tests that are pre-defined in the framework. I believe you have the flexibility to define custom test cases too as per your requirements. I hope it was useful. Cheers!