關於 GKE 的 Agent Sandbox

Google Kubernetes Engine (GKE) 的 Agent Sandbox 可協助您管理獨立、有狀態且單一副本的工作負載。這項服務經過最佳化,適用於 AI 代理執行階段等用途,可在安全且高效能的環境中,執行不受信任的大型語言模型生成程式碼。

GKE 的 Agent Sandbox 外掛程式是以開放原始碼 Agent Sandbox 控制器專案為基礎,並遵循其發布週期。做為代管 GKE 外掛程式,Google 會管理控制器的完整生命週期,包括自動升級和安全性修補程式。

本文件概略說明 GKE 上的 Agent Sandbox。

在 GKE 使用 Agent Sandbox 的優點

GKE 的 Agent Sandbox 專為需要高度擴充、擴充性和安全性的代理工作負載而設計。主要優點如下:

  • 核心層級隔離:針對 LLM 生成的不信任程式碼,提供強大的核心層級隔離機制。GKE 上的 Agent Sandbox 也適用於開放原始碼 Kata Containers。如要瞭解如何在 GKE 上搭配使用開放原始碼 Kata Containers 和 Agent Sandbox,請參閱「在 GKE 上啟用 Kata Containers」教學課程。

  • 不到一秒即可佈建:提供現成機制,佈建沙箱的速度明顯快於標準 Kubernetes Pod 排程 (通常 <1 秒)。

  • 雲端原生擴充性:運用 Kubernetes 範式的強大功能和 GKE 的代管基礎架構。

GKE 上的 Agent Sandbox 提供宣告式標準化 API,可提供單一容器體驗,並具備類似虛擬機器 (VM) 的隔離和持續性特性,完全以 Kubernetes 原語建構。

GKE Agent Sandbox 的常見用途

如果工作負載需要隔離、永久性和穩定身分,請在 GKE 上使用 Agent Sandbox。使用案例範例包括:

  • AI 代理執行階段:在 gVisor 等安全執行階段隔離的環境中,安全執行不受信任的程式碼。
  • 開發環境:為開發人員提供持續性、獨立的雲端程式碼編寫環境。
  • 筆記本和研究工具:為 Jupyter Notebook 等互動式工具代管單一容器工作階段。
  • 有狀態的單一 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 不同,您可以使用 ClaimModel 要求沙箱,不必直接管理基礎 Pod 或儲存空間設定。

要求模型是使用 SandboxClaim 和 SandboxTemplate CRD 管理,運作方式如下:

  1. 使用者或應用程式會建立參照 SandboxTemplate 的 SandboxClaim,藉此要求 Sandbox。
  2. 控制器會將宣告對應至實際的沙箱執行個體,提供彈性的後端管理。這樣一來,系統就能重複使用現有的沙箱,或從集區分配沙箱。

預建集區

暖集區功能旨在盡可能縮短啟動延遲時間,這對互動式 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 快照) 可能處於預先發布階段,或僅在特定區域推出。

後續步驟