What this tool do:
- run NeonVM virtual machines in k8s cluster, each machine ased on
postgres:15-bullseye
docker image
- for each VM run separate pod with
pgbench
configured to attack PostgreSQL running inside VM via overlay network
- randomly trigger VM live migrations (each ~5 min in average) for each VM
TL;DR
build
go build
get usage info
./neonvm-migration-loadtest -help
simple run
./neonvm-migration-loadtest
NOTE: tool will use default kubernetes config (~/.kube/config
) and your current kubernetes context, you can override it by -kubeconfig
arg
run 100 virtual machines during 1 hour without autoscale feature
./neonvm-migration-loadtest -vm-count=100 -duration=3600 -autoscale=false
Run as kubernetes job
apply RBAC
kubectl apply -f manifests/rbac.yaml
run 100 virtual machines during 1 hour without autoscale feature
kubectl apply -f manifests/loadtest.yaml
NOTE: edit loadtest.yaml
(args for loadtest
container) if you want change load test settings before run
Monitoring
NOTE: manifests adapted for Prometheus managed by kube-prometheus-stack