K3s 运行时模块文档
本文档面向需要了解 K3s 运行时模块工作原理的所有人,包括产品经理、运维人员和对技术细节感兴趣的非开发人员。文档会在每个技术术语第一次出现时用“术语(中文解释)“的格式进行说明。
提示:文档中的流程图使用 Mermaid 语法。在 GitHub 上可直接渲染;本地使用 mdBook 阅读时,可安装
mdbook-mermaid插件。
这个模块是什么
K3s 运行时模块是整个智能体商店(Agent Store)的执行引擎层。它负责:
- 把用户的一次“运行请求“变成一个真实运行在本地机器上的容器(Container,一种轻量级隔离运行环境)
- 管理容器的创建、监控和清理
- 确保每次运行之间互不干扰
- 保证同一个会话的多轮对话能够保持上下文连续
简单来说:后端控制面负责“决定做什么“,K3s 运行时模块负责“真正去做“。
统一术语表
下面这些术语会在后续文档中反复出现。建议先浏览一遍,后续遇到时可随时回来查阅。
| 术语 | 中文解释 | 简要说明 |
|---|---|---|
| K3s | 轻量级 Kubernetes 发行版 | 一种管理容器的编排系统,可以在单台机器上运行,也可以扩展到多台机器 |
| Pod | 容器组 | Kubernetes 中最小的调度单位,包含一个或多个容器 |
| Deployment | 部署 | Kubernetes 中用于管理长驻 Pod 的资源类型,支持滚动更新和自动恢复 |
| Service | 服务 | Kubernetes 中为 Pod 提供稳定网络访问入口的资源类型 |
| ConfigMap | 配置映射 | Kubernetes 中用于存储非敏感配置数据的资源,可以被容器读取 |
| Secret | 密钥资源 | Kubernetes 中用于存储敏感信息(如 API 密钥)的资源 |
| Namespace | 命名空间 | Kubernetes 中用于隔离和组织资源的逻辑分区 |
| Service Account | 服务账号 | 容器在集群中运行时使用的身份标识 |
| hostPath | 宿主机目录挂载 | 把运行容器的物理机器上的某个目录映射到容器内部 |
| PVC | 持久卷声明 | 向 Kubernetes 申请持久化存储空间的标准方式 |
| Node | 节点 | Kubernetes 集群中的一台工作机器 |
| agentcore | 智能体核心运行时 | 容器内真正执行推理、调用工具、读写文件的可执行程序 |
| agent package | 智能体包 | 开发者提供的提示词、工具声明、配置和附带资源的集合 |
| Session(会话) | 逻辑会话 | 代表用户的一段连续对话,可以包含多轮运行 |
| Run(运行) | 单次运行 | 一次具体的执行过程,由 SessionWorker 处理 |
| RuntimeProfile | 运行时配置模板 | 描述容器镜像、资源限制、执行模式等的模板 |
| LaunchPlan | 启动计划 | 一次运行的完整不可变描述,包含所有启动参数 |
| checkpoint | 检查点 | agentcore 保存的运行中间状态,用于后续恢复 |
| workspace | 工作区 | 每次运行独有的文件目录,存放输入和输出 |
| backend | 后端控制面 | 负责 API 接收、状态管理、会话持久化的服务进程 |
| Helper | 本地桥接服务 | 运行在用户 macOS 上的客户端,负责文件同步和本地 UI |
| TTL | 存活时间 | Time To Live 的缩写,指资源的自动过期时间 |
核心设计理念
在阅读后续文档前,请先记住以下三个关键设计原则:
- 逻辑连续按会话,物理隔离按运行:同一个 Session(会话)可以包含多次 Run(运行),每次运行都是一个全新的容器,但它们共享同一个会话状态目录。
- 镜像层负责“能跑“,状态层负责“能续“:容器镜像只包含运行时环境和工具;用户数据、对话历史、检查点文件等状态信息存储在外部挂载的目录中。
- 声明式编排,分层职责:后端只负责“声明需要什么资源“,真正创建和管理容器的是 K3s 系统本身。
文档阅读指南
本系列文档按照从整体到细节的顺序组织,建议按以下顺序阅读:
| 章节 | 内容 | 适合谁看 |
|---|---|---|
| 系统架构总览 | 各组件关系与整体数据流向 | 所有人 |
| 同步与异步语义 | 每类操作到底是同步、异步还是混合 | 产品、架构、开发 |
| 运行生命周期 | 从用户发消息到获得结果的完整流程 | 所有人 |
| 输入输出流程 | 数据如何进入容器、结果如何产出 | 产品经理、运维 |
| 文件挂载与访问 | 容器如何访问工作区、会话状态和开发者包 | 运维、开发者 |
| 外部文件访问 | 用户文件如何从本地进入运行流程 | 产品经理、运维 |
| 外部数据库访问 | Backend 如何统一访问数据库并通过协议提供给容器 | 运维、架构师 |
| 镜像固化 | 如何加速启动、哪些状态可以固化到镜像 | 架构师、运维 |
| AgentCore 与前端交互通信 | 用户消息如何到达运行中的智能体 | 所有人 |
| 技术可行性分析 | 各项关键技术的可行性评估与建议 | 架构师、决策者 |
如需深入了解代码层面的模块拆分,还可以参考以下技术附录: