Das Agent Substrate der Google Kubernetes Engine (GKE) ist eine Infrastrukturplattform, die den Lebenszyklus von zustandsorientierten KI-Agenten-Sandboxes verwaltet. Mit Agent Substrate können Plattformen inaktive KI-Agenten-Arbeitslasten sperren, um Rechenkosten zu sparen, und sie in weniger als einer Sekunde fortsetzen, wenn neue Prompts oder Aufgaben eingehen.
Filestore-Agent-Volumes bieten die nichtflüchtige Speicherebene für Agent Substrate und speichern Workspace-Dateien, Code-Repositories und Scratchpad-Artefakte über Sandbox-Aussetzungs- und Fortsetzungszyklen hinweg.
So verwendet Agent Substrate Agent Volumes
In den folgenden Schritten wird beschrieben, wie Agent Substrate und Filestore-Agent-Volumes einen interaktiven Coding-Agent unterstützen, der Entwickler beim Erstellen von Features, Ausführen von Tests und Debuggen von Code unterstützt:
- Sitzungsinitialisierung: Wenn ein Entwickler eine Aufgabe einreicht, erstellt Agent Substrate eine Sandbox-Umgebung in GKE und stellt ein dediziertes Filestore-Volume bereit. Der Agent klont das Projekt-Repository, installiert Abhängigkeiten und bereitet den Arbeitsbereich vor.
- Kosteneffiziente Inaktivitätsaussetzung: Während der Entwickler Codeunterschiede prüft oder den nächsten Prompt erstellt, hebt Agent Substrate die Bereitstellung des Volumes auf und beendet die Rechenumgebung. Die Auslastung der Rechenressourcen sinkt auf null, während alle Arbeitsbereichsdateien, der Git-Verlauf und die Build-Caches im Volume erhalten bleiben.
- Sofortige Fortsetzung: Wenn der Entwickler einen neuen Prompt sendet, beansprucht Agent Substrate eine vorgewärmte Sandbox und hängt das vorhandene Volume in weniger als 100 ms wieder an. Der Agent setzt die Arbeitslast sofort mit dem vollständigen Dateisystemkontext fort, sodass zeitaufwendige Repository-Klone oder Neuinstallationen von Abhängigkeiten vermieden werden.
Weitere Informationen finden Sie in der Dokumentation zu Agent Substrate.
Wenn Sie zustandsorientierte Agent-Arbeitslasten auf GKE Agent Substrate mit Filestore-Agent-Volumes ausführen möchten, installieren Sie Agent Substrate, konfigurieren die Integration des Filestore-CSI-Treibers und definieren Ihre Agent-Arbeitslasten so, dass sie dynamische CSI-Volumes verwenden.
Agent Substrate installieren
Wenn Sie Ihr Google Cloud -Projekt vorbereiten und Agent Substrate in einem GKE Standard-Cluster installieren möchten, folgen Sie der Anleitung unter Agent Substrate in GKE installieren.
Filestore-CSI-Treiber installieren und konfigurieren
Wenn Sie Filestore-Agent-Volumes mit Agent Substrate verwenden möchten, müssen Sie beim Ausführen des interaktiven Agent Substrate-Installationsprogramms den optionalen Schritt Filestore-CSI-Treiber auswählen.
Die Steuerungsebene von Agent Substrate (ateapi) kommuniziert direkt über gRPC mit dem Filestore-CSI-Treiber-Controller. Der CSI-Treiber stellt dynamisch Volumes pro Akteur aus Ihrem Filestore-Volume-Pool bereit, hängt sie an und trennt sie, synchron mit dem Lebenszyklus jedes Akteurs.
Arbeitslasten erstellen, die Filestore-Volumes verwenden
In Agent Substrate definieren Sie externe Filestore-Volumes deklarativ in einer ActorTemplate-Ressource, anstatt separate Kubernetes-PersistentVolumeClaim-Objekte zu erstellen.
In den folgenden Schritten wird beschrieben, wie Sie eine Filestore-StorageClass und eine CSIDriverConfig konfigurieren, einen WorkerPool und einen ActorTemplate bereitstellen, die ein externes Filestore-Volume bereitstellen, und den Lebenszyklus des Akteurs verwalten.
StorageClass erstellen
Erstellen Sie eine Datei mit dem Namen storageclass.yaml, um dynamische Volumes aus Ihrem Filestore-Volume-Pool bereitzustellen:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: substrate-volumepool-sc
provisioner: filestore.csi.storage.gke.io
parameters:
volume-pool: "projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_NAME"
allowVolumeExpansion: false
reclaimPolicy: Delete
volumeBindingMode: Immediate
Ersetzen Sie Folgendes:
PROJECT_ID: Projekt-ID in Google Cloud .LOCATION: die Region, in der sich Ihr Volume-Pool befindet, z. B.us-central1.VOLUME_POOL_NAME: der Name Ihres Filestore-Volume-Pools.
Wenden Sie den StorageClass an:
kubectl apply -f storageclass.yaml
CSIDriverConfig registrieren
Die Ressource CSIDriverConfig verbindet den Kubernetes-StorageClass-Bereitsteller (filestore.csi.storage.gke.io) mit dem gRPC-Netzwerkendpunkt des Filestore-CSI-Controller-Dienstes und dem lokalen Unix-Domain-Socket-Pfad des CSI-Knoten-Plug-ins.
Erstellen Sie eine Datei mit dem Namen csi-driver-config.yaml:
apiVersion: ate.dev/v1alpha1
kind: CSIDriverConfig
metadata:
name: filestore.csi.storage.gke.io
spec:
driverName: filestore.csi.storage.gke.io
controllerEndpoint: tcp://csi-filestore-controller.gcp-filestore-csi-driver.svc:10000
nodeSocketOverride: unix:///var/lib/kubelet/plugins/filestore.csi.storage.gke.io/csi.sock
tls:
enabled: true
usePodIdentity: true
serverName: csi-filestore-controller.gcp-filestore-csi-driver.svc
Wenden Sie den CSIDriverConfig an:
kubectl apply -f csi-driver-config.yaml
WorkerPool und ActorTemplate definieren
Erstellen Sie den
ate-demo-Atespace und den Kubernetes-Namespace, die als Isolationsgrenze für Ihren Worker-Pool, Ihre Actor-Vorlage und Ihre Actors dienen sollen:kubectl ate create atespace ate-demo kubectl create namespace ate-demo
Erstellen Sie eine
WorkerPool-Ressource, um physische Standby-Arbeitslasten bereitzuhalten, die Akteur-Sandboxes hosten können. Speichern Sie das folgende Manifest alsworker-pool.yaml:apiVersion: ate.dev/v1alpha1 kind: WorkerPool metadata: name: agent-pool namespace: ate-demo labels: workload: stateful-agent spec: replicas: 5 workerImage: ko://github.com/agent-substrate/substrate/cmd/ateom-gvisorWenden Sie das
WorkerPool-Manifest an:kubectl apply -f worker-pool.yaml
Erstellen Sie eine Datei mit dem Namen
actor-template.yaml, in der derActorTemplatedefiniert wird, der ein 5-GiB-Volume vonsubstrate-volumepool-scbereitstellt:metadata: atespace: ate-demo name: stateful-agent-template workerSelector: matchLabels: workload: stateful-agent containers: - name: agent image: CONTAINER_IMAGE volumeMounts: - name: shared-storage mountPath: /mnt/shared readyz: httpGet: path: /readyz port: 8080 sandboxConfig: sandboxClass: SANDBOX_CLASS_GVISOR configName: gvisor-default snapshotsConfig: storageLocation: gs://SNAPSHOT_BUCKET/stateful-agent volumes: - name: shared-storage externalVolumeTemplate: capacity: 5Gi storageClassName: substrate-volumepool-scErsetzen Sie Folgendes:
CONTAINER_IMAGE: das Container-Image für Ihre Agentenarbeitslast, z. B.gcr.io/my-project/agent-app@sha256:7f28ab0....SNAPSHOT_BUCKET: der Cloud Storage-Bucket, der von Agent Substrate zum Speichern von Actor-Snapshots verwendet wird.
In diesem Manifest gibt
volumes[].externalVolumeTemplatedie angeforderte Volume-Kapazität (5Gi) und dieStorageClass(substrate-volumepool-sc) an, deren Bereitsteller mit IhrerCSIDriverConfigübereinstimmt, währendcontainers[].volumeMountsdieses Volume unter/mnt/sharedbereitstellt. Jedes involumesdeklarierte Volume muss von mindestens einem Container bereitgestellt werden.Erstellen Sie den
ActorTemplateüber die Agent Substrate API mit derkubectl ate-CLI:kubectl ate create actor-template -f actor-template.yaml
Akteur erstellen, sperren und fortsetzen
Sobald der ActorTemplate erstellt und der Golden Snapshot bereit ist, können Sie eine Actor-Instanz erstellen und ihren Ausführungsstatus verwalten:
Erstellen Sie einen neuen Akteur aus
stateful-agent-template:kubectl ate create actor ACTOR_NAME \ --template=stateful-agent-template \ -a ate-demoErsetzen Sie
ACTOR_NAMEdurch einen DNS-1123-Labelnamen für Ihren Akteur, z. B.my-agent-1.Wenn Sie den Akteur erstellen, stellt Agent Substrate dynamisch ein dediziertes Filestore-Volume aus
substrate-volumepool-scbereit und stellt es unter/mnt/sharedbereit.Akteur sperren, wenn er inaktiv wird:
kubectl ate suspend actor ACTOR_NAME \ -a ate-demoWenn der Actor gesperrt wird, wird sein Speicherstatus in Cloud Storage gespeichert, das Filestore-Volume wird getrennt und die Bereitstellung wird aufgehoben. Dabei bleiben alle Arbeitsbereichsdateien auf dem Volume erhalten und die Arbeitslast wird freigegeben.
Setzen Sie den Actor fort, wenn eine neue Anfrage oder Aufgabe eingeht:
kubectl ate resume actor ACTOR_NAME \ -a ate-demoWenn der Actor fortgesetzt wird, wird er einer verfügbaren Arbeitslast zugewiesen, sein Speicher-Snapshot wird wiederhergestellt und das vorhandene Filestore-Volume wird unter
/mnt/sharedmit allen intakten Dateien wieder angehängt.
Nächste Schritte
- Richten Sie die Umgebung für GKE ein.
- Konfigurieren Sie vorgewärmte Sandboxes mit Agent Sandbox.
- Dynamischen Speicher mit Late Binding für Agent Sandbox kennenlernen.