关于 Kairon
Kairon 是在 Kubernetes 上调度、通过 KVM 运行虚拟机的系统,面向管理虚拟机集群的运维与开发团队。它以 Machine CRD 管理不同虚拟机后端,并提供网络策略、诊断工具和 Agent 接口。
主要功能
- 01通过 Kubernetes 调度虚拟机
- 02单一 CRD 支持四种虚拟机监控器
- 03为虚拟机网络边缘提供 eBPF 策略
- 04提供命令行诊断与运维操作
- 05支持 Agent 会话与沙箱
适用场景
- 01在 Kubernetes 集群运行虚拟机工作负载
- 02为 CI 和 Agent 创建隔离虚拟机
- 03检查虚拟机网络策略与流量
- 04诊断虚拟机或集群故障
MCP 相关
`kaironctl mcp serve` 将虚拟机、策略和实时网络数据开放给 MCP 客户端;写入操作需通过 `--allow-write` 启用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e KAIRON_KUBE_URL -e KAIRON_KUBE_TOKEN -e KAIRON_KUBE_CA -e KAIRON_KUBE_INSECURE -e KAIRON_UI_URL -e KAIRON_UI_TOKEN -e KAIRON_UI_CA -e KAIRON_UI_INSECURE -e KAIRON_LLM_URL -e KAIRON_LLM_MODEL -e KAIRON_LLM_API_KEY -e KAIRON_MCP_TENANT ghcr.io/zyvorai/kairon-mcp:v0.10.2KAIRON_KUBE_URLKubernetes API server URL, e.g. https://k8s.example:6443. The server only offers read tools unless --allow-write is appended to the container arguments; the image never sets it.KAIRON_KUBE_TOKEN密钥Bearer token for the Kubernetes API. Bind it to a Role with only the verbs the agent needs (get/list on machines for read-only use).KAIRON_KUBE_CAPath, inside the container, of the CA bundle for the Kubernetes API (mount it). Leave unset to use system roots.KAIRON_KUBE_INSECURESet to "true" to skip TLS verification of the Kubernetes API. Lab use only.KAIRON_UI_URLBase URL of kairon-ui; needed by the machine_network tool (network flows, drops, capture sessions).KAIRON_UI_TOKEN密钥Bearer token for kairon-ui.KAIRON_UI_CAPath, inside the container, of the CA certificate for a self-signed kairon-ui (mount it).KAIRON_UI_INSECURESet to "true" to skip TLS verification of kairon-ui. Lab use only.KAIRON_LLM_URLOpenAI-compatible endpoint for the optional ask tool and the summary in diagnose.KAIRON_LLM_MODELModel name sent to KAIRON_LLM_URL.KAIRON_LLM_API_KEY密钥API key for KAIRON_LLM_URL.KAIRON_MCP_TENANTScope the claim tools, diagnose and ask to this tenant.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/zyvorai/kairon-mcp:v0.10.2stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Kairon

VM 不会伪装成 Pod。
由 Kubernetes 调度、直接运行在 KVM 上的真实虚拟机。 每台 VM 不需要单独的 virt-launcher Pod,热路径中没有 libvirt,也不需要一大堆 Operator。Machine 表示期望状态,kairon-controller 负责调度,kairon-node 则通过 FluxVM 使用 QEMU、Cloud Hypervisor、Firecracker 或 FluxVM 自有的 Hypervisor 运行它。
每台 VM 零 Pod · 四种 Hypervisor,一个 CRD · 每台 VM 的边缘节点都运行 eBPF · 不会悄然发生脑裂 · 内置 AI Agent(MCP)
此仪表板演示使用本地示例数据栈录制(查看方法),并非生产集群。

最新动态
实验性运维: Kairon Rehearsal 在隔离的 CSI 副本上测试升级。高级运维新增健康检查门控的配置变更计划、应用恢复验证、基于流量/RTT 的放置建议,以及带修复验证的事件复现。包含可运行的场景和故障路径测试。VM/CSI 和主机隔离的硬件资格验证仍在等待中。
自 v0.6.0 以来的新增内容(最新标签:v0.10.2;截至事件包的各行内容均为 v0.10.0 新增):
| Agent 会话(实验性) | AgentSession 是 FluxVM Agent 会话:一个沙箱 VM,包含 git 工作区、编译后的出口/文件系统/进程策略、预算、检查点、实时分叉和事件日志,并像 Machine 一样按计划调度和计量配额。命令可以等待管理员批准;支持分块上传、交互式 shell、访客永远看不到的凭据授权,以及 Mac 访客的屏幕。提供 kaironctl session、session_* MCP 工具、两种 SDK 和一个仪表板页面。Mac 节点需运行 FluxVM 0.4.8 及以上版本。指南 → |
| 从 virtctl 迁移 | kaironctl 涵盖 virtctl 的各类命令:控制台和 VNC(含截图)、重启/软重启、导出和内存转储、访客信息、SSH 密钥和密码、expose、freeze、guestfs、cdrom、create clone、objectgraph、--dry-run -o yaml、wait。CLI → |
| 自检:一切正常吗? | kaironctl selftest(或仪表板的自检页面)会启动一个精简的 CirrOS VM,验证电源、网络、热插拔、快照恢复等功能,并实时显示彩色日志和 PASS/FAIL/SKIP 表格。deploy-remote.sh --self-test 会在部署后立即运行自检。指南 → |
| 无需本地构建即可部署 | deploy-remote.sh --remote-build 会复制一个精简的源代码 tarball 并在主机上编译,因此笔记本无需安装 Go、Node,也无需构建缓存。最快路径 → |
| 默认启用 HTTPS | 仪表板和 VNC 控制台中继开箱即用地提供 TLS(自动生成证书或使用自备证书);明文 HTTP 需要明确选择退出。仪表板指南 → |
| Mac Fabric(实验性) | 将多台 Mac 组成一个资源池:每台都会公布其芯片、macOS、Rosetta、嵌套虚拟化和 Thunderbolt Bridge 信息;spec.apple 可将 vz Machines 放置在相应 Mac 上,MacNetwork 则通过 Thunderbolt 为不同 Mac 上的 Machines 提供一个专用网络。目前可对模拟的 Mac 进行测试。指南 → |
| 跨集群灾难恢复(实验性) | MachineProtectionPlan 将一组 Machines 复制到 S3,并在第二个集群上保留其规格和恢复点,同时设定 RPO 和 RTO 目标。kaironctl dr failover 会按依赖顺序在该集群启动这些 Machines;使用 --planned 可确保不丢失数据。kaironctl dr test 会在生产环境运行期间,将副本恢复到隔离网络中,也支持按计划运行。Machines 保留其 VirtualNetwork 地址,DNS 名称则通过 external-dns 跟随活动站点。指南 → |
| vGPU 配置和 GPU 健康状况(实验性) | spec.devices[].profile 可为 Machine 分配一部分 GPU(NVIDIA vGPU 或基于 MIG 的配置),而不是整个 GPU;调度器依据空闲实例数和 GPU 内存进行调度。GPU 会在 Machine 启动时创建、停止时归还;不健康的 GPU 会被跳过。指南 → |
| 加速器配置(实验性) | 集群范围的 MachineAcceleratorProfile 用于定义加速器形态(数量、供应商或 vGPU 配置、每个设备的内存、用于点对点通信的单一 PCIe 根节点、单一 NUMA 节点,以及位于 GPU 旁的 RDMA NIC);Machines 通过 spec.accelerators 请求使用该配置。配置的状态会显示每个节点还能容纳多少台 Machine。指南 → |
| 节点维护和 DRS(实验性) | kaironctl node maintenance enter NODE 会封锁节点,将其上的 Machines 迁移出去,并停止或休眠无处可迁的 Machines;退出维护模式后会恢复原状。DRS(`-drs-mode recommend |
| 每个磁盘的 I/O QoS | 可为 Machine 的根磁盘和数据磁盘设置 IOPS 和带宽限制(io.throttle),支持突发,由 QEMU 强制执行,并可在 Machine 运行时实时更改。指南 → |
| NVMe-oF 存储(实验性) | Kairon 的 CSI 驱动通过内核 NVMe target 配置 nvme-tcp 和 nvme-rdma 卷,并支持原生多路径;原始 Block 卷可直接启动 Machines,也可作为数据磁盘挂载并设置每盘 QEMU I/O 限制。指南 → |
| 休眠(实验性) | spec.powerState: Hibernated 会将 RAM 和设备状态保存到磁盘并释放节点;恢复后可在原节点或使用共享存储的兼容节点上继续同一次启动。指南 → |
| 虚拟网络(实验性) | VirtualNetwork:通过 Geneve overlay 和 eBPF 路由的隔离 IPv4 网络,并提供每个网络独立的网关、出口 SNAT 和浮动 IP。指南 → |
| 弹性内存(实验性) | 运行所需内存超过节点可用内存的 Machine:支持保证最低内存、virtio-balloon 回收循环,以及调度器会遵循的 KaironMemoryPressure 信号。指南 → |
| 拓扑感知放置(实验性) | NUMA、GPU、NIC 和 NVMe 本地性:调度器会同时选择节点、具体 CPU、NUMA 内存和 PCI 设备。指南 → |
| 事件诊断包(实验性) | kaironctl diagnose machine --deep:生成一个经过脱敏的 tar.gz,包含 Machine 的集群状态,以及从其所在节点收集的 QMP、cgroup、控制台、数据平面和 pcap 信息;还可选择启用访客内存转储。指南 → |
| 生命周期、诊断和命名空间(v0.9) | kaironctl doctor、connectivity test、logs、events、sysdump、config、history/rollback;kaironctl upgrade 会保留你之前的 Helm values。仪表板新增命名空间选择器、显示所有命名空间 Machines 的视图,以及批量启动/停止功能。发行说明 → |
v1 API 和新版仪表板 | kairon.zyvor.dev/v1 是存储版本(提供服务但已弃用的版本:v1beta1/v1alpha1)。仪表板经过重新设计,新增 Storage(Atlas)、Pools & claims、Images 和 Backups 页面;kairon-ui 现在监听 :18082。指南 → |
| 原生 macOS 节点 | kairon-node 将 Apple silicon Mac 注册为 Node,并通过 FluxVM 运行 backend: vz Machines。已在 M4 上验证;目前尚不支持多 Mac 集群。指南 → · Mac 集群 → |
| 开发者生态工具包 | Python 和 TypeScript SDK、按摘要固定的配方、一次性 VM GitHub Actions、Terraform 组合方案。工具包 → |
| 集群自动化(实验性) | 可选启用 Redfish 隔离、负载均衡、自动扩缩、备份和恢复计划、模板声明、使用量 CSV 及集群仪表板。指南 → |
| Kairon 与 KubeVirt 基准测试 | 同一节点、同一访客、一个脚本驱动两者;测试方法和原始 JSON 见 docs/benchmarks。 |
| 从 VMware 导入 | kaironctl import ova 会一次性流式传输 OVA,从 OVF 读取 vCPU、内存和固件信息,再由 FluxVM 转换并修复磁盘。指南 → |
| 热备资源池和声明 | MachinePool 会让已启动的 Machines 保持就绪;MachineClaim 可在一次 reconcile 周期内绑定其中一台,并支持每个声明单独设置出口允许列表。指南 → |
| VM 分叉 | kaironctl fork 和 MCP fork_machine 工具可通过 FluxVM 分叉正在运行的 Machine。指南 → |
| Agent 沙箱(实验性) | spec.lifecycle 可暂停闲置的 Machines,并在连接时唤醒;达到最长生命周期后会删除它们。两种 SDK 均支持暂停的热备资源池、每个声明的使用量,以及 Sandbox 类。指南 → |
| 备份 | MachineBackup 和 MachineBackupRestore 支持冻结访客文件系统;Atlas 卷支持 Atlas S3 备份作业。还提供带策略和 GFS 保留策略的增量 S3 备份(实验性)。指南 → |
| 在线磁盘和 NIC | 在运行中的 Machines 上热挂载 PVC 磁盘,并热添加或移除额外 NIC(kaironctl disk、kaironctl nic)。指南 → |
| 租户隔离 | kairon.zyvor.dev/tenant-fence 会将 spec.tenant 转换为命名空间内的东西向隔离,禁止访问其他租户的访客地址。指南 → |
| 通过 Halt 抢占 | 无法放置且已选择加入的高优先级 Machine 会停止一个已选择加入的低优先级 Machine;抢占者离开后,后者会恢复运行。指南 → |
| 热插拔配置在重启后保留 | 停止后再启动时,会按热插拔后的 CPU 和内存配置启动;hotplug-persist 会将其写回 spec。指南 → |
| Halted 恢复后保留热插拔配置 | 恢复 Halted Machine 时,会重新热插拔其 CPU 和内存,将其还原至停止前的大小。指南 → |
| 声明会继承模板 | createMachine 资源池声明会获取模板的资源、内核、cloud-init、NUMA、安全配置、访客 Agent、TTL 和转发规则;未继承的项目会列在 machineWarnings 中。指南 → |
| 每日快照计划 | MachineSnapshotSchedule 支持 dailyAt: "02:30"、稳定抖动和 maxAgeSeconds 保留策略。指南 → |
| CPU 绑定发现,已部署 | 使用 deploy-remote.sh --reserved-cpus=0-1 或 Helm node.cpuPinning 可让 kairon-node 获取 kubelet 的 CPU 状态,从而发现 pinnable-cpus。指南 → |
| Agent 操作审批 | 具有破坏性的 MCP 工具会等待一次性 kaironctl approve。指南 → |
| 陈旧节点驱离 | 选择启用后,标记为 evacuate=true 的 Machines 会从通过 kaironctl node fence 确认已失效的节点上隔离出去。指南 → |
| 镜像目录和 ISO 安装 | 集群范围的 MachineImage(磁盘或 ISO,通过摘要固定)、用于 SATA 的 spec.cdroms 安装介质、空白根磁盘,以及为空启动卷预置数据。不需要 CDI。指南 → |
| OCI containerDisk | spec.image.source.oci 会按摘要拉取磁盘镜像,并对每一层进行流式验证。指南 → |
为什么选择 Kairon
| 当出现这种情况时…… | Kairon 为你提供…… |
|---|---|
每台 VM 都要带上一个 virt-launcher pod、libvirt 和 QEMU 封装程序 | 每台 VM 除 VM 本身外不需要任何其他组件。 kairon-node 与 FluxVM 的 REST API 通信,再由它与 KVM 通信。 |
| 迁移在中途失败,却没人知道哪份副本才是真的 | NeedsRecovery。 遇到不明确的提交时会暂停并请求人工处理;绝不猜测,也绝不同时运行两个副本。 |
| CI 和 Agent 需要 microVM,数据库却需要完整 VM | 一个 Machine CRD,四种虚拟机监控程序:QEMU、Cloud Hypervisor、Firecracker、FluxVM。通过 spec.backend 为每台 Machine 选择后端。 |
| VM 网络意味着要用 Pod CNI 技巧、伪装和 Multus | 每个 VM tap 上都有 eBPF 边缘:防欺骗、DNS 和 TLS-SNI 策略、速率限制、流量、带归因的丢包和数据包捕获。 |
| 调试控制平面就得阅读 client-go 代码库 | 控制器和节点仅使用标准库(依赖策略)。小到一个下午就能读完。 |
| 你的 AI Agent 需要查看并管理你的集群 | kaironctl mcp serve:为 Hermes Agent 和任何 MCP 客户端提供 Machines、策略和实时网络数据;写入操作由 --allow-write 控制。此外也发布为 ghcr.io/zyvorai/kairon-mcp 镜像,并在 MCP Registry 中列为 io.github.zyvorai/kairon(v0.10.2)(从注册表安装)。 |

数据一览

| Kairon | KubeVirt v1.9.0 | ||
|---|---|---|---|
| 空闲控制平面内存 | 63 MiB | 905 MiB | 少 14 倍 |
| 1 台 VM 的 SSH 就绪时间 | 23.7 s | 67.6 s | 快 2.9 倍 |
| 5 台 VM 的 SSH 就绪时间,中位数 | 24.8 s | 184.7 s | 快 7.4 倍 |
| 每台 VM 的内存(5 台 VM) | 660 MiB | 661 MiB | 相同:使用相同的 QEMU 和客户机 |
使用相同的 k3s 节点、相同的 Ubuntu 24.04 镜像、相同的 1 vCPU / 512 MiB 客户机和 cloud-init 种子,由同一个脚本驱动两者;就绪的定义是客户机的 sshd 开始响应。无论采用哪种方式,VM 本身的成本都相同;你省下的是 KubeVirt 围绕 VM 添加的一切。测试方法、原始 JSON 和注意事项(包括 10 台 VM 的测试):docs/benchmarks。
Kairon 与 KubeVirt

移除每一层,就少一件需要打补丁的东西,少一份需要阅读的日志,也少一个可能在凌晨 2 点崩溃的进程。
| Kairon | KubeVirt | |
|---|---|---|
| VM 是什么 | 一个 Machine:拥有自己的 CRD 和生命周期 | 伪装成 Pod 的对象(virt-launcher) |
| 每台运行中的 VM 所需的 Pod | 0 | 每台各需 1 个 virt-launcher Pod |
| 空闲控制平面,5 台 VM 可供 SSH 连接(实测) | 63 MiB,25 s | 905 MiB,185 s |
| 通往 KVM 的路径 | kairon-node → FluxVM REST → KVM | virt-handler → virt-launcher → libvirt → QEMU |
| 虚拟机监控程序 | QEMU、Cloud Hypervisor、Firecracker、FluxVM | 通过 libvirt 使用 QEMU |
| MicroVM 和预热池 | Firecracker / FluxVM 沙箱、FluxVM 预热池(24 ms 声称值的实测) | 非目标用途 |
| 调度 | Kairon 根据实际可分配资源感知容量并进行放置 | Pod 调度器加上 virt 扩展 |
| 控制平面代码 | 仅使用 Go 标准库(控制器、节点) | 庞大的 client-go / controller-runtime 接口 |
| VM 网络 | eBPF VM 边缘层:反欺骗、DNS/SNI 策略、速率限制、流量、丢弃原因、pcap | Pod CNI、masquerade/bridge 绑定、Multus |
| 网络策略 | MachineNetworkPolicy + NetworkSecurityGroup,可选同步 Cilium | Pod NetworkPolicy |
| 实时迁移 | 通过 mTLS 节点间 prepare/commit/abort,并使用加密数据平面 | virt 技术栈内部的 libvirt 迁移 |
| 迁移提交状态不明确 | NeedsRecovery:不会静默产生脑裂 | 取决于技术栈的恢复方式 |
| 单台 VM 的数据包捕获 | kaironctl network capture demo --seconds 15 | 进入启动器 Pod 并自行准备工具 |
| AI Agent | 内置 MCP 服务(kaironctl mcp serve) | 未包含 |
| 浏览器控制台 | noVNC 中继,支持按 Machine 设置允许列表和 Kubernetes RBAC | virtctl vnc / 外部 UI |
| 事实来源 | 只有 Kubernetes API | Kubernetes 加上 virt 抽象 |
| 安装 | 一个来自 OCI 的 Helm 图表,或 kaironctl install | Operator 加 CR,镜像使用 CDI |
| 选择 KubeVirt 的情况 | 你现在就需要它多年积累的生态集成(OpenShift Virtualization、Harvester) |
之前的技术栈插图:docs/assets/kairon-vs-kubevirt.jpg。
你将获得什么
Machine,而非 Pod
Machine 和 MachineSet 支持实例类型、NUMA 和 CPU 绑定、Windows 来宾、PVC 和 CSI 启动、多卷 virtiofs、CPU/内存热插拔、暂停和停止、cloud-init 以及端口转发。期望状态保存在 Kubernetes 中;节点每隔几秒就会协调一次。已交付功能 →
kaironctl create demo --image /var/lib/fluxvm/images/ubuntu.qcow2 --cpu 2 --memory 2Gi --backend qemu
kaironctl get machines
拒绝猜测的迁移
冷迁移、节点疏散,以及通过相互 TLS 和加密数据平面进行的安全实时迁移。封锁节点后,控制器可以为你疏散该节点上的 Machine,并由 MachineDisruptionBudget 控制速率。提交状态不明确时,Machine 会进入 NeedsRecovery 并等待操作员处理,而不是冒险同时运行两个副本。迁移 → · NeedsRecovery 操作手册 →
每台 VM 上的 eBPF 边缘层
每个 VM tap 都使用 FluxVM 的 eBPF 数据平面:反欺骗、DNS 和 TLS-SNI 允许列表、速率限制,以及附带原因标记的丢弃(spoof_ip、dns_deny、sni_deny、rate_limit,等等)。使用 MachineNetworkPolicy / NetworkSecurityGroup 编写策略;在 CLI 和仪表板的 Network 面板中实时查看;只需一条命令即可捕获单台 VM 的数据包。VM 边缘层 → · 网络结构 →
kaironctl network flows demo --limit 20
kaironctl network drops demo
kaironctl network capture demo --seconds 15 --output demo.pcap
AI Agent,安全可控

kaironctl mcp serve 通过 stdio 使用 Model Context Protocol。Hermes Agent、Claude、Cursor 或任何 MCP 客户端都可以列出 Machine、读取策略并拉取流、丢弃和捕获数据。Power、snapshot、capture、sealed-claim 和 policy-apply 工具仅在使用 --allow-write 时才会显示,并且每次写入都会先记录到哈希链审计日志中。kaironctl agent ask 使用任意兼容 OpenAI 的模型,将自然语言请求转换为经过验证的提案;kaironctl agent diagnose 则会对 Machine 或迁移停滞的原因进行排序;二者都不会应用任何内容,也没有模型在协调循环中运行。通过官方 MCP SDK 在 CI 中进行端到端覆盖。AI Agent → · Agent 平面 →
快照与恢复
基于 CSI VolumeSnapshots 的 MachineSnapshot、MachineSnapshotRestore 和 MachineSnapshotSchedule,并使用来宾代理冻结文件系统,以创建应用一致性快照。通过 FluxVM 创建 VM 内存快照,并提供用于灾难恢复的 CRD 备份/恢复脚本。快照 →
集群防护与运维
MachineQuota、MachineDisruptionBudget、MigrationPolicy 和可选择启用的准入 Webhook。kairon-ui 仪表板支持 SSO、按操作员划分的账户以及浏览器内 VNC 控制台。Prometheus 指标和告警、控制器 HA 租约,以及可选择启用的 OpenTelemetry spans。可观测性 → · 安全 →
仪表板
![]() 概览:集群运行状况和节点使用情况 | ![]() 迁移页面,突出显示 NeedsRecovery | ![]() 所有命名空间,批量 Start/Stop |
更多页面:图库。截图和片段由 docs/ux 中的示例数据栈生成,因此展示的是实际仪表板构建,而不是实验室集群。
工作原理
v0.10.0 新增,动画演示:Agent 会话、空闲沙箱、跨集群灾难恢复、维护与 DRS、弹性内存、增量备份、Mac Fabric

| 组件 | 端口 | 作用 |
|---|---|---|
kairon-controller | :32301 health、:8443 webhook | 放置、迁移状态机、隔离、快照、配额和预算 |
kairon-node | :32302 health、:9443 mTLS peer、:8090 console | 每台主机的 Agent:FluxVM 生命周期、eBPF 策略、实时迁移对端、边缘 Warning 事件、机密计算功能标签 |
kairon-ui | :18082(HTTPS) | 可选控制面板:Machine、迁移、快照、存储(Atlas)、资源池和声明、镜像、备份、网络面板、VNC 控制台;参见控制面板指南 |
kaironctl | — | CLI 和 kubectl kairon 插件、内嵌 Helm 安装程序、MCP 服务 |
| FluxVM | 127.0.0.1:7788 | 每台主机上的 VMM 层:QEMU、Cloud Hypervisor、Firecracker、FluxVM |
flowchart TB
subgraph clients["Clients"]
cli["kaironctl / kubectl kairon"]
dash["Dashboard (HTTPS)"]
agent["AI agents via MCP"]
end
clients --> api["Kubernetes API<br/>Machine, MachineMigration, VirtualNetwork, ..."]
api <--> ctl["kairon-controller<br/>placement, migration state machine,<br/>quota, IPAM, backup policy"]
api <--> ui["kairon-ui"]
api <--> node["kairon-node<br/>one per VM host"]
node -->|"REST on 127.0.0.1"| flux["FluxVM<br/>QEMU, Cloud Hypervisor,<br/>Firecracker, FluxVM"]
flux --> kvm["KVM + eBPF edge"]
node <-->|"mTLS peer"| node2["kairon-node on another host"]
flux --> s3[("S3 backups")]
完整说明:ARCHITECTURE.md · docs/architecture.md · 架构示意图:docs/assets/readme-architecture.jpg
快速开始
在 VM 主机运行 FluxVM 的 Kubernetes 集群上:
kubectl label node worker-1 kairon.zyvor.dev/capable=true
helm upgrade --install kairon oci://ghcr.io/zyvorai/charts/kairon \
--version 0.10.2 -n kairon-system --create-namespace \
-f https://raw.githubusercontent.com/zyvorai/kairon/v0.10.2/charts/kairon/values-production.yaml
curl -fsSL -o kaironctl https://github.com/zyvorai/kairon/releases/download/v0.10.2/kaironctl-linux-amd64
chmod +x kaironctl && sudo mv kaironctl /usr/local/bin/ # or: kubectl krew install kairon
kaironctl create demo --image /var/lib/fluxvm/images/ubuntu.qcow2 --cpu 2 --memory 2Gi
生产配置会将镜像标签固定为 Chart.AppVersion,并启用 webhook、命名空间隔离、网络默认拒绝和迁移数据平面 TLS。镜像:ghcr.io/zyvorai/kairon-{controller,node,ui},带有签名、校验和及 SBOM。
从笔记本电脑部署到裸机主机,由主机负责构建,因此笔记本电脑无需安装 Go 或 Node,最后还会运行冒烟测试:
./scripts/deploy-remote.sh user@host --remote-build --with-controller --with-ui --with-console --self-test=quick
不使用 --remote-build 时,二进制文件会在本地交叉编译,然后作为静态文件发送。无论采用哪种方式,仪表板和控制台中继均使用 HTTPS。所有标志和部署流程 →
之后,在任何安装环境中:kaironctl doctor 会检查控制平面,kaironctl selftest 会启动一台 CirrOS VM,以端到端验证整个流程。
从源代码、kind 或原始清单安装
git clone https://github.com/zyvorai/zyvor-kairon.git && cd zyvor-kairon
make docker-build
helm upgrade --install kairon ./charts/kairon -n kairon-system --create-namespace
# or: kaironctl install (embedded Helm SDK, no helm binary needed)
原始清单:kubectl apply -f deploy/crd.yaml -f deploy/rbac.yaml -f deploy/controller.yaml -f deploy/node.yaml,仪表板还需应用 deploy/ui.yaml;仅当启用增量 S3 备份时,才应用 deploy/rbac-cbt-backup.yaml。
要求
- Kubernetes 集群中的 VM 主机必须运行 Linux,并提供
/dev/kvm。 - 每台 VM 主机上都要运行 FluxVM(默认地址为
127.0.0.1:7788)。 - 使用 eBPF 边缘功能时:内核必须支持 BTF 和 cgroup v2,并且
dataplaneMode: ebpf。
| 后续步骤 | 位置 |
|---|---|
| 从头到尾创建第一台 Machine | 入门指南 |
| 所有随附内容 | 随附内容 |
| 所有命令 | CLI 参考 |
| 硬件验证信息 | 兼容性矩阵 |
运维
# Relocate
kaironctl migrate demo --strategy cold --target-node worker-2
kaironctl migrate demo --strategy live --target-node worker-2 --mode pre-copy
kaironctl evacuate worker-1 --wait
# See the network from the VM's point of view
kaironctl network status demo
kaironctl network drop-reasons demo
kaironctl network identity demo
# Hand the fleet to an AI agent
kaironctl mcp serve # add --allow-write for power, snapshot, capture and claims (audited)
kaironctl agent diagnose machine/demo # ranked causes; adds a model summary when KAIRON_LLM_URL is set
# Dashboard (HTTPS; self-signed unless ui.tls.secretName is set)
kubectl -n kairon-system port-forward svc/kairon-ui 18082:18082 # then https://localhost:18082
kaironctl ui # or through the API server, no port-forward
成熟度
| 领域 | 状态 |
|---|---|
Machine 生命周期、MachineSet、实例类型、配额、预算 | 稳定 |
| 容量感知调度、节点范围的 watch、控制器高可用 | 稳定 |
| 冷迁移和疏散 | 稳定 |
安全实时迁移和 NeedsRecovery | 预览版;2026-10-14 在双主机实验环境中运行,两端均在匹配的 QEMU 上通过;NeedsRecovery 演练 6 次中通过 5 次,另有 1 次原因不明的失败;尚未纳入 nightly CI(COMPATIBILITY) |
| 自适应实时迁移(自动收敛、切换到 post-copy、zstd) | 实验性;2026-10-14 在双主机实验环境中通过自适应测试用例,尚未纳入 nightly 工作流(COMPATIBILITY) |
| eBPF VM 边缘、流量、丢弃、捕获 | 预览版;单主机实验环境测试通过 |
| 来宾静默的 CSI 快照 | 稳定 |
带 SSO 和 VNC 控制台的 kairon-ui | 稳定 |
| 面向 AI Agent 的 MCP 服务 | 预览版;使用官方 SDK 通过 CI 端到端测试 |
| CPU/内存热插拔 | 仅支持扩容(QEMU) |
v0.10.2 是最新版本(基于 v0.10.1 的补丁版本,修复了发布流水线;v0.10.1 添加了 MCP 服务镜像和 MCP Registry 列表)。2026-10-14 在真实实验环境中进行了双主机实时迁移(冷迁移、源端故障、控制器故障切换、所有 3 种自适应用例以及 post-copy 源端故障,均在匹配的 QEMU 10.2.1 上双向通过;高写入负载下的普通 pre-copy 未能收敛;NeedsRecovery 演练 6 次中通过 5 次,另有 1 次原因不明的失败,导致迁移停留在 Adopting)。目前尚未进行实时迁移与 eBPF 组合测试,也尚无 nightly CI,因此仍处于预览阶段。自适应实时迁移在其矩阵用例通过 nightly 实验室工作流之前,仍处于实验阶段。尚未解决的问题详见 docs/STATUS.md;后续计划见 ROADMAP.md。
文档
| 目标 | 文档 |
|---|---|
| 入门 | docs/getting-started.md |
| 发布内容 | docs/WHAT_SHIPS.md |
| 架构 | ARCHITECTURE.md · docs/architecture.md |
| 开发者生态 | SDK、模板、CI 和集成 |
| AI Agent 和 MCP | docs/ai-agents.md |
| 状态与不足 | docs/STATUS.md |
| 硬件兼容矩阵 | docs/COMPATIBILITY.md |
| 路线图 | ROADMAP.md |
| 安全 | SECURITY.md · OpenSSF |
| 参与贡献 | CONTRIBUTING.md |
开发
make test-race && make cover-check # Go tests with the race detector, coverage gate
make build smoke # binaries and smoke test
cd web && npm install && npm run dev # dashboard UI
请从 CONTRIBUTING.md 开始;依赖规则见 docs/DEPENDENCIES.md。
Zyvor 技术栈的一部分
| 产品 | 与 Kairon 的配合角色 |
|---|---|
| Kairon | 在 Kubernetes 上运行 VM,无需 KubeVirt |
| FluxVM | Kairon 所运行的 VMM 层:QEMU、Cloud Hypervisor、Firecracker 及其自有管理程序、eBPF VM 边缘、沙箱、分叉 |
| Atlas | 存储:kairon-controller 通过 Atlas 配置 Machine 卷、快照和 S3 备份 |
| Machina | 在纯 Linux + KVM 上构建私有云:集群、HA/DRS、Fleet Cloud、原生 eBPF、Zyra AI |
| GuestKit | 与 Kairon 配套:来宾系统内 Agent、离线检查与修复、按容器配置 eBPF 策略 |
支持
在 Apache-2.0 许可下免费提供。如果它对你有帮助,你可以捐赠任意金额:https://rzp.io/rzp/utwdYh3。捐赠完全自愿,用于支持开发和维护。捐赠不是购买:不会因此获得支持、SLA、功能、优先权或许可证,也不能抵税(Zyvor AI Labs Private Limited 是一家公司,不是慈善机构)。Zyvor Enterprise(受支持的版本、SLA、指定联系人和企业功能)为独立服务:[email protected]。
许可证
Kairon 基于 Apache License 2.0 免费开源(见 NOTICE),可免费使用、修改并用于生产环境。这一点不会改变。
Zyvor Enterprise 提供生产团队所需的服务:受支持的版本、部署和升级指导、优先事件分诊、指定技术联系人以及全天候关键问题受理。方案和条款:docs/SUBSCRIPTION-MODEL.md · 定价 · [email protected]。
Bug 和功能请求 → GitHub Issues。请通过 [email protected] 或 GitHub 私密漏洞报告 私下报告漏洞;详见 SECURITY.md。参与贡献:CONTRIBUTING.md。
原生 macOS
Kairon 可在 Apple silicon 上原生构建和运行,并可通过 FluxVM 的 vz 后端将 Machines 调度到 Mac 上。有关已验证的内容和限制,请参阅 docs/macos.md。

每台 Mac 都会成为 Kubernetes Node:可以是家中的 Mac mini、供团队使用的 Mac Studio,也可以是来去不定的 MacBook Pro。Kairon 根据可分配的统一内存放置 Machines,FluxVM 负责运行它们,而 Velora 则在同一硬件上提供私有的 OpenAI 兼容 LLM 端点。几台 Mac Studio 就能组成安静、低功耗的本地推理集群。

已验证:在 Apple M4、macOS 27.2 上,Mac 注册为 Ready Node,vz Machine 已完成调度、启动、SSH 和删除。**尚未验证:**多 Mac 集群、Thunderbolt RDMA。集群指南包含多 Mac 示例(examples/macos-fleet.yaml)、容量规划和路线图,案例参考 GK Servis 的 Mac Studio 案例研究:docs/macos-cluster.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。


