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 and OS Support
#
Runtime indicates which medium kwokctl
will use to start the cluster
binary | docker | podman | nerdctl | kind | |
---|---|---|---|---|---|
Linux | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
Darwin | 🟠/🟢 | 🟢 | 🔵 | 🔵 | 🟢 |
Windows | 🟠/🔵 | 🔵 | 🔵 | 🔵 | 🔵 |
- 🟢 Supported
- 🟠 Need to build platform-specific Kubernetes binaries
- 🔵 Expected support but not fully tested
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.