KWOK
(K
ubernetes W
ithO
ut K
ubelet)
#
KWOK is pronounced as /kwɔk/
.
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:
kwok
is the cornerstone of this project, responsible for simulating the lifecycle of fake nodes, pods, and other Kubernetes API resources.kwokctl
is a CLI tool designed to streamline the creation and management of clusters, with nodes simulated bykwok
.
What’s the difference with kubemark
#
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
#
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 kwok
/kwokctl
.
Welcome to get started with the installation, basic usage, custom configuration, and contribution to KWOK.
kwokctl
Runtime Support Matrix
#
Runtime indicates which medium kwokctl
will use to start the cluster
OS/Arch | binary | docker | podman | nerdctl | kind | kind-podman |
---|---|---|---|---|---|---|
linux/amd64 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
linux/arm64 | 🔵 | 🔵 | 🔵 | 🔵 | 🔵 | 🔵 |
darwin/amd64 | 🟢/🟠 | 🟢 | 🔵 | 🔵/🟡 | 🟢 | 🔵 |
darwin/arm64 | 🔵/🟠 | 🔵 | 🔵 | 🔵/🟡 | 🔵 | 🔵 |
windows/amd64 | 🟢/🟠 | 🟣 | 🟤 | 🟤/🟡 | 🟤 | 🟤 |
windows/arm64 | 🟣/🟠 | 🟣 | 🔴 | 🔴 | 🔴 | 🔴 |
- 🟢 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
Community #
See our own contributor guide and the Kubernetes community page.
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.