GKE Agent Sandbox menyediakan isolasi tingkat kernel untuk kode yang dibuat model yang tidak tepercaya dengan menggunakan gVisor. Dengan menggabungkan GKE Agent Sandbox dengan volume agen Filestore, Anda dapat menyediakan lingkungan yang aman dan terisolasi yang didukung oleh penyimpanan file persisten dengan kepadatan tinggi.
Panduan ini menunjukkan cara mengonfigurasi kumpulan node yang mendukung gVisor, menentukan
SandboxTemplate dengan template klaim volume Filestore,
memanaskan sandbox dengan SandboxWarmPool, dan mengklaim sandbox dengan
SandboxClaim.
Sebelum memulai
Selesaikan penyiapan cluster dan driver CSI di Menyiapkan lingkungan GKE untuk volume agen Filestore.
Membuat node pool yang mendukung gVisor
Buat node pool khusus yang dikonfigurasi dengan isolasi sandbox 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
Ganti kode berikut:
CLUSTER_NAME: nama cluster GKE Anda.REGION: region tempat cluster berada.PROJECT_ID: Google Cloud Project ID Anda.
Buat SandboxTemplate
Tentukan manifes SandboxTemplate bernama warmpool-filestore-template.yaml.
Template mengonfigurasi setelan runtime gVisor, konteks keamanan non-root,
dan blok volumeClaimTemplates yang menargetkan 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"
Terapkan manifes:
kubectl apply -f warmpool-filestore-template.yaml
Membuat SandboxWarmPool
Untuk meminimalkan latensi startup sandbox, tentukan manifes SandboxWarmPool bernama
sandbox-warmpool.yaml yang mempertahankan instance pod yang sudah melewati pra-penyiapan:
apiVersion: extensions.agents.x-k8s.io/v1alpha1
kind: SandboxWarmPool
metadata:
name: filestore-warmpool
namespace: default
spec:
replicas: 3
sandboxTemplateRef:
name: warmpool-filestore-template
Terapkan manifes:
kubectl apply -f sandbox-warmpool.yaml
Pastikan pod warm pool sudah siap:
kubectl get sandboxwarmpool filestore-warmpool -n default
Mengklaim pod sandbox
Saat sesi agen dimulai, kirimkan manifes SandboxClaim bernama
sandbox-claim.yaml untuk mengklaim sandbox yang sudah dipanaskan sebelumnya:
apiVersion: extensions.agents.x-k8s.io/v1alpha1
kind: SandboxClaim
metadata:
name: agent-session-1
namespace: default
spec:
sandboxTemplateRef:
name: warmpool-filestore-template
Terapkan manifes:
kubectl apply -f sandbox-claim.yaml
Memverifikasi volume yang terpasang
Periksa apakah klaim terikat ke pod:
kubectl get sandboxclaim agent-session-1
Temukan pod yang terkait dengan klaim Anda:
kubectl get pods -l extensions.agents.x-k8s.io/claimed-by=agent-session-1
Pastikan volume terpasang di dalam container yang diklaim:
kubectl logs POD_NAME -c agent-container
Ganti
POD_NAMEdengan nama pod yang ditampilkan di langkah sebelumnya.Log mengonfirmasi bahwa
/workspace/session-init.txtdibuat di volume Filestore yang di-mount.
Langkah berikutnya
- Jelajahi Sandbox Agen dengan binding terlambat.
- Deploy workload GKE yang dikelola sendiri.
- Pelajari cara membuat dan mengelola kumpulan volume.