架构

架构 #

本文档将介绍 KWOK 的架构。

kwok #

kwok 是一个资源控制器,类似于 kube-controller-manager,负责模拟假节点、Pod 和其他 Kubernetes API 资源的生命周期。

它可以在任何环境中运行,在集群中使用或使用 kubeconfig 连接到集群的 kube-apiserver,然后管理集群的资源。

到目前为止,kwok 提供了两种类型的控制器

  • 资源生命周期模拟控制器 - 这种类型的控制器用于模拟 Kubernetes 资源的生命周期。你可以通过阶段配置定义和自定义资源的生命周期。值得注意的是,资源生命周期模拟控制器只是一个概念术语,用于文档目的,实际上并不存在于 kwok 中。以下控制器在此类型下实现
    • 节点控制器 - 负责选择要模拟的节点,然后通过更新节点状态字段(最初应由 kubelet 报告)来模拟节点的生命周期。
    • Pod 控制器 - 负责通过更新 Pod 状态字段(最初应由 kubelet 报告)来模拟调度到这些选定节点的 Pod 的生命周期。
    • 阶段控制器 - 后来引入,用于更通用的目的,旨在模拟除了 v1.Nodev1.Pod 之外的其他 Kubernetes 资源类型的生命周期。你可以将节点控制器和 Pod 控制器视为阶段控制器的专门实现。
  • 节点租约控制器 - 这是 kwok 中的一个专用控制器,用于通过为这些受管节点创建和续订节点租约对象来报告节点心跳。有关更多详细信息,请参阅 节点心跳KEP 589

有关更多详细信息,请参阅 阶段配置

kwokctl #

kwokctl 是一个 CLI 工具,旨在简化集群的创建和管理,其中节点由 kwok 模拟。

它使用 kwokctl create cluster 命令创建集群。

使用运行时启动控制平面组件,然后从 kube-apiserver 访问它,就好像它是一个真正的集群一样。

Toolsekktuwcbodekccctttlllkbuibneeat-rcaydpiserveCrdooRmcupknoetnriemnetkkkssuuwbboeek---cscpocoonhndtetmrdraouonllllelererr-mannaegredrctlprometkhienuds

运行时 #

我们现在提供一些运行时来模拟集群,例如

  • 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