GKE 代理沙盒简介

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

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

本文档从概念上简要介绍了 GKE Agent 沙盒。

为何使用 GKE Agent Sandbox

GKE Agent Sandbox 专为需要高水平的扩缩性、可扩展性和安全性的代理工作负载而构建。主要优势包括以下各项:

  • 内核级隔离:使用 gVisor 等技术为不受信任的 LLM 生成的代码提供强大的内核级隔离。
  • 亚秒级配置:提供了一种开箱即用的机制,可显著加快沙盒的配置速度,比标准 Kubernetes Pod 调度允许的速度快得多(通常 <1 秒)。
  • 云原生可扩展性:充分利用 Kubernetes 范式和 GKE 的托管式基础架构。

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

代理沙盒的常见使用场景

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

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

GKE Agent Sandbox 的运作方式

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

核心架构

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

版权主张模型

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

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

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

温水泳池

暖池功能旨在最大限度地缩短启动延迟时间,这对于交互式 AI 智能体场景至关重要。此功能可让 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 提供了一个高级接口,用于抽象化底层 SandboxClaimSandboxTemplate 配置。这样一来,您就可以直接从基于 Python 的代理框架(例如 LangChain 或 Vertex AI Agentic SDK)创建隔离环境并与之互动。

限制和要求

GKE 代理沙盒具有以下限制和要求:

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

后续步骤