架构 #
本文档将介绍 KWOK 的架构。
kwok
#
kwok
是一个资源控制器,类似于 kube-controller-manager
,负责模拟假节点、Pod 和其他 Kubernetes API 资源的生命周期。
它可以在任何环境中运行,在集群中使用或使用 kubeconfig 连接到集群的 kube-apiserver
,然后管理集群的资源。
到目前为止,kwok
提供了两种类型的控制器
- 资源生命周期模拟控制器 - 这种类型的控制器用于模拟 Kubernetes 资源的生命周期。你可以通过阶段配置定义和自定义资源的生命周期。值得注意的是,资源生命周期模拟控制器只是一个概念术语,用于文档目的,实际上并不存在于
kwok
中。以下控制器在此类型下实现- 节点控制器 - 负责选择要模拟的节点,然后通过更新节点状态字段(最初应由 kubelet 报告)来模拟节点的生命周期。
- Pod 控制器 - 负责通过更新 Pod 状态字段(最初应由 kubelet 报告)来模拟调度到这些选定节点的 Pod 的生命周期。
- 阶段控制器 - 后来引入,用于更通用的目的,旨在模拟除了
v1.Node
和v1.Pod
之外的其他 Kubernetes 资源类型的生命周期。你可以将节点控制器和 Pod 控制器视为阶段控制器的专门实现。
- 节点租约控制器 - 这是
kwok
中的一个专用控制器,用于通过为这些受管节点创建和续订节点租约对象来报告节点心跳。有关更多详细信息,请参阅 节点心跳 和 KEP 589。
有关更多详细信息,请参阅 阶段配置。
kwokctl
#
kwokctl
是一个 CLI 工具,旨在简化集群的创建和管理,其中节点由 kwok
模拟。
它使用 kwokctl create cluster
命令创建集群。
使用运行时启动控制平面组件,然后从 kube-apiserver
访问它,就好像它是一个真正的集群一样。
运行时 #
我们现在提供一些运行时来模拟集群,例如
binary
- 它将下载控制平面组件所需的二进制文件并直接启动它们。docker
- 它将使用docker
启动控制平面组件。podman
- 它将使用podman
启动控制平面组件。nerdctl
- 它将使用nerdctl
启动控制平面组件。kind
- 它将使用kind
启动集群并将kwok
部署到其中。
组件 #
这是 kwokctl
将启动的控制平面组件列表
etcd
kube-apiserver
kube-controller-manager
kube-scheduler
kwok-controller
(作为kwok
)prometheus
(可选,用于指标)
工具 #
kwokctl
提供了一些众所周知的工具作为子命令来访问集群,例如
kwokctl kubectl
kwokctl etcdctl