GKE Agent Sandbox proporciona aislamiento a nivel del kernel para el código no confiable generado por el modelo con gVisor. Si combinas GKE Agent Sandbox con volúmenes de agentes de Filestore, puedes proporcionar entornos seguros y aislados respaldados por 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 reclamo 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 CSI en Configura el entorno de GKE para los volúmenes del agente 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 un SandboxTemplate
Define un manifiesto SandboxTemplate llamado warmpool-filestore-template.yaml.
La plantilla configura los parámetros de configuración del tiempo de ejecución de gVisor, los contextos de seguridad no raíz y un bloque volumeClaimTemplates que segmenta el volume-pool-sc StorageClass:
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 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 nodos en espera estén listos:
kubectl get sandboxwarmpool filestore-warmpool -n default
Reclama un pod de zona de pruebas
Cuando comienza una sesión del agente, envía un manifiesto SandboxClaim llamado sandbox-claim.yaml para reclamar un entorno de pruebas precalentado:
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
Verifica 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 mostró en el paso anterior.El registro confirma que
/workspace/session-init.txtse creó en el volumen de Filestore que se activó.
¿Qué sigue?
- Explora la zona de pruebas del agente con vinculación tardía.
- Implementa cargas de trabajo de GKE autoadministradas.
- Obtén más información para crear y administrar grupos de volumen.