הגדרת סביבת GKE עבור כרכים של סוכן Filestore

נפחי סוכנים של Filestore משולבים עם Google Kubernetes Engine ‏ (GKE) כדי לספק אחסון קבצים קבוע בצפיפות גבוהה עם זמן אחזור נמוך לארגזי חול של סוכני AI עם שמירת מצב, לסביבות פיתוח ולתהליכי עבודה עם כמה סוכנים.

במדריך הזה מוסבר מהן הדרישות המוקדמות לשימוש בנפחי סוכנים של Filestore ב-GKE.

לפני שמתחילים

  1. משלימים את ההגדרה הראשונית בקטע הגדרת אמצעי אחסון של סוכן Filestore.
  2. מפעילים את GKE API:

    gcloud services enable container.googleapis.com \
        --project=PROJECT_ID
    
  3. מתקינים את הרכיבים הנדרשים ל-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.

  1. יוצרים את חשבון השירות של Google:

    gcloud iam service-accounts create filestore-csi-gsa \
        --display-name="Filestore CSI Driver GSA" \
        --project=PROJECT_ID
    
  2. מקצים לחשבון השירות את התפקיד 'עריכה ב-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"
    
  3. מקצים את התפקיד 'עריכה ב-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"
    
  4. מקשרים את ה-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

  1. קבלת פרטי הכניסה של האשכול:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=REGION \
        --project=PROJECT_ID
    
  2. משכפלים את מאגר מנהלי ההתקנים ומחילים את שכבת העל 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
    
  3. מוסיפים את 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
    
  4. מוודאים שהפודים של מנהל התקן ה-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.

  1. יוצרים קובץ בשם 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: המזהה של מאגר הנפחים.
  2. החלת המניפסט:

    kubectl apply -f volume-pool-sc.yaml
    
  3. מוודאים ש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 עם שמירת מצב באמצעות אחד מדפוסי התיאום הבאים: