במדריך הזה מוסבר איך להתחבר למופע Parallelstore קיים באמצעות דרייבר ה-CSI של GKE Parallelstore עם הקצאת משאבים סטטית. כך תוכלו לגשת למופעים קיימים של Parallelstore שמנוהלים באופן מלא כאל אמצעי אחסון לעומסי עבודה עם שמירת מצב, בצורה מבוקרת וצפויה.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:
- מפעילים את Parallelstore API ואת Google Kubernetes Engine API. הפעלת ממשקי API
- אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- במאמר סקירה כללית על מנהל התקן CSI מפורטות ההגבלות והדרישות.
- אם עוד לא עשיתם זאת, צרו מופע של Parallelstore.
- הגדרת רשת VPC.
- אם רוצים להשתמש באשכול GKE Standard, צריך להפעיל את מנהל ההתקן של CSI.
גישה למופע Parallelstore קיים באמצעות מנהל התקנים של Parallelstore CSI
אם כבר הקציתם מופע Parallelstore באותה רשת כמו אשכול GKE, תוכלו לפעול לפי ההוראות האלה כדי להקצות באופן סטטי PersistentVolume שמפנה למופע שלכם.
בקטעים הבאים מתואר התהליך הטיפוסי לגישה למופע Parallelstore קיים באמצעות מנהל התקן Parallelstore CSI:
- יוצרים PersistentVolume שמפנה למופע Parallelstore.
- משתמשים ב-PersistentVolumeClaim כדי לגשת לנפח האחסון.
- (אופציונלי) הגדרת משאבים עבור מאגר ה-sidecar.
- יוצרים עומס עבודה שמשתמש בנפח האחסון.
יצירת PersistentVolume
בקטע הזה מוצגת דוגמה לאופן שבו אפשר ליצור PersistentVolume שמפנה למופע Parallelstore קיים.
מריצים את הפקודה הבאה כדי לאתר את מופע 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שומרים את המניפסט הבא בקובץ בשם
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.
מריצים את הפקודה הבאה כדי ליצור את 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 שיצרתם קודם.
שומרים את המניפסט הבא בקובץ בשם
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.
מריצים את הפקודה הבאה כדי ליצור את PersistentVolumeClaim:
kubectl create -f parallelstore-pvc.yaml
(אופציונלי) הגדרת משאבים עבור קובץ ה-sidecar
כשיוצרים 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.
שומרים את המניפסט הבא בקובץ בשם
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מריצים את הפקודה הבאה כדי להחיל את המניפסט על האשכול:
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.
המאמרים הבאים
- למסמכי העזרה של Parallelstore CSI
- איך משתמשים בספריית היירוט Parallelstore כדי לשפר את הביצועים של עומסי עבודה
- איך מעבירים נתונים ל-Parallelstore מ-Cloud Storage
- איך משתמשים ב-GKE Volume Populator כדי להעביר נתונים באופן אוטומטי מאחסון מקור בקטגוריה של Cloud Storage לאחסון יעד מסוג PersistentVolumeClaim שמגובה על ידי מופע Parallelstore.
- כדאי לנסות את המדריך לאימון מודל TensorFlow באמצעות Keras ב-GKE.