Testground
GitHubGo SDKInfra
master
master
  • README
  • Table of contents
    • What is Testground?
      • Community
    • Concepts and architecture
      • Test plans and test cases
      • Daemon and client
      • Synchronization service
      • Networking
      • Sidecar
      • Builders
      • Runners
      • Runtime environment (runenv)
      • Client-Server communication
    • Getting started
    • Writing test plans
      • Quick start
      • Understanding the test plan manifest
      • Parameters and test cases
      • Keeping instances in sync
      • Communication between instances
      • Observability, assets and metrics
    • Managing test plans
    • Running test plans
    • Traffic shaping
    • Analyzing test run results
      • Capturing profiles
    • Debugging test plans
    • Docker Settings
    • Featured projects
  • Runner library
    • local:exec
    • local:docker
      • System overview
      • Runner flags
      • Troubleshooting
    • cluster:k8s
      • System overview
      • How to create a Kubernetes cluster for Testground
      • Monitoring and Observability
      • Understanding Testground performance on Kubernetes
      • Troubleshooting
  • Builder Library
    • docker:go
    • exec:go
    • docker:generic
Powered by GitBook
On this page
  • Background
  • Dependencies
  • Kubernetes Operations (kops)
  • CoreOS Flannel
  • Weave Net
  • CNI-Genie
  1. Runner library
  2. cluster:k8s

System overview

Previouscluster:k8sNextHow to create a Kubernetes cluster for Testground

Last updated 5 years ago

Background

Using the cluster:k8s runner of Testground enables you to test distributed/p2p systems at scale.

The cluster:k8s Testground runner is capable of launching test workloads comprising 10k+ instances, and we aim to reach 100k at some point.

The and projects have used these scripts and playbooks to deploy large-scale test infrastructure. By crafting test scenarios that exercise components at such scale, we have been able to run simulations, carry out attacks, perform benchmarks, and execute all kinds of tests to validate correctness and performance.

Dependencies

Kubernetes Operations (kops)

(kops) is a tool which helps to create, destroy, upgrade and maintain production-grade Kubernetes clusters from the command line. We use it to create a Kubernetes cluster on AWS.

CoreOS Flannel

We use for networking on Kubernetes - for the default Kubernetes network, which in Testground terms is called the control network.

kops uses 100.96.0.0/11 for pod CIDR range, so this is what we use for the control network.

Weave Net

We use for the data plane on Testground - a secondary overlay network that we attach containers to on-demand.

We configure Weave to use 16.0.0.0/4 as CIDR (we want to test libp2p nodes with IPs in public ranges), so this is the CIDR for the Testground data network. The sidecar component is responsible for setting up the data network for every testplan instance.

CNI-Genie

In order to have two different networks attached to pods in Kubernetes, we run the .

IPFS
libp2p
Kubernetes Operations
CoreOS Flannel
Weave Net
CNI-Genie CNI