CLI tool
kubernetes-sigs/kwok avatar
kubernetes-sigs/kwok

KWOK: Simulating Thousands of Kubernetes Nodes Without Kubelet

Project brief: Kubernetes WithOut Kubelet - Simulates thousands of Nodes and Clusters.

3,225 stars264 forksGoApache-2.0

At a glance

What is it?
KWOK replaces kubelet with a fake node simulator, letting you create and manage clusters of thousands of nodes on a laptop. This review covers its mechanism, setup, limitations, and alternatives.
Who is it for?
Adopt KWOK if you need to test Kubernetes controllers, schedulers, or API clients against large clusters without spending on real hardware. Avoid it if you need to validate kubelet-specific behavior like container runtime interactions or node pressure eviction, since those are simulated.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • kubernetes-sigs/kwok3,225 ★ · +63
Star history
Repository2026-07-312026-11-14
kubernetes-sigs/kwok3.2k3.2k

63 Stars in the last 106 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

The Problem: Testing Kubernetes at Scale Without Hardware

Kubernetes controllers and operators often fail in production because they were tested against a handful of nodes. Spinning up a real cluster with hundreds of nodes requires cloud instances or a large physical lab, which is slow and expensive. KWOK solves this by simulating nodes and pods at the API level, so you can create thousands of nodes in seconds on a laptop. The intended users are developers of controllers, scheduler plugins, or custom resource controllers who need to observe behavior under scale without the overhead of real kubelets. It is not for testing node-level components like CNI or kube-proxy, because those are not simulated.

How KWOK Works: Simulating Lifecycle Without Kubelet

KWOK provides two tools: kwok and kwokctl. The core tool, kwok, acts as a fake kubelet. It watches Kubernetes API resources and updates the status of nodes and pods to mimic real behavior. For example, when you create a pod, kwok sets its phase to Running and updates conditions. When you delete a node, it removes the node object. The key mechanism is that all state changes are written directly to the API server, so any client that uses the Kubernetes API sees a consistent view. kwokctl is a CLI that manages clusters, creating and deleting them almost instantly. It can run kwok in a container or binary, and it sets up the necessary components like etcd and the API server. The README states that KWOK can reliably maintain 1k nodes and 100k pods, and create 20 nodes or pods per second.

Getting Started: Commands and Configuration

The README points to the project website for detailed instructions, but the basic flow is to install kwokctl and use it to create a cluster. For example, you would run something like `kwokctl create cluster --name test` to start a cluster with simulated nodes. Then you can use `kubectl` to interact with it. The README mentions that you can run KWOK using pre-built images if Docker or Nerdctl is installed, or use binaries for all platforms. Configuration is done through flags or a config file, allowing you to set node types, labels, taints, capacities, and conditions. For pod behaviors, you can configure status transitions. The exact commands are not in the README, so you would need to consult the website or the CLI help for specifics. But the core idea is that you create a cluster, then create nodes and pods, and they get simulated automatically.

Key Capabilities: What You Can Test

The flexibility of KWOK is its main strength. You can define different node types with custom labels, taints, and capacities. This is useful for testing node selectors, affinity rules, or taint-based eviction. You can also configure pod behaviors, such as setting different statuses, to test edge cases. For example, you can make a pod fail or stay in Pending. This allows you to test how your controller reacts to various states. The compatibility with Kubernetes API means you can use kubectl, helm, or any other client. The README specifically mentions that KWOK works with any tools that are compliant with Kubernetes APIs. This makes it easy to integrate into existing workflows.

Limitations: Where Simulation Falls Short

The biggest limitation is that KWOK does not run actual containers. It only simulates the API objects. So you cannot test container runtime interactions, image pulls, or actual application behavior. If you need to verify that your deployment actually runs, KWOK is the wrong tool. Also, the simulation is only as accurate as the configuration. If you do not set the right conditions, the simulated nodes may not behave like real ones. For example, node pressure eviction is not automatically simulated; you have to configure it. Another limitation is that the README claims reliability for 1k nodes and 100k pods, but that is a specific scenario. If you need more, you may hit performance issues. The project is under active development, so APIs may change between releases.

Alternatives: Real Clusters and Other Simulators

The main alternative is to use a real cluster, either on cloud providers like EKS or GKE, or local solutions like kind or minikube. Kind runs real nodes in Docker containers, so it provides actual kubelets and container runtimes. This is better for testing node-level behavior, but it is limited to a few nodes per machine. For scale, you would need a cloud provider, which costs money and takes time. Another alternative is kube-scheduler-simulator, which simulates the scheduler only, not the entire cluster. That tool focuses on testing scheduling algorithms without the overhead of nodes. The difference is that KWOK simulates the full node and pod lifecycle, while the scheduler simulator only handles the scheduling decisions. If you need to test controllers that watch node status, KWOK is more appropriate. If you only care about scheduling, the simulator might be lighter.

Maintenance and Upgrade Cost

The project has a recent release schedule, with v0.8.0 in June 2026, v0.7.0 in May 2025, and v0.6.1 in October 2024. This indicates active maintenance. The license is Apache-2.0, which is permissive and allows commercial use without copyleft obligations. However, as a subproject of Kubernetes SIGs, it follows Kubernetes community standards. Upgrading between versions may require changes to your configuration or cluster creation commands, as the CLI and API evolve. The README does not provide a migration guide, so you should check the release notes on GitHub for breaking changes. Since it is a simulation tool, the cost of upgrading is low if you only use it for testing, but you need to ensure your test scripts remain compatible.

Editorial conclusion

Adopt KWOK if you need to test Kubernetes controllers, schedulers, or API clients against large clusters without spending on real hardware. Avoid it if you need to validate kubelet-specific behavior like container runtime interactions or node pressure eviction, since those are simulated. Before adopting, verify that the simulated node and pod statuses match your use case, and check the compatibility of your tooling with the fake nodes. The project is under active development with recent releases, but you should pin a version and review the changelog for breaking changes.

Frequently asked questions

What does KWOK stand for and what does it do?

Kubernetes WithOut Kubelet. It is a toolkit that sets up a cluster of thousands of nodes in seconds by simulating those nodes to behave like real ones, which keeps the resource footprint low enough to run on a laptop.

What are the two KWOK tools?

The kwok binary simulates the lifecycle of fake nodes, pods and other Kubernetes API resources, and the kwokctl command line tool creates and manages clusters whose nodes are simulated by kwok.

How much can KWOK simulate at once?

The README states that it can reliably maintain a thousand nodes and a hundred thousand pods, and that it can create twenty nodes or pods per second. Those are the project's own figures rather than published benchmark results.

Does KWOK need real hardware or special software?

No specific hardware or software is required. It can be run from pre-built images once Docker or Nerdctl is installed, or from binaries that the project says are available for all platforms.

Which Kubernetes releases does KWOK support?

The build reads a supported releases file from the repository root and defaults to supporting the first entry, with a variable that sets how many of the listed releases are built against. The images themselves are built for Linux on amd64 and arm64.

Can I use kubectl and Helm against a KWOK cluster?

Yes, and that is the compatibility claim: KWOK works with any tool or client compliant with the Kubernetes APIs, with kubectl, Helm and other clients given as examples, because simulated nodes speak the same API as real ones.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/kubernetes-sigs-kwok.svg)](https://hysenlabs.com/projects/kubernetes-sigs-kwok)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/kubernetes-sigs-kwok.svg)](https://hysenlabs.com/projects/kubernetes-sigs-kwok)

Was this useful?