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. If you deploy a nginx pod to a kind cluster, you could curl to its IP address and get an HTTP response containing its HTML page. But in a KWOK cluster, you get nothing because the pod isn’t real.
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
\ | linux/ amd64 | linux/ arm64 | darwin/ amd64 | darwin/ arm64 | windows/ amd64 | windows/ arm64 |
---|---|---|---|---|---|---|
binary ⭐️ | 🟢 | 🔵 | 🟢 | 🟢 | 🟢 | 🟣 |
docker ⭐️ | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
podman ⭐️ | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
nerdctl | 🟢 | 🔵 | 🔴 | 🔴 | 🔴 | 🔴 |
lima ⚠️ | 🟣 | 🟣 | 🟣 | 🟣 | 🔴 | 🔴 |
finch ⚠️ | 🔴 | 🔴 | 🟣 | 🟣 | 🟣 | 🟣 |
kind | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
kind-podman | 🟢 | 🔵 | 🔵 | 🔵 | 🟣 | 🟣 |
kind-nerdctl ⚠️ | 🟣 | 🟣 | 🔴 | 🔴 | 🔴 | 🔴 |
kind-lima ⚠️ | 🟣 | 🟣 | 🟣 | 🟣 | 🔴 | 🔴 |
kind-finch ⚠️ | 🔴 | 🔴 | 🟣 | 🟣 | 🟣 | 🟣 |
- ⭐️ Recommended
- ⚠️ Work in progress
- 🟢 Supported and test covered by CI
- 🔵 Supported and test by manually
- 🟣 Supported but not fully tested
- 🔴 Unsupported yet
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.