KWOK is pronounced as
KWOK is a toolkit that enables setting up a cluster of thousands of Nodes in seconds. Under the scene, all Nodes are simulated to behave like real ones, so the overall approach employs a pretty low resource footprint that you can easily play around on your laptop.
What is KWOK? #
KWOK stands for Kubernetes WithOut Kubelet. So far, it provides two tools:
kwokis the cornerstone of this project, responsible for simulating the lifecycle of fake nodes, pods, and other Kubernetes API resources.
kwokctlis a CLI tool designed to streamline the creation and management of clusters, with nodes simulated by
What’s the difference with
kubemark is a kubelet that does not actually run a container. Its behavior is exactly the same as kubelet, which means that simulating a large number of nodes and pods requires a lot of memory.
kwok, however, simply simulates the behavior of the node. As a result, it can simulate a large number of nodes and pods using very little memory.
What’s the difference with
kind runs Kubernetes in Docker, creating a real cluster.
kwokctl can be used as an alternative to
kind in some scenarios where you don’t need to actually run any pod.
Why KWOK? #
- Lightweight: You can simulate thousands of nodes on your laptop without significant consumption of CPU or memory resources. Currently, KWOK can reliably maintain 1k nodes and 100k pods easily.
- Fast: You can create and delete clusters and nodes almost instantly, without waiting for boot or provisioning. Currently, KWOK can create 20 nodes or pods per second.
- Compatibility: KWOK works with any tools or clients that are compliant with Kubernetes APIs, such as kubectl, helm, kui, etc.
- Portability: KWOK has no specific hardware or software requirements. You can run it using pre-built images, once Docker/Podman/Nerdctl is installed. Alternatively, binaries are also available for all platforms and can be easily installed.
- Flexibility: You can configure different node types, labels, taints, capacities, conditions, etc., and you can configure different pod behaviors, status, etc. to test different scenarios and edge cases.
Getting Started #
The animation below shows a test process to work with the latest version of
kwokctl Runtime Support Matrix
Runtime indicates which medium
kwokctl will use to start the cluster
- 🟢 Supported and test covered by CI
- 🔵 Supported and test by manually
- 🟣 Supported but not test yet (need help to verify)
- 🟤 Unsupported but should work in theory (need help to verify)
- 🔴 Unsupported and will not work
- 🟠 Need to build platform-specific Kubernetes binaries
- 🟡 Need to do some workaround to make it work
Getting Involved #
If you’re interested in participating in future discussions or development related to KWOK, there are several ways to get involved:
- Slack: #kwok for general usage discussion, #kwok-dev for development discussion. (visit slack.k8s.io for a workspace invitation)
- Open Issues/PRs/Discussions in sigs.k8s.io/kwok
Code of conduct #
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.