חיבור למופע קיים של Parallelstore מ-Google Kubernetes Engine

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

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

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

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

  • מפעילים את ממשק Google Kubernetes Engine API.
  • הפעלת Google Kubernetes Engine API
  • כדי להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את gcloud CLI. אם התקנתם בעבר את ה-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: מזהה הפרויקט ב- Google Cloud .
    • 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

    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: מזהה הפרויקט ב- Google Cloud .
    • 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: מזהה הפרויקט ב- Google Cloud .
    • 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 עם אפשרויות הרכבה שונות

הערה: התכונה הזו לא נתמכת בnode mounts.

אפשר לטעון את אותו מופע 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 של מנהל התקן Parallelstore CSI.

קובץ המניפסט הבא מציג דוגמה לאופן שבו יוצרים 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, או אם מציינים את ההערה , מנהל ההתקן של CSI מוסיף אוטומטית קונטיינר sidecar בשם  אל ה-Pod.gke-parallelstore/volumes: "true"gke-parallelstore-sidecar קונטיינר ה-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 שיצרתם קודם.

כמה פודים יכולים לחלוק את אותו משאב 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, אפשר לבדוק במסוףGoogle Cloud או באמצעות הפקודה gcloud container clusters describe $(CLUSTER) --format="value(networkConfig.network)" --location=$(LOCATION).

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

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

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

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

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

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

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

פתרון בעיות

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

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