נפחי סוכנים של Filestore משולבים עם Google Kubernetes Engine (GKE) כדי לספק אחסון קבצים קבוע בצפיפות גבוהה עם זמן אחזור נמוך לארגזי חול של סוכני AI עם שמירת מצב, לסביבות פיתוח ולתהליכי עבודה עם כמה סוכנים.
במדריך הזה מוסבר מהן הדרישות המוקדמות לשימוש בנפחי סוכנים של Filestore ב-GKE.
לפני שמתחילים
- משלימים את ההגדרה הראשונית בקטע הגדרת אמצעי אחסון של סוכן Filestore.
מפעילים את GKE API:
gcloud services enable container.googleapis.com \ --project=PROJECT_IDמתקינים את הרכיבים הנדרשים ל-
gcloud:gcloud components install kubectl gke-gcloud-auth-plugin
יצירת אשכול GKE
יוצרים אשכול GKE שמחובר ל-Private Service Connect.
gcloud container clusters create CLUSTER_NAME \
--region=REGION \
--project=PROJECT_ID \
--network=projects/PROJECT_ID/global/networks/VPC_NETWORK \
--subnetwork=SUBNET_NAME \
--num-nodes=3 \
--workload-pool=PROJECT_ID.svc.id.goog\
--scopes=cloud-platform \
--enable-agent-sandbox \
--addons=GcpFilestoreCsiDriver=DISABLED \
--cluster-version=1.36.0-gke.3302001
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: השם של האשכול החדש. -
REGION: האזור שבו נמצא מאגר הנפחים, למשלus-central1. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
VPC_NETWORK: השם של רשת ה-VPC שמופעל בה PSC. -
SUBNET_NAME: השם של רשת המשנה.
הגדרת איחוד זהויות של עומסי עבודה ל-GKE ול-IAM
מגדירים חשבון שירות של Google (GSA) עם הרשאות להקצאת נפחי אחסון של Filestore ומקשרים אותו לחשבון השירות של Kubernetes (KSA) שמשמש את מנהל ההתקן של CSI.
יוצרים את חשבון השירות של Google:
gcloud iam service-accounts create filestore-csi-gsa \ --display-name="Filestore CSI Driver GSA" \ --project=PROJECT_IDמקצים לחשבון השירות את התפקיד 'עריכה ב-Cloud Filestore' (
roles/file.editor):gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/file.editor"מקצים את התפקיד 'עריכה ב-Cloud Filestore' (
roles/file.editor) לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine:PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/file.editor"מקשרים את ה-KSA במרחב השמות
gcp-filestore-csi-driverל-GSA:gcloud iam service-accounts add-iam-policy-binding \ filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.com \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:PROJECT_ID.svc.id.goog[gcp-filestore-csi-driver/gcp-filestore-csi-controller-sa]" \ --project=PROJECT_ID
פריסת מנהל התקן Filestore CSI
קבלת פרטי הכניסה של האשכול:
gcloud container clusters get-credentials CLUSTER_NAME \ --region=REGION \ --project=PROJECT_IDמשכפלים את מאגר מנהלי ההתקנים ומחילים את שכבת העל
volumepool:git clone https://github.com/kubernetes-sigs/gcp-filestore-csi-driver.git cd gcp-filestore-csi-driver kubectl apply -k deploy/kubernetes/overlays/volumepool
מוסיפים את GSA לחשבון השירות של בקר:
kubectl annotate serviceaccount gcp-filestore-csi-controller-sa \ --namespace=gcp-filestore-csi-driver \ --overwrite \ iam.gke.io/gcp-service-account=filestore-csi-gsa@PROJECT_ID.iam.gserviceaccount.comמוודאים שהפודים של מנהל התקן ה-CSI פועלים:
kubectl get pods -n gcp-filestore-csi-driver
הפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE gcp-filestore-csi-controller-0 5/5 Running 0 2m gcp-filestore-csi-node-abcde 3/3 Running 0 2m
הגדרת StorageClass לבריכת הנחות על נפח
כדי לאפשר לעומסי העבודה של GKE להקצות נפחי אחסון באופן דינמי ממאגר נפחי האחסון, צריך להחיל StorageClass של Kubernetes על האשכול.
אם כבר יצרתם את קובץ המניפסט volume-pool-sc.yaml בקטע הגדרת אמצעי אחסון של Filestore agent, אפשר לדלג לשלב 2.
יוצרים קובץ בשם
volume-pool-sc.yamlעם ההגדרות הבאות:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: volume-pool-sc provisioner: filestore.csi.storage.gke.io parameters: volume-pool: "projects/<var>PROJECT_ID</var>/locations/<var>LOCATION</var>/volumePools/<var>VOLUME_POOL_ID</var>" mountOptions: - vers=3 - proto=tcp - mountproto=tcp - port=2049 - mountport=2050 volumeBindingMode: Immediate reclaimPolicy: Deleteמחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: המזהה של הפרויקט ב- Google Cloud. -
LOCATION: האזור שבו נפח האחסון שלכם נפרס, למשלus-central1. VOLUME_POOL_ID: המזהה של מאגר הנפחים.
-
החלת המניפסט:
kubectl apply -f volume-pool-sc.yaml
מוודאים ש
StorageClassזמין:kubectl get storageclass volume-pool-sc
הפלט אמור להיראות כך:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE volume-pool-sc filestore.csi.storage.gke.io Delete Immediate true 1m
אחרי שתשלימו את ההוראות במדריך הזה, סביבת ה-GKE שלכם תהיה מוכנה לתמוך בנפחי סוכן של Filestore.
המאמרים הבאים
אחרי שמגדירים את אשכול GKE ואת סוג האחסון (storage class), אפשר לפרוס עומסי עבודה של סוכני AI עם שמירת מצב באמצעות אחד מדפוסי התיאום הבאים:
- פריסת עומסי עבודה באמצעות GKE Agent Substrate.
- פריסת עומסי עבודה באמצעות GKE Agent Sandbox.
- הגדרת שיוך מאוחר של אחסון.
- פריסת עומסי עבודה ב-GKE בניהול עצמי.