祝你早安🌄,午安🌞,晚安🌇
envd 深度阅读 · 第 1 讲:心智模型与启动编排
envd 深度阅读 · 第 1 讲:心智模型与启动编排 代码仓库:e2b-dev/infra 本文基于:commit b8ca332f4 · envd v0.5.13 阅读时间:25–30 分钟(跟着源码走) TL;DR envd 是跑在每个 Firecracker microVM 内部的守护进程,监听 49983 端口,对外提供 Process/Filesystem 两套 Connect RPC + 一组 REST API(/init、/files、/health)。 main.go 不到 250 行就把整个启动链串了起来,它的顺序不是随便写的 —— MMDS 轮询先起、logger 等 MMDS、cgroup 在 HTTP 服务前建好,都是为了避免后续路径拿不到依赖。 /init 是 envd 的灵魂。它一口气完成"鉴权 + 对时 + 装环境变量 + 注入 access token + 改 /etc/hosts + 装 CA 证书 + 挂 NFS",并且用 memguard + SecureToken 抽象把敏感数据锁在加密内存里。 鉴权是双通道:X-Access-Token 走常量时间比较(热路径),/init 额外用 MMDS 里的 token hash 做旁路授权 —— 这让 orchestrator 在 Resume 时可以远程轮换 token,又不泄漏 token 明文给任何参与者。 一、背景:envd 在 E2B 里的位置 E2B 给 LLM agent 提供"一个可以安全跑代码的云沙箱"。架构大致是三层: ...
DeepSeek Elastic Compute (DSec) 深度解析
来源:DeepSeek V4 Technical Report,Section 5.2.5 “Sandbox Infrastructure for Agentic AI” 一、系统概览 DSec 是 DeepSeek 自研的生产级沙箱平台,专为 Agentic AI 后训练与评估(post-training & evaluation)设计。其沙箱生命周期须与 GPU 训练调度协调,包括抢占和基于 checkpoint 的恢复。 ...
E2B Placement Best of K 优化
E2B 的 placement 策略在高并发场景下存在"状态滞后"导致的负载不均问题:调度器倾向于反复选中初始空闲的几个节点,但不会随着请求涌入及时调整,被选中的节点会承担远超平均的负载。 ...
E2B NBD 管理与 Firecracker RootFS 接入
1. 什么是 NBD (Network Block Device)? NBD (Network Block Device) 是一种 Linux 协议,允许通过网络访问块设备。在 E2B 的架构中,NBD 主要用于在宿主机上将构建好的 RootFS(通常是只读基础镜像 + 可写层的 Overlay)映射为一个块设备(例如 /dev/nbd0)。Firecracker MicroVM 需要一个块设备来作为其根文件系统启动,NBD 充当了文件系统(OverlayFS)与 Firecracker 块设备驱动之间的桥梁。 ...
E2B Placement & NodeManager 设计解析
E2B 的核心调度逻辑主要集中在 packages/api/internal/orchestrator/placement (放置策略) 和 packages/api/internal/orchestrator/nodemanager (节点管理) 这两个包中。 它们共同协作,负责在高并发环境下,将用户的 Sandbox(沙箱)请求高效、均衡地分配到合适的物理/虚拟节点上。 ...
基于 E2B、Consul、Nomad 与 Firecracker 的架构解构
1. 执行摘要与架构愿景 随着大语言模型(LLM)与自主智能体(AI Agents)技术的爆发式增长,云计算基础设施面临着前所未有的挑战。传统的容器编排系统,以 Kubernetes 为代表,主要针对微服务架构设计,优化目标在于长运行、无状态服务的稳定性与伸缩性。然而,AI Agent 的工作负载特征截然不同:它们通常需要执行不可信的生成代码、进行高强度的短期数据分析、并且要求毫秒级的环境启动速度。E2B(Execute to Build)作为一种专为 AI Agent 设计的云基础设施,填补了这一空白。它通过构建在 HashiCorp 生态系统(Nomad 和 Consul)之上的定制化控制面,利用 Firecracker microVM 提供兼具容器级启动速度与虚拟机级安全隔离的沙箱环境 。 ...
「Script」Github commit记录at作者
最近在发布 kuasar-io/kuasar v1.0.1 补丁版本。在 main 分支同步 release/1.0 时,commit没有按照原有 PR 提交新 PR 进行同步,而是使用了手动 Cherry-pick 的方式同步了commit。导致发布 Release 时,Generate release notes 自动生成的PR记录无法at原作者。 ...
Containerd2.0 升级分析
本文用于分析 containerd 如何升级到 2.0 版本。 containerd v2.0 在 2024.11.6 出了正式版本,也表明了该版本的主要目的。 containerd 2.x 的首个重要版本重点关注 containerd 核心功能集的持续稳定性,以及从 containerd 1.x 的轻松升级。该版本包括稳定上一个 1.x 版本中添加的新功能,以及删除 1.x 版本中废弃的功能。 ...
Containerd 内容流
本文使用 GPT-4o mini 机翻 containerd 文档,再进行精校,便于浏览。 原文地址:containerd/docs/content-flow.md at main · containerd/containerd · GitHub containerd 的主要目标是创建一个系统,使内容可以用于执行容器。为了实现这一流程,containerd 需要管理内容。 ...
OCI 镜像文件解析
预备动作 ctr 下载镜像,导出为压缩包。并解压到文件夹。 镜像文件层级 image-spec/image-layout.md at main · opencontainers/image-spec · GitHub 镜像布局的结构如下: $ tar xvf wg.tar -C wg-image blobs/sha256/0303a59d29548085675c8dc77b594cfdaed591c2d3dc2eedb7f86423d68d4217 blobs/sha256/0350af939280a3c1cd93680faa5890636e2b2e1853c59bfa543fbf1dd3022123 blobs/sha256/0c885228653809eeb06ad27eca297d2dcc22e7e46056f420a83ead31d674eff7 blobs/sha256/0ff5eb3a6b4475e3dbd12f3e2683ea873ed76e3ad34a7b81a31ea77d98034d4b blobs/sha256/2d2e0fc760791a12a90fa8101ab88f8e8dfc178539d0b3ead91f0394b124da81 blobs/sha256/38ae9c4bfd7c2b34961b19ff96a4e8930eb545b81a08a42e680beca6327eea43 blobs/sha256/5b7522ab11647cb4fc176d2817b3425b6a03bec4cced283746f0bf9b1767d1d0 blobs/sha256/96d9ee2f8e97cc43d61fe2c01555543a411ee2662f4ffb514b9580200c2692d2 blobs/sha256/9a36f2af670028da7e5201a9ad40616f66a2e07af074439103f3b0ead5d61a26 blobs/sha256/bed0e8f20ee92bd6b5867a0f0bd8f6cb3490b103539b1607f1621e3493ccd19f blobs/sha256/e0fb2429c802bef7d81813dfd5a6a4e3f9b06b86b103a87c02cfbecc5cc9150e blobs/sha256/fc515c5e05210d9f5f813831bc05ec38810e226c4715582e8d36ee42ceccec1c index.json manifest.json oci-layout blobs 目录 blobs 子目录中的对象名称由每种哈希算法的目录组成,其子目录将包含实际内容。 blobs/<alg>/<encoded> 中的内容必须与摘要 <alg>:<encoded> 匹配。 目录可能包含未被任何引用所引用的 Blob。 如果缺少引用的 Blob,则应通过外部 Blob 存储来补充。 oci-layout 文件 该 JSON 对象作为开放容器镜像布局的标记,并提供正在使用的镜像布局版本。imageLayoutVersion 值将与 OCI 镜像规范版本对齐,并在需要更改镜像布局时进行固定。 index.json 文件 这是一个必需的文件,作为镜像布局的引用和描述符的入口点。该索引提供了一个已建立的路径(/index.json),以便在镜像布局中发现辅助描述符(auxiliary descriptors)。 每个描述符对象的 mediaType 字段将是 index 或 manifest manifest.json 文件 Docker 格式镜像使用的 manifest.json,ctr image export 时会默认生成,可以增加 --skip-manifest-json 参数不生成此文件。 在containerd InportIndex函数导入index时,若存在 oci-layout 则不会读取本文件。否则认为是 Docker v1.1 或 v1.2 的镜像格式,会读取本文件,并转换为OCI格式处理。 OCI镜像各个类型的组织形式: ...