GKE 上的 Agent Sandbox 简介

Google Kubernetes Engine (GKE) 上的 Agent Sandbox 可帮助您管理隔离的、有状态的单副本工作负载。它针对 AI 智能体运行时等使用场景进行了优化,在这些场景中,不受信任的 LLM 生成的代码必须在安全且高性能的环境中执行。

GKE 上的 Agent Sandbox 插件基于 开源 Agent Sandbox 控制器项目 ,并遵循其发布周期。作为托管式 GKE 插件,Google 会管理控制器的完整生命周期,包括自动升级和安全补丁。

本文档从概念上简要介绍了 GKE 上的 Agent Sandbox。

为何使用 GKE 上的 Agent Sandbox

GKE 上的 Agent Sandbox 专为需要高级别扩缩、可扩展性和安全性的智能体工作负载而构建。主要优势包括以下各项:

  • 内核级隔离:为 不受信任的 LLM 生成的代码提供强大的内核级隔离。GKE 上的 Agent Sandbox 也适用于开源 Kata Containers。 如需查看有关将开源 Kata Containers 与 GKE 上的 Agent Sandbox 搭配使用的教程,请参阅 在 GKE 上启用 Kata Containers。

  • 亚秒级预配:提供开箱即用的机制,可比标准 Kubernetes Pod 调度 (通常 <1 秒)更快地提供 沙盒。

  • 云原生可扩展性:充分利用 Kubernetes 范例的强大功能和 GKE 的托管式基础架构。

通过提供声明式标准化 API,GKE 上的 Agent Sandbox 提供单容器体验,该体验提供与虚拟机 (VM) 类似的隔离和持久性特征,完全基于 Kubernetes 原语构建。

GKE 上的 Agent Sandbox 的常见使用场景

将 GKE 上的 Agent Sandbox 用于需要隔离、持久性和稳定身份的工作负载。示例使用场景包括:

  • AI 智能体运行时:在由注重安全性的运行时(如 gVisor)隔离的环境 中安全地执行不受信任的代码。
  • 开发环境:为开发者提供持久的、隔离的 基于云的编码环境。
  • 笔记本和研究工具:为 Jupyter 笔记本等互动式工具托管单容器会话。
  • 有状态的单 Pod 服务:运行需要稳定 身份和存储空间的应用,而无需 StatefulSet 的复杂性。
  • 以编程方式管理环境:使用提供的客户端库 SDK(例如 Agent Sandbox Python SDK)直接从应用逻辑请求和管理沙盒,而无需管理 Kubernetes YAML。

GKE 上的 Agent Sandbox 的工作原理

GKE 上的 Agent Sandbox 使用自定义控制器和多个 Kubernetes 自定义资源定义 (CRD) 来管理沙盒环境的生命周期。

核心架构

  • Sandbox CRD:表示单个有状态 Pod 的主要资源。它管理稳定的主机名、网络身份和永久性存储空间。
  • Sandbox 路由器:一种组件,可提供稳定的端点并将流量隧道传输到相应的 Sandbox Pod,从而抽象出底层网络复杂性。
  • 与 Pod 快照集成:GKE 上的 Agent Sandbox 与 GKE Pod 快照功能集成,可通过保存和恢复容器的完整状态来暂停和恢复工作负载。

声明模型

声明模型 是一项关键功能,可将用户对环境的请求与具体实现细节(例如工作负载的预配位置和方式)分开。与标准 Kubernetes StatefulSet 不同,借助声明模型,您可以请求沙盒,而无需直接管理底层 Pod 或存储配置。

声明模型使用 SandboxClaim 和 SandboxTemplate CRD 进行管理,其工作方式如下:

  1. 用户或应用通过创建引用 SandboxTemplate 的 SandboxClaim 来请求沙盒。
  2. 控制器负责将声明映射到实际的 Sandbox 实例,从而提供灵活的后端管理。这样,系统便可以重复使用现有沙盒或从池中分配沙盒。

预热池

预热池 功能旨在最大限度地缩短启动延迟时间,这对于互动式 AI 智能体场景至关重要。借助此功能,GKE 上的 Agent Sandbox 可以在不到一秒的时间内提供执行环境,这比典型的 Pod 调度快得多。此功能使用 SandboxWarmPool CRD 进行管理,其工作方式如下:

  1. SandboxWarmPool 会维护一组处于就绪状态的预热 Pod 实例。
  2. 发出 SandboxClaim 时,控制器会立即从池中分配一个 Pod,而不是等待新 Pod 拉取映像并从头开始。
  3. 与 Pod 快照结合使用时,预热池可通过从预配置状态恢复 Pod 来提供快速的“即时启动”功能。

网络隔离

GKE 上的 Agent Sandbox 为所有沙盒环境实现了默认拒绝 网络安全态势。这可确保沙盒内执行的不受信任的代码默认无法访问未经授权的内部网络或 GKE 控制平面。您可以在 SandboxTemplate 中定义特定的网络限制和允许的出站流量或入站流量规则,以便为智能体工作负载提供精细的安全性。

使用 SDK 以编程方式访问

AI 工程师可以使用提供的客户端库以编程方式使用 GKE 上的 Agent Sandbox 资源。例如,Python SDK 提供了一个高级接口,用于抽象出 底层 SandboxClaim 和 SandboxTemplate 配置。这样,您就可以直接从基于 Python 的智能体框架(例如 LangChain 或 Vertex AI Agentic SDK)创建隔离的环境并与之互动。

限制和要求

GKE 上的 Agent Sandbox 具有以下限制和要求:

  • 集群版本:需要 GKE 1.35.2-gke.1269000 或更高版本才能获得完整的功能支持(包括快照)。
  • 基础架构要求:针对特定节点配置(例如 N2 机器类型)进行了优化,并且需要在集群上安装和配置 Agent Sandbox 控制器。
  • 隔离运行时:虽然它支持多种运行时,但主要用于注重安全性的运行时(如 gVisor)。
  • 底层功能可用性:某些底层功能(例如 GKE Pod 快照)可能处于预览版阶段或具有特定的区域可用性。

后续步骤