Agent Sandbox de Google Kubernetes Engine (GKE) proporciona aislamiento a nivel del kernel para el código generado por modelos no confiables con gVisor. Si combinas GKE Agent Sandbox con los volúmenes de agentes de Filestore, puedes ofrecer entornos seguros y aislados respaldados por un almacenamiento de archivos persistente y de alta densidad.
En esta guía, se muestra cómo configurar un grupo de nodos habilitado para gVisor, definir un
SandboxTemplate con plantillas de reclamación de volúmenes de Filestore,
precalentar zonas de pruebas con SandboxWarmPool y reclamar zonas de pruebas con
SandboxClaim.
Antes de comenzar
Completa la configuración del clúster y del controlador de CSI en Configura el entorno de GKE para los volúmenes de agentes de Filestore.
Crea un grupo de nodos habilitado para gVisor
Crea un grupo de nodos dedicado configurado con aislamiento de zona de pruebas de gVisor:
gcloud container node-pools create gvisor-pool \
--cluster=CLUSTER_NAME \
--location=REGION \
--project=PROJECT_ID \
--image-type=cos_containerd \
--sandbox=type=gvisor \
--num-nodes=2 \
--machine-type=n2-standard-16 \
--enable-autoscaling \
--min-nodes=1 \
--max-nodes=10 \
--scopes=cloud-platform
Reemplaza lo siguiente:
CLUSTER_NAME: Es el nombre del clúster de GKE.REGION: La región en la que reside el clústerPROJECT_ID: Es el ID del proyecto de Google Cloud .
Crea una SandboxTemplate
Define un manifiesto SandboxTemplate llamado warmpool-filestore-template.yaml.
La plantilla establece la configuración del entorno de ejecución de gVisor, los contextos de seguridad que no son raíz
y un bloque volumeClaimTemplates que se orienta al StorageClass de volume-pool-sc:
apiVersion: extensions.agents.x-k8s.io/v1alpha1
kind: SandboxTemplate
metadata:
name: warmpool-filestore-template
namespace: default
spec:
podTemplate:
spec:
runtimeClassName: gvisor
automountServiceAccountToken: false
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
nodeSelector:
sandbox.gke.io/runtime: gvisor
tolerations:
- key: "sandbox.gke.io/runtime"
value: "gvisor"
effect: "NoSchedule"
containers:
- name: agent-container
image: busybox
command: ["/bin/sh", "-c"]
args:
- |
echo "Sandbox started with Filestore volume mounted!"
ls -la /workspace
date > /workspace/session-init.txt
cat /workspace/session-init.txt
sleep 3600
securityContext:
capabilities:
drop: ["ALL"]
allowPrivilegeEscalation: false
resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
volumeMounts:
- name: agent-workspace
mountPath: /workspace
volumeClaimTemplates:
- metadata:
name: agent-workspace
spec:
accessModes: ["ReadWriteMany"]
storageClassName: "volume-pool-sc"
resources:
requests:
storage: "1Gi"
Aplica el manifiesto
kubectl apply -f warmpool-filestore-template.yaml
Crea un SandboxWarmPool
Para minimizar la latencia de inicio de la zona de pruebas, define un manifiesto SandboxWarmPool llamado
sandbox-warmpool.yaml que mantenga las instancias de Pod preparadas con anterioridad:
apiVersion: extensions.agents.x-k8s.io/v1alpha1
kind: SandboxWarmPool
metadata:
name: filestore-warmpool
namespace: default
spec:
replicas: 3
sandboxTemplateRef:
name: warmpool-filestore-template
Aplica el manifiesto
kubectl apply -f sandbox-warmpool.yaml
Verifica que los Pods del grupo de preparación estén listos:
kubectl get sandboxwarmpool filestore-warmpool -n default
Reclama un Pod de zona de pruebas
Cuando comience una sesión de agente, envía un manifiesto SandboxClaim llamado
sandbox-claim.yaml para reclamar una zona de pruebas precalentada:
apiVersion: extensions.agents.x-k8s.io/v1alpha1
kind: SandboxClaim
metadata:
name: agent-session-1
namespace: default
spec:
sandboxTemplateRef:
name: warmpool-filestore-template
Aplica el manifiesto
kubectl apply -f sandbox-claim.yaml
Verifica el volumen activado
Comprueba que la reclamación esté vinculada a un Pod:
kubectl get sandboxclaim agent-session-1
Busca el pod asociado a tu reclamo:
kubectl get pods -l extensions.agents.x-k8s.io/claimed-by=agent-session-1
Verifica que el volumen esté activado dentro del contenedor reclamado:
kubectl logs POD_NAME -c agent-container
Reemplaza
POD_NAMEpor el nombre del Pod que se devolvió en el paso anterior.El registro confirma que se creó
/workspace/session-init.txten el volumen de Filestore activado.
¿Qué sigue?
- Explora la zona de pruebas de agentes con vinculación tardía.
- Implementa cargas de trabajo de GKE autoadministradas.
- Obtén más información para crear y administrar grupos de volúmenes.