Architecture #
This document will introduce the architecture of KWOK.
kwok
#
kwok
is a resource controller, similar to kube-controller-manager
, that is responsible for simulating the lifecycle of fake nodes, pods, and other Kubernetes API resources.
It can run in any environment, use in-cluster or kubeconfig to connect to a kube-apiserver
of cluster, and then manage the resources of the cluster.
So far, kwok
has implemented the following controllers:
- Node Controller - It is responsible for selecting the node to simulate, and then simulating the node’s lifecycle, just by updating the heartbeat of the node.
- Pod Controller - It is responsible for pod that is on selected node, and plays the stage of pod’s lifecycle.
See Stages Configuration for more details.
kwokctl
#
kwokctl
is a CLI tool designed to streamline the creation and management of clusters, with nodes simulated by kwok
.
It creates the cluster with the kwokctl create cluster
command.
Use the runtime to start the control plane component, and then access it from kube-apiserver
as if it was a real cluster.
Runtimes #
We now provide some runtime to simulate the cluster, such as:
binary
- It will download required binaries of control plane components and start them directly.docker
- It will usedocker
to start the control plane components.podman
- It will usepodman
to start the control plane components.nerdctl
- It will usenerdctl
to start the control plane components.kind
- It will usekind
to start a cluster and deploy thekwok
into it.
Components #
This is a list of control plane components that kwokctl
will start:
etcd
kube-apiserver
kube-controller-manager
kube-scheduler
kwok-controller
(askwok
)prometheus
(optional, for metrics)
Tools #
kwokctl
provides some well-known tools as subcommands to access the cluster, such as:
kwokctl kubectl
kwokctl etcdctl