גישה למכונות Parallelstore קיימות באמצעות מנהל ההתקן של GKE Parallelstore CSI

הגישה ל-Parallelstore היא בהזמנה בלבד. אם אתם רוצים לבקש גישה ל-Parallelstore בפרויקט שלכם ב- Cloud de Confiance by S3NS , אתם יכולים לפנות לנציג המכירות שלכם.

במדריך הזה מוסבר איך להתחבר למופע Parallelstore קיים באמצעות דרייבר ה-CSI של GKE Parallelstore עם הקצאת משאבים סטטית. כך תוכלו לגשת למופעים קיימים של Parallelstore שמנוהלים באופן מלא כאל אמצעי אחסון לעומסי עבודה עם שמירת מצב, בצורה מבוקרת וצפויה.

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

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את Parallelstore API ואת Google Kubernetes Engine API.
  • הפעלת ממשקי API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

גישה למופע Parallelstore קיים באמצעות מנהל התקנים של Parallelstore CSI

אם כבר הקציתם מופע Parallelstore באותה רשת כמו אשכול GKE, תוכלו לפעול לפי ההוראות האלה כדי להקצות באופן סטטי PersistentVolume שמפנה למופע שלכם.

בקטעים הבאים מתואר התהליך הטיפוסי לגישה למופע Parallelstore קיים באמצעות מנהל התקן Parallelstore CSI:

  1. יוצרים PersistentVolume שמפנה למופע Parallelstore.
  2. משתמשים ב-PersistentVolumeClaim כדי לגשת לנפח האחסון.
  3. (אופציונלי) הגדרת משאבים עבור מאגר ה-sidecar.
  4. יוצרים עומס עבודה שמשתמש בנפח האחסון.

יצירת PersistentVolume

בקטע הזה מוצגת דוגמה לאופן שבו אפשר ליצור PersistentVolume שמפנה למופע Parallelstore קיים.

  1. מריצים את הפקודה הבאה כדי לאתר את מופע Parallelstore.

    gcloud beta parallelstore instances list \
        --project=PROJECT_ID \
        --location=LOCATION
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
    • LOCATION: אזור Compute Engine שמכיל את האשכול. צריך לציין אזור נתמך עבור מנהל התקן Parallelstore CSI.

    הפלט אמור להיראות כך: לפני שממשיכים לשלב הבא, חשוב לרשום את שם המופע של Parallelstore ואת נקודות הגישה ל-IP.

    NAME                                                                                                     capacity  DESCRIPTION  CREATE_TIME                     UPDATE_TIME                     STATE   network  RESERVED_IP_RANGE  ACCESS_POINTS
    projects/my-project/locations/us-central1-a/instances/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563  12000                  2024-03-06T19:18:26.036463730Z  2024-03-06T19:24:44.561441556Z  ACTIVE                              10.51.110.2,10.51.110.4,10.51.110.3
    
  2. שומרים את המניפסט הבא בקובץ בשם parallelstore-pv.yaml:

    Pod mount

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: parallelstore-pv
    spec:
      storageClassName: "STORAGECLASS_NAME"
      capacity:
        storage: STORAGE_SIZE
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
      csi:
        driver: parallelstore.csi.storage.gke.io
        volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container"
        volumeAttributes:
          accessPoints: ACCESS_POINTS
          network: NETWORK_NAME
      claimRef:
        name: parallelstore-pvc
        namespace: default
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
    • LOCATION: המיקום האזורי של מופע Parallelstore. צריך לציין אזור נתמך עבור מנהל התקן Parallelstore CSI.
    • INSTANCE_NAME: השם של מופע Parallelstore. דוגמה לערך תקין של volumeHandle היא "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
    • ACCESS_POINTS: נקודות הגישה של מופע Parallelstore, לדוגמה, 10.51.110.2,10.51.110.4,10.51.110.3.
    • NETWORK_NAME: רשת ה-VPC שאפשר לגשת אליה למופע Parallelstore.
    • STORAGECLASS_NAME: השם של StorageClass. הערך יכול להיות מחרוזת ריקה, אבל הוא חייב להיות זהה למפרט ב-PersistentVolumeClaim.
    • STORAGE_SIZE: גודל האחסון. לדוגמה, 12000Gi.

    רשימה מלאה של השדות שנתמכים באובייקט PersistentVolume מופיעה במאמרי העזרה בנושא Parallelstore CSI.

    תושבת לצומת

    מנהל התקן Parallelstore CSI מאפשר לכם לטעון נפחים ישירות בצמתים. התקנת צומת נתמכת באשכולות GKE בגרסה 1.32.3 ואילך.

    התקנה ברמת הצומת מאפשרת לכל ה-Pods בצומת לשתף את אותה נקודת התקנה. שיתוף נקודת הגישה משפר את יכולת ההתאמה לגודל, כי מספר נקודות הגישה גדל עם מספר הצמתים, ולא עם מספר ה-Pods (כמו במצב sidecar).

    כתוצאה מכך, תוכלו להריץ יותר Pods תוך שיתוף של אותו מופע Parallelstore.

    הערה: כדי להפעיל את התכונה הזו, צריך לציין את מאפיין הווליום mountLocality: node. ערך ברירת המחדל של Pod mount locality הוא mountLocality: pod. הדגלים של מעבד dfuse, בקשות זיכרון ומגבלות פועלים רק עם ההגדרה mountLocality: node.

    אם הערך של הבקשה או המגבלה מוגדר והערך השני לא מוגדר, שניהם יוגדרו לאותו ערך שצוין.

    אפשר להשתמש בערך'0' כדי לבטל את ההגדרה של מגבלות על משאבים. לדוגמה, dfuseMemoryLimit: '0' מסיר את מגבלת הזיכרון לתהליך dfuse.
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: parallelstore-pv
    spec:
      storageClassName: "STORAGECLASS_NAME"
      capacity:
        storage: STORAGE_SIZE
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      volumeMode: Filesystem
      csi:
        driver: parallelstore.csi.storage.gke.io
        volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container"
        volumeAttributes:
          accessPoints: ACCESS_POINTS
          network: NETWORK_NAME
          mountLocality: node
          dfuseCPURequest: DFUSE_CPU_REQUEST
          dfuseMemoryRequest: DFUSE_MEMORY_REQUEST
          dfuseCPULimit: DFUSE_CPU_LIMIT
          dfuseMemoryLimit: DFUSE_MEMORY_LIMIT
      claimRef:
        name: parallelstore-pvc
        namespace: default
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Cloud de Confiance by S3NS .
    • LOCATION: המיקום האזורי של מופע Parallelstore. צריך לציין אזור נתמך עבור מנהל התקן Parallelstore CSI.
    • INSTANCE_NAME: השם של מופע Parallelstore. דוגמה לערך תקין של volumeHandle היא "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container".
    • ACCESS_POINTS: נקודות הגישה של מופע Parallelstore, לדוגמה, 10.51.110.2,10.51.110.4,10.51.110.3.
    • NETWORK_NAME: רשת ה-VPC שאפשר לגשת אליה למופע Parallelstore.
    • STORAGECLASS_NAME: השם של StorageClass. הערך יכול להיות מחרוזת ריקה, אבל הוא חייב להיות זהה למפרט ב-PersistentVolumeClaim.
    • STORAGE_SIZE: גודל האחסון. לדוגמה, 12000Gi.
    • DFUSE_CPU_REQUEST: בקשת ה-CPU לתהליך dfuse. ערך ברירת המחדל הוא 250m.
    • DFUSE_MEMORY_REQUEST: בקשת הזיכרון לתהליך dfuse. ערך ברירת המחדל הוא 512Mi.
    • DFUSE_CPU_LIMIT: מגבלת ה-CPU לתהליך dfuse. ברירת המחדל היא לא מוגדר.
    • DFUSE_MEMORY_LIMIT: מגבלת הזיכרון לתהליך dfuse. ערך ברירת המחדל הוא 10Gi.

    רשימה מלאה של השדות שנתמכים באובייקט PersistentVolume מופיעה במאמרי העזרה בנושא Parallelstore CSI.

  3. מריצים את הפקודה הבאה כדי ליצור את PersistentVolume:

    kubectl apply -f parallelstore-pv.yaml
    

(אופציונלי) הרכבת אותה מכונת Parallelstore עם אפשרויות הרכבה שונות

הערה: התכונה הזו לא נתמכת בחיבורי צמתים.

אפשר לטעון את אותו מופע Parallelstore עם אפשרויות טעינה שונות. לדוגמה, אפשר לטעון את אותו מופע Parallelstore עם הפעלת מטמון ועם השבתת מטמון באותו Pod.

כדי לטעון את אותו מופע Parallelstore עם אפשרויות טעינה שונות, צריך ליצור PersistentVolume לכל אפשרות טעינה. משתמשים בתחביר הבא בשדה volumeHandle באובייקט PersistentVolume:‏ ‎"PROJECT_ID/LOCATION/INSTANCE_NAME/default-pool/default-container:RANDOM_SUFFIX"‎, כאשר RANDOM_SUFFIX הוא מחרוזת אקראית לפי בחירתכם.

לדוגמה: "my-project/us-central1-a/pvc-eff1ed02-a8ed-48d2-9902-bd70a2d60563/default-pool/default-container:xyz123"

שימוש ב-PersistentVolumeClaim כדי לגשת לנפח האחסון

אפשר ליצור משאב PersistentVolumeClaim שמפנה ל-StorageClass של מנהל התקני ה-CSI של Parallelstore.

קובץ המניפסט הבא מציג דוגמה לאופן שבו יוצרים PersistentVolumeClaim בReadWriteMany מצב גישה שמפנה אל StorageClass שיצרתם קודם.

  1. שומרים את המניפסט הבא בקובץ בשם parallelstore-pvc.yaml:

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: parallelstore-pvc
        namespace: default
      spec:
        accessModes:
          - ReadWriteMany
        storageClassName: STORAGECLASS_NAME
        resources:
          requests:
            storage: STORAGE_SIZE
    

    מחליפים את מה שכתוב בשדות הבאים:

    • STORAGECLASS_NAME: השם של StorageClass. היא צריכה להיות זהה למפרט ב-PersistentVolume.
    • STORAGE_SIZE: גודל האחסון. לדוגמה, 12000Gi. היא צריכה להיות זהה למפרט ב-PersistentVolume.
  2. מריצים את הפקודה הבאה כדי ליצור את PersistentVolumeClaim:

      kubectl create -f parallelstore-pvc.yaml
    

(אופציונלי) הגדרת משאבים עבור קובץ ה-sidecar

הערה: אפשר להגדיר משאבים עבור קונטיינר ה-sidecar רק אם משתמשים במיקום של טעינת ה-Pod, כלומר, אם מאפיין עוצמת הקול mountLocality ב-PersistentVolume לא מוגדר או מוגדר ל-pod.

כשיוצרים Pod של עומס עבודה שמשתמש באמצעי אחסון שמגובה על ידי Parallelstore, מנהל התקן ה-CSI קובע אם אמצעי האחסון מבוסס על מופעי Parallelstore.

אם מנהל ההתקן מזהה שהנפח מבוסס על Parallelstore, או אם מציינים את ההערה gke-parallelstore/volumes: "true", מנהל ההתקן של CSI מוסיף אוטומטית קונטיינר sidecar בשם gke-parallelstore-sidecar אל ה-Pod. קונטיינר ה-sidecar הזה מטמיע את מופע Parallelstore בעומס העבודה.

כברירת מחדל, קונטיינר ה-sidecar מוגדר עם בקשות המשאבים הבאות, ללא הגבלות על המשאבים:

  • ‫250 m CPU
  • זיכרון בנפח ‎512 MiB
  • נפח אחסון זמני של ‎10 MiB

כדי להחליף את הערכים האלה, אפשר לציין את ההערה gke-parallelstore/[cpu-request|memory-request|cpu-limit|memory-limit|ephemeral-storage-request], כמו בדוגמה הבאה:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    gke-parallelstore/volumes: "true"
    gke-parallelstore/cpu-request: 500m
    gke-parallelstore/memory-request: 1Gi
    gke-parallelstore/ephemeral-storage-request: 500Mi
    gke-parallelstore/cpu-limit: 1000m
    gke-parallelstore/memory-limit: 2Gi
    gke-parallelstore/ephemeral-storage-limit: 1Gi

כדי להחליט כמה משאבים להקצות, כדאי לקחת בחשבון את הנקודות הבאות:

  • אם אחד מהערכים של הבקשה או המגבלה מוגדר והשני לא מוגדר, מערכת GKE מגדירה את שניהם לאותו ערך שצוין.
  • אם עומסי העבודה שלכם צריכים תפוקה גבוהה יותר, צריך להקצות יותר מעבד (CPU) לקונטיינר המשני (sidecar). אם המעבד לא מספיק חזק, יחול ויסות של קלט/פלט.
  • אפשר להשתמש בערך "0" כדי לבטל את ההגדרה של מגבלות משאבים באשכולות רגילים. לדוגמה, gke-parallelstore/memory-limit: "0" מסיר את מגבלת הזיכרון של קונטיינר ה-sidecar. האפשרות הזו שימושית כשאתם לא יכולים להחליט על כמות המשאבים שנדרשת ל-gke-parallelstore-sidecar עבור עומסי העבודה, ואתם רוצים לאפשר ל-sidecar לצרוך את כל המשאבים הזמינים בצומת.

יצירת עומס עבודה שמשתמש בנפח האחסון

בקטע הזה מוצגת דוגמה ליצירת Pod שמשתמש במשאב PersistentVolumeClaim שיצרתם קודם.

כמה Pods יכולים לחלוק את אותו משאב PersistentVolumeClaim.

  1. שומרים את המניפסט הבא בקובץ בשם my-pod.yaml.

      apiVersion: v1
      kind: Pod
      metadata:
        name: my-pod
      spec:
        containers:
        - name: nginx
          image: nginx
          volumeMounts:
            - name: parallelstore-volume
              mountPath: /data
        volumes:
        - name: parallelstore-volume
          persistentVolumeClaim:
            claimName: parallelstore-pvc
    
  2. מריצים את הפקודה הבאה כדי להחיל את המניפסט על האשכול:

      kubectl apply -f my-pod.yaml
    

    ה-Pod ממתין עד ש-GKE יקצה את PersistentVolumeClaim לפני שהוא מתחיל לפעול. השלמת הפעולה עשויה להימשך כמה דקות.

ניהול מנהל התקן CSI של Parallelstore

בקטע הזה מוסבר איך להפעיל ולהשבית את מנהל ההתקנים של Parallelstore CSI, אם צריך.

הפעלת מנהל התקן Parallelstore CSI באשכול חדש

כדי להפעיל את Parallelstore CSI driver כשיוצרים אשכול חדש מסוג Standard, מריצים את הפקודה הבאה באמצעות Google Cloud CLI:

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --network=NETWORK_NAME \
    --addons=ParallelstoreCsiDriver \
    --cluster-version=VERSION

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME: השם של האשכול.
  • LOCATION: אזור Compute Engine שמכיל את האשכול. צריך לציין אזור נתמך עבור מנהל התקן Parallelstore CSI.
  • NETWORK_NAME: השם של רשת ה-VPC שיצרתם בקטע הגדרת רשת VPC.
  • VERSION: מספר הגרסה של GKE. כדי להשתמש בתכונה הזו, צריך לציין מספר גרסה נתמך, כמו GKE מגרסה 1.29 ואילך. אפשר גם להשתמש בדגל --release-channel ולציין ערוץ הפצה.

הפעלת Parallelstore CSI driver באשכול קיים

כדי להפעיל את הדרייבר באשכול GKE Standard קיים, מריצים את הפקודה הבאה באמצעות Google Cloud CLI:

gcloud container clusters update CLUSTER_NAME \
  --location=LOCATION \
  --update-addons=ParallelstoreCsiDriver=ENABLED

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME : שם האשכול.
  • LOCATION: אזור Compute Engine שמכיל את האשכול. צריך לציין אזור נתמך עבור מנהל התקן Parallelstore CSI.

מוודאים שקלאסטר GKE פועל באותה רשת VPC שהגדרתם במאמר הגדרת רשת VPC. כדי לוודא את רשת ה-VPC של אשכול GKE, אפשר לבדוק במסוףCloud de Confiance או באמצעות הפקודה gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION).

השבתה של מנהל התקן Parallelstore CSI

אפשר להשבית את מנהל ההתקן של Parallelstore CSI באשכול Autopilot או באשכול רגיל קיים באמצעות Google Cloud CLI.

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --update-addons=ParallelstoreCsiDriver=DISABLED

מחליפים את מה שכתוב בשדות הבאים:

  • CLUSTER_NAME : שם האשכול.
  • LOCATION: אזור Compute Engine שמכיל את האשכול. צריך לציין אזור נתמך עבור מנהל התקן Parallelstore CSI.

שימוש ב-fsGroup עם נפחים של Parallelstore

מנהל התקן Parallelstore CSI תומך בשינוי הבעלות על קבוצה של ספריית רמת הבסיס של מערכת הקבצים המצורפת, כך שתתאים ל-fsGroup שצוין על ידי המשתמש ב-SecurityContext של ה-Pod. התכונה הזו נתמכת רק באשכולות GKE מגרסה 1.29.5 ואילך, או מגרסה 1.30.1 ואילך.

פתרון בעיות

הנחיות לפתרון בעיות מופיעות בדף פתרון בעיות במסמכי התיעוד של Parallelstore.

המאמרים הבאים