Google Kubernetes Engine (GKE) 的 Agent Sandbox 可在專屬 Kubernetes Pod 中執行各個沙箱,協助您管理獨立、有狀態且單一副本的工作負載。這種以 Pod 為基礎的架構支援 AI 代理執行階段等用途,在這種情況下,不受信任、由 LLM 生成的程式碼必須在隔離環境中執行。
Agent Sandbox 是 Kubernetes SIG Apps 下的開放原始碼專案。如要在 GKE 使用 Agent Sandbox,請在叢集安裝 Agent Sandbox 控制器。您必須自行升級控制器。如需操作說明,請參閱「在 GKE 上安裝 Agent Sandbox」。
本文件概略說明 GKE 上的 Agent Sandbox。
選擇以 Pod 為基礎或以執行者為基礎的架構
GKE 提供兩種架構,可自動調度管理 AI 代理工作負載:
- GKE 上的 Agent Substrate (以 actor 為基礎):這項架構適用於大多數代理工作負載,尤其是經常暫停和恢復的有狀態代理。活躍的代理會共用一組暖 Pod,而非每個代理都有專屬 Pod,因此您可以在較少的節點上執行更多代理。GKE 上的 Agent Substrate 會自動暫停及恢復閒置的工作負載。系統會將每個閒置代理的記憶體和檔案儲存至儲存空間,並在不到一秒內還原代理。相較之下,GKE 上的 Agent Sandbox 需要手動建立 Pod 快照,而且您必須建構應用程式程式碼,偵測閒置狀態並儲存代理的進度。GKE 上的 Agent Substrate 需要 GKE Standard 叢集。詳情請參閱「關於 GKE 上的 Agent Substrate」。
- GKE 上的 Agent Sandbox (以 Pod 為基礎):如果每個代理都需要 GKE Autopilot 或 Standard 叢集上的專屬 Kubernetes Pod,請使用這個架構。如果代理程式或工作負載持續運作,且需要下列任一項目,請選擇這個選項:
- 宣告式 Kubernetes API,例如
Sandbox和SandboxClaim自訂資源 - 完整的 Kubernetes
PodSpec結構定義,包括自訂 sidecar 和 init 容器 - 直接存取硬體加速器,例如 GPU 或 TPU
- GKE Autopilot 叢集
- 宣告式 Kubernetes API,例如
在 GKE 使用 Agent Sandbox 的優點
GKE 的 Agent Sandbox 專為需要高度擴充、擴充性和安全性的代理工作負載而設計。主要優點如下:
核心層級隔離:針對 LLM 生成的不信任程式碼,提供強大的核心層級隔離機制。GKE 的 Agent Sandbox 也支援開放原始碼 Kata Containers。如要瞭解如何在 GKE 上搭配使用開放原始碼 Kata Containers 和 Agent Sandbox,請參閱「在 GKE 上啟用 Kata Containers」教學課程。
不到一秒即可佈建:從暖集區提供沙箱,通常不到一秒即可完成,不必等待標準 Kubernetes Pod 排程和啟動。
雲端原生擴充性:運用 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。
Agent Sandbox on GKE 的運作方式
GKE 的 Agent Sandbox 會使用自訂控制器和多個 Kubernetes 自訂資源定義 (CRD),管理沙箱環境的生命週期。
核心架構
Sandbox自訂資源:代表單一有狀態 Pod 的主要資源。這項資源會管理穩定的主機名稱、網路身分和永久儲存空間。- 沙箱路由器:這個元件提供穩定的端點,並將流量傳送至適當的沙箱 Pod,抽象化底層網路的複雜性。
- 與 Pod 快照整合:GKE 的 Agent Sandbox 與 GKE Pod 快照功能整合,可儲存及還原容器的完整狀態,暫停及恢復工作負載。
著作權聲明模型
宣告模型是一項重要功能,可將使用者對環境的要求與特定實作詳細資料區隔開來,例如工作負載的佈建位置和方式。與標準 Kubernetes StatefulSet 不同,要求模型可讓您要求沙箱,不必直接管理基礎 Pod 或儲存空間設定。
著作權聲明模型會使用 SandboxClaim、SandboxWarmPool 和 SandboxTemplate 自訂資源,運作方式如下:
- 使用者或應用程式建立參照
SandboxWarmPool資源的SandboxClaim資源,即可要求沙箱。暖集區會參照定義沙箱設定的SandboxTemplate資源。 - 控制器會從暖集區中指派一個就緒的沙箱給要求。如果集區中沒有可用的沙箱,控制器會根據範本為宣告建立新的沙箱。
預建集區
暖集區功能旨在盡可能縮短互動式 AI 代理情境的啟動延遲時間。透過暖集區,GKE 上的 Agent Sandbox 可以在一秒內提供執行環境。這項功能會使用 SandboxWarmPool 自訂資源,運作方式如下:
SandboxWarmPool資源會將一組預熱的 Pod 執行個體維持在就緒狀態。- 建立
SandboxClaim資源時,控制器會從集區指派準備就緒的 Pod,而不是等待新的 Pod 提取映像檔並從頭開始。 - 與 Pod 快照搭配使用時,暖集區可從預先設定的狀態還原 Pod,而非從頭啟動。
網路隔離
GKE 的 Agent Sandbox 會針對您從 SandboxTemplate 資源建立的沙箱,實施「預設拒絕」網路安全防護機制。針對每個 SandboxTemplate 資源,控制器會建立 NetworkPolicy 資源,確保在沙箱中執行的不受信任程式碼,預設無法存取未經授權的內部網路或 GKE 控制層。您可以在 SandboxTemplate 資源中定義特定網路限制,以及允許的輸出或輸入規則,為代理工作負載提供精細的安全防護。
控制器不會為您直接建立的 Sandbox 資源建立 NetworkPolicy 資源。如要限制這些沙箱的網路存取權,請自行建立 NetworkPolicy 資源。
使用 SDK 透過程式輔助方式存取
AI 工程師可以使用提供的用戶端程式庫,以程式輔助方式在 GKE 資源上使用 Agent Sandbox。例如,Python SDK 提供高階介面,可為您建立基礎 SandboxClaim 資源。該要求會參照您建立的 SandboxWarmPool 資源。您可以透過這個介面,直接從 LangChain 或 Vertex AI Agentic SDK 等 Python 代理框架,建立及與隔離環境互動。
限制與需求
GKE 的 Agent Sandbox 有下列限制和需求:
- 叢集版本:GKE 的 Agent Sandbox 可在任何支援的 GKE 版本上執行。如要使用 Pod 快照,叢集必須執行 GKE 1.35.3-gke.1234000 以上版本。
- 基礎架構需求:必須在叢集安裝並設定 Agent Sandbox 控制器。GKE 的 Agent Sandbox 不需要特定機型。舉例來說,安裝指南使用
e2-standard-2節點。不過,Pod 快照不支援 E2 機器類型,因此如果您打算使用 Pod 快照,請使用其他機器系列,例如 N2。 - 隔離執行階段:GKE 的 Agent Sandbox 支援 gVisor 和 microVMs 做為隔離執行階段。Pod 快照需要 gVisor,不適用於 microVM。如未指定沙箱執行階段,沙箱會在沒有核心隔離的情況下執行,因此不建議用於不受信任的程式碼。
- 基礎功能可用性:部分基礎功能 (例如 GKE Pod 快照) 可能處於預先發布階段,或僅在特定區域提供。
後續步驟
- 瞭解如何在 GKE 上安裝 Agent Sandbox。
- 進一步瞭解如何在 GKE 上使用 Agent Sandbox 隔離 AI 執行程式碼。
- 如要瞭解如何在 GKE 上搭配使用 Pod 快照和 Agent Sandbox,請參閱「使用 Pod 快照儲存及還原 GKE 環境中的 Agent Sandbox」。
- 如要瞭解以執行者為基礎的代理自動化調度管理,請參閱「關於 GKE 上的 Agent Substrate」。
- 瞭解如何在 GKE 上搭配使用開放原始碼 Kata Containers 和 Agent Sandbox。Kata Containers 不是 Google Cloud 產品,如果您安裝並使用這類軟體,就必須自行管理及排解問題。Google 的支援和服務水準協議不適用於 Kata Containers。
- 如要瞭解基礎開放原始碼實作,請參閱 Agent Sandbox GitHub 專案。
- 如需程式碼執行或電腦使用等情境的執行階段和 YAML 設定範例,請參閱 Agent Sandbox 範例。
- 如要透過程式與沙箱互動,請參閱 GitHub 上的 Agent Sandbox Python SDK README。