Skip to content

guessi/dnsperf-bench

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DNS Performance Testing with Kubernetes Pods

Docker Stars Docker Pulls Docker Automated

Integrated Items

  • DNSPerf 2.15.1

Versioning

Tags follow the format v<upstream_version>-<revision>, e.g. v2.15.1-1.

  • <upstream_version> — the bundled DNSPerf release version.
  • <revision> — incremented for packaging or Dockerfile changes that don't change the upstream version.

Pushing a tag matching v* triggers the CI workflow to build and push Docker images to Docker Hub. The semver metadata action extracts the version from the tag and applies it as the image tag (e.g. guessi/dnsperf:2.15.1-1). The latest tag is updated on every push to the default branch.

Note: The DNSPerf package is installed from the dns-oarc PPA, which only publishes the latest available version. There is no way to pin or install an older release via the PPA. If you need a specific version, you would have to build from source.

🔥 Stress Test 🔥 Benchmark with Kubernetes Pods

Apply pre-configured testing deployment/pods

kubectl apply -f https://raw.githubusercontent.com/guessi/dnsperf-bench/main/k8s-dnsperf-bench.yaml

Make sure the deployment is running as expected

kubectl get pods -l app=dnsperf
NAME                       READY   STATUS    RESTARTS   AGE
dnsperf-7b9cc5b497-d5nfs   1/1     Running   0          1m16s

Check benchmark results

kubectl logs -f deployments/dnsperf
...
Statistics:
  ...
  Queries per second:   17241.513774
  ...

Even more stress 🔥🔥🔥

kubectl scale deployments/dnsperf --replicas 10

🤔 Evaluate why there would have performance issue

Does CoreDNS running expected version?

kubectl describe deployments coredns -n kube-system | grep 'Image:'

Does CoreDNS running with expected Corefile?

kubectl describe configmap coredns -n kube-system

Does CoreDNS running with correct resources configuration?

kubectl get deployments coredns -n kube-system -o json | jq -r '.spec.template.spec.containers[0].resources'

Does CoreDNS need more CPU/Memory resources?

kubectl top pods -n kube-system -l k8s-app=kube-dns

How many CoreDNS Pods running? Have you enabled CoreDNS AutoScaler?

kubectl get deployments coredns -n kube-system

DO NOT report bug without trying to do performance tuning. If you try to gain too much stress without tuning CoreDNS configureation, it is expected to have some TIMEOUT or packet losts. It's expected if you don't change.

📑 Reference

About

DNS Performance Testing with Kubernetes Pods

Topics

Resources

Stars

29 stars

Watchers

2 watching

Forks

Contributors