MCPcopy
hub / github.com/kubernetes-sigs/kwok

github.com/kubernetes-sigs/kwok @v0.8.0 sqlite

repository ↗ · DeepWiki ↗ · release v0.8.0 ↗
3,026 symbols 10,518 edges 567 files 1,800 documented · 59%
README

KWOK (Kubernetes WithOut Kubelet)

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 by kwok.

Please see our website for more in-depth information.

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 or 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.

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:

Code of conduct

Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.

Extension points exported contracts — how you extend this code

Starter (Interface)
Starter is an interface for starting resources. [9 implementers]
pkg/config/resources/resource.go
LogsGetter (Interface)
LogsGetter has a method to return a LogsInterface. A group's client should implement this interface. [5 implementers]
pkg/client/clientset/versioned/typed/apis/v1alpha1/logs.go
Counter (Interface)
Counter is a prometheus counter that can be incremented and decremented. [2 implementers]
pkg/kwok/metrics/counter.go
DynamicClientImpersonator (Interface)
DynamicClientImpersonator is an interface that provides functionality to impersonate a Kubernetes user and obtain a dyna [1 …
pkg/utils/client/impersonator.go
KMetadata (Interface)
KMetadata is a subset of the kubernetes k8s.io/apimachinery/pkg/apis/meta/v1.Object interface this interface may expand
pkg/log/kobj.go
Runtime (Interface)
Runtime is the interface for a runtime.
pkg/kwokctl/runtime/config.go
InternalObject (Interface)
InternalObject is an object that is internal to the kwok project.
pkg/config/config.go
ClusterAttachesGetter (Interface)
ClusterAttachesGetter has a method to return a ClusterAttachInterface. A group's client should implement this interface. [2 …
pkg/client/clientset/versioned/typed/apis/v1alpha1/clusterattach.go

Core symbols most depended-on inside this repo

Error
called by 223
pkg/log/wrapper.go
FromContext
called by 175
pkg/log/logger.go
String
called by 128
pkg/log/kobj.go
Run
called by 123
pkg/kwok/server/server.go
Contains
called by 122
pkg/utils/cel/resource_list.go
Get
called by 111
pkg/utils/queue/queue.go
Name
called by 105
pkg/kwokctl/runtime/cluster.go
Warn
called by 93
pkg/log/wrapper.go

Shape

Function 1,269
Method 1,213
Struct 437
Interface 71
TypeAlias 32
FuncType 4

Languages

Go100%

Modules by API surface

pkg/apis/internalversion/zz_generated.conversion.go266 symbols
pkg/apis/v1alpha1/zz_generated.deepcopy.go182 symbols
pkg/apis/internalversion/zz_generated.deepcopy.go134 symbols
pkg/kwokctl/runtime/config.go45 symbols
pkg/apis/internalversion/conversion.go34 symbols
pkg/apis/config/v1alpha1/zz_generated.deepcopy.go31 symbols
pkg/kwok/controllers/pod_controller.go30 symbols
pkg/utils/informer/informer.go27 symbols
pkg/config/config.go27 symbols
pkg/kwok/controllers/node_controller.go25 symbols
pkg/kwokctl/pki/pkiutil.go23 symbols
pkg/utils/client/clientset.go22 symbols

Dependencies from manifests, versioned

cel.dev/exprv0.25.1 · 1×
dario.cat/mergov1.0.1 · 1×
github.com/Masterminds/goutilsv1.1.1 · 1×
github.com/Masterminds/semver/v3v3.4.0 · 1×
github.com/Masterminds/sprig/v3v3.3.0 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/alex-shpak/hugo-bookv0.0.0-2024051811142 · 1×
github.com/antlr4-go/antlr/v4v4.13.0 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/blang/semver/v4v4.0.0 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×

For agents

$ claude mcp add kwok \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact