SimKube Documentation
SimKube is a record-and-replay simulation environment for Kubernetes based on KWOK, the Kubernetes WithOut Kubelet project. Read on to learn more!
Get started with SimKube!
Run the following commands for a SimKube quickstart:
curl https://simkube.dev/traces/dsb-socialnetwork-scaling.trace > /tmp/dsb-socialnetwork-scaling.trace
(or click here)git clone https://github.com/acrlabs/simkube && cd simkube
kubectl apply -k k8s/kustomize/sim
cargo install skctl
skctl run test-simulation -f ~/downloads/dsb-socialnetwork-scaling.trace
How does SimKube work?
SimKube has four main components, shown in orange in the diagram and described briefly here:
sk-tracer
is responsible for collecting a trace, that is, a timeline of important events from a production Kubernetes cluster, and saving that trace to long-term storage (such as Amazon S3).- Your simulation environment runs in a separate Kubernetes cluster running
sk-ctrl
andsk-driver
;sk-ctrl
is a Kubernetes controller that orchestrates your simulation, andsk-driver
is responsible for downloading a trace file and replaying it in the simulation cluster. - The user (you!) interacts with both the production and simulation clusters through the
skctl
CLI tool.
Your simulation environment is running a real Kubernetes control plane, including the apiserver, scheduler, and any other control plane components (such as cluster autoscaler) that are relevant. All of the nodes are fake—we use KWOK to efficiently mock out hundreds or thousands of nodes and pods in your cluster on your laptop!