GKE의 에이전트 샌드박스 정보

Google Kubernetes Engine(GKE)의 Agent Sandbox는 전용 Kubernetes 포드에서 각 샌드박스를 실행하여 격리된 스테이트풀(Stateful) 단일 복제본 워크로드를 관리하는 데 도움이 됩니다. 이 포드 기반 아키텍처는 신뢰할 수 없는 LLM 생성 코드가 격리된 환경에서 실행되어야 하는 AI 에이전트 런타임과 같은 사용 사례를 지원합니다.

Agent Sandbox는 Kubernetes SIG Apps의 오픈소스 프로젝트입니다. GKE에서 Agent Sandbox를 사용하려면 클러스터에 Agent Sandbox 컨트롤러를 설치합니다. 컨트롤러 업그레이드는 사용자가 담당합니다. 자세한 내용은 GKE에 Agent Sandbox 설치를 참조하세요.

이 문서에서는 GKE의 Agent Sandbox에 대한 개념 개요를 제공합니다.

포드 기반 아키텍처와 액터 기반 아키텍처 중에서 선택

GKE는 AI 에이전트 워크로드를 조정하기 위한 두 가지 아키텍처를 제공합니다.

  • GKE의 Agent Substrate(액터 기반): 대부분의 에이전트 워크로드, 특히 자주 정지 및 재개되는 스테이트풀(Stateful) 에이전트에 이 아키텍처를 사용합니다. 활성 에이전트는 에이전트당 전용 포드를 유지하는 대신 웜 포드 풀을 공유하므로 더 적은 노드에서 더 많은 에이전트를 실행할 수 있습니다. GKE의 Agent Substrate는 유휴 워크로드의 자동 정지 및 재개를 제공합니다. 시스템은 각 유휴 에이전트의 메모리와 파일을 스토리지에 저장하고 1초 이내에 에이전트를 복원합니다. 반면 GKE의 에이전트 샌드박스에는 수동 포드 스냅샷이 필요하며, 비활성 상태를 감지하고 에이전트의 진행 상황을 저장하려면 애플리케이션 코드를 빌드해야 합니다. GKE의 Agent Substrate에는 GKE Standard 클러스터가 필요합니다. 자세한 내용은 GKE의 Agent Substrate 정보를 참조하세요.
  • GKE의 Agent Sandbox (포드 기반): 각 에이전트에 GKE Autopilot 또는 Standard 클러스터의 전용 Kubernetes 포드가 필요한 경우 이 아키텍처를 사용합니다. 지속적으로 활성 상태인 에이전트 또는 다음 중 하나가 필요한 워크로드에 이 옵션을 선택합니다.
    • Sandbox 및 SandboxClaim 커스텀 리소스와 같은 선언적 Kubernetes API
    • 커스텀 사이드카 및 초기화 컨테이너를 포함한 전체 Kubernetes PodSpec 스키마
    • GPU 또는 TPU와 같은 하드웨어 가속기에 직접 액세스
    • GKE Autopilot 클러스터

GKE에서 에이전트 샌드박스를 사용하는 이유

GKE의 Agent Sandbox는 높은 수준의 확장성, 확장성, 보안이 필요한 에이전트 워크로드를 위해 빌드되었습니다. 이를 통해 얻을 수 있는 주요 이점은 다음과 같습니다.

  • 커널 수준 격리: 신뢰할 수 없는 LLM 생성 코드에 강력한 커널 수준 격리를 제공합니다. GKE의 Agent Sandbox는 오픈소스 Kata Containers와도 호환됩니다. GKE에서 Agent Sandbox와 함께 오픈소스 Kata Containers를 사용하는 방법에 관한 튜토리얼은 GKE에서 Kata Containers 사용 설정을 참조하세요.

  • 1초 미만의 프로비저닝: 표준 Kubernetes 포드 예약 및 시작을 기다리는 대신 일반적으로 1초 미만의 웜 풀에서 샌드박스를 제공합니다.

  • 클라우드 네이티브 확장성: Kubernetes 패러다임의 강력한 기능과 GKE의 관리형 인프라를 활용합니다.

GKE의 Agent Sandbox는 선언적이고 표준화된 API를 제공하여 가상 머신 (VM)과 유사한 격리 및 지속성 특성을 제공하는 단일 컨테이너 환경을 제공하며, 이는 전적으로 Kubernetes 프리미티브를 기반으로 빌드됩니다.

GKE의 Agent Sandbox 일반적인 사용 사례

격리, 지속성, 안정적인 ID가 필요한 워크로드에는 GKE의 Agent Sandbox를 사용하세요. 사용 사례의 예를 들면 다음과 같습니다.

  • AI 에이전트 런타임: gVisor와 같은 보안 중심 런타임으로 격리된 환경에서 신뢰할 수 없는 코드를 안전하게 실행합니다.
  • 개발 환경: 개발자에게 영구적이고 격리된 클라우드 기반 코딩 환경을 제공합니다.
  • 노트북 및 조사 도구: Jupyter Notebook과 같은 대화형 도구를 위한 단일 컨테이너 세션을 호스팅합니다.
  • 스테이트풀(Stateful) 단일 포드 서비스: StatefulSet의 복잡성 없이 안정적인 ID와 스토리지가 필요한 애플리케이션을 실행합니다.
  • 프로그래매틱 환경 관리: 에이전트 샌드박스 Python SDK와 같이 제공된 클라이언트 라이브러리 SDK를 사용하여 Kubernetes YAML을 관리하지 않고도 애플리케이션 로직에서 직접 샌드박스를 요청하고 관리할 수 있습니다.

GKE의 Agent Sandbox 작동 방식

GKE의 Agent Sandbox는 커스텀 컨트롤러와 여러 Kubernetes 커스텀 리소스 정의 (CRD)를 사용하여 샌드박스 환경의 수명 주기를 관리합니다.

핵심 아키텍처

  • Sandbox 커스텀 리소스: 단일 스테이트풀(Stateful) 포드를 나타내는 기본 리소스입니다. 이 리소스는 정식 호스트 이름, 네트워크 ID, 영구 스토리지를 관리합니다.
  • 샌드박스 라우터: 안정적인 엔드포인트를 제공하고 트래픽을 적절한 샌드박스 포드로 터널링하여 기본 네트워킹 복잡성을 추상화하는 구성요소입니다.
  • 포드 스냅샷과 통합: GKE의 Agent Sandbox는 GKE 포드 스냅샷 기능과 통합되어 컨테이너의 전체 상태를 저장하고 복원하여 워크로드를 일시중지하고 재개할 수 있습니다.

소유권 주장 모델

클레임 모델은 환경에 대한 사용자의 요청을 워크로드가 프로비저닝되는 위치 및 방법과 같은 특정 구현 세부정보와 분리하는 핵심 기능입니다. 표준 Kubernetes StatefulSet와 달리 클레임 모델을 사용하면 기본 포드 또는 스토리지 구성을 직접 관리할 필요 없이 샌드박스를 요청할 수 있습니다.

소유권 주장 모델은 SandboxClaim, SandboxWarmPool, SandboxTemplate 커스텀 리소스를 사용하며 다음과 같이 작동합니다.

  1. 사용자 또는 애플리케이션은 SandboxWarmPool 리소스를 참조하는 SandboxClaim 리소스를 만들어 샌드박스를 요청합니다. 웜 풀은 샌드박스 구성을 정의하는 SandboxTemplate 리소스를 참조합니다.
  2. 컨트롤러는 웜 풀에서 준비된 샌드박스를 클레임에 할당합니다. 풀에 준비된 샌드박스가 없으면 컨트롤러는 템플릿에서 클레임에 대한 새 샌드박스를 만듭니다.

웜 풀

웜 풀 기능은 대화형 AI 에이전트 시나리오의 시작 지연 시간을 최소화하도록 설계되었습니다. GKE의 Agent Sandbox는 웜 풀을 사용하여 1초 이내에 실행 환경을 제공할 수 있습니다. 이 기능은 SandboxWarmPool 커스텀 리소스를 사용하며 다음과 같이 작동합니다.

  1. SandboxWarmPool 리소스는 준비 상태에서 사전 준비된 포드 인스턴스 집합을 유지합니다.
  2. SandboxClaim 리소스가 생성되면 컨트롤러는 새 포드가 이미지를 가져오고 처음부터 시작할 때까지 기다리는 대신 풀에서 준비된 포드를 할당합니다.
  3. 포드 스냅샷과 결합하면 포드를 처음부터 시작하는 대신 사전 구성된 상태에서 복원할 수 있습니다.

네트워크 격리

GKE의 에이전트 샌드박스는 SandboxTemplate 리소스에서 만드는 샌드박스에 대해 기본 거부 네트워크 보안 상황을 구현합니다. 각 SandboxTemplate 리소스에 대해 컨트롤러는 샌드박스 내에서 실행되는 신뢰할 수 없는 코드가 기본적으로 승인되지 않은 내부 네트워크 또는 GKE 컨트롤 플레인에 액세스할 수 없도록 하는 NetworkPolicy 리소스를 만듭니다. SandboxTemplate 리소스 내에서 특정 네트워크 제한사항과 허용되는 이그레스 또는 인그레스 규칙을 정의하여 에이전트 워크로드에 세분화된 보안을 제공할 수 있습니다.

컨트롤러는 직접 만든 Sandbox 리소스에 대해 NetworkPolicy 리소스를 만들지 않습니다. 이러한 샌드박스의 네트워크 액세스를 제한하려면 자체 NetworkPolicy 리소스를 만듭니다.

SDK를 사용한 프로그래매틱 액세스

AI 엔지니어는 제공된 클라이언트 라이브러리를 사용하여 GKE 리소스에서 Agent Sandbox를 프로그래매틱 방식으로 사용할 수 있습니다. 예를 들어 Python SDK는 기본 SandboxClaim 리소스를 만드는 상위 수준 인터페이스를 제공합니다. 클레임은 사용자가 만드는 SandboxWarmPool 리소스를 참조합니다. 이 인터페이스를 사용하면 LangChain 또는 Vertex AI Agentic SDK와 같은 Python 기반 에이전트 프레임워크에서 직접 격리된 환경을 만들고 상호작용할 수 있습니다.

제한사항 및 요구사항

GKE의 에이전트 샌드박스에는 다음과 같은 제한사항과 요구사항이 있습니다.

  • 클러스터 버전: GKE의 Agent Sandbox는 지원되는 모든 GKE 버전에서 실행됩니다. 포드 스냅샷을 사용하려면 클러스터에서 GKE 버전 1.35.3-gke.1234000 이상을 실행해야 합니다.
  • 인프라 요구사항: 클러스터에 에이전트 샌드박스 컨트롤러를 설치하고 구성해야 합니다. GKE의 에이전트 샌드박스에는 특정 머신 유형이 필요하지 않습니다. 예를 들어 설치 가이드에서는 e2-standard-2 노드를 사용합니다. 하지만 포드 스냅샷은 E2 머신 유형을 지원하지 않으므로 포드 스냅샷을 사용하려면 N2와 같은 다른 머신 시리즈를 사용하세요.
  • 격리 런타임: GKE의 Agent Sandbox는 gVisor 및 microVMs을 격리 런타임으로 지원합니다. 포드 스냅샷에는 gVisor가 필요하며 마이크로 VM에서는 작동하지 않습니다. 샌드박스 런타임을 지정하지 않으면 샌드박스가 커널 격리 없이 실행되므로 신뢰할 수 없는 코드에는 권장되지 않습니다.
  • 기본 기능 가용성: GKE 포드 스냅샷과 같은 일부 기본 기능은 프리뷰 상태이거나 특정 리전에서만 사용할 수 있습니다.

다음 단계