במדריך הזה מוסבר איך להתחבר למופע 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 לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.
- במאמר סקירה כללית על מנהל התקן 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: מזהה הפרויקט ב- 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שומרים את המניפסט הבא בקובץ בשם
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.
מריצים את הפקודה הבאה כדי ליצור את 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 של מנהל התקן Parallelstore CSI.
קובץ המניפסט הבא מציג דוגמה לאופן שבו יוצרים 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, או אם מציינים את ההערה , מנהל ההתקן של 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.
שומרים את המניפסט הבא בקובץ בשם
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, אפשר לבדוק במסוף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.
המאמרים הבאים
- למסמכי העזרה של Parallelstore CSI
- איך משתמשים בספריית היירוט Parallelstore כדי לשפר את הביצועים של עומסי עבודה
- איך מעבירים נתונים ל-Parallelstore מ-Cloud Storage
- איך משתמשים ב-GKE Volume Populator כדי להעביר נתונים באופן אוטומטי מאחסון מקור בקטגוריית Cloud Storage לאחסון יעד PersistentVolumeClaim שמגובה על ידי מופע Parallelstore.
- כדאי לנסות את המדריך לאימון מודל TensorFlow עם Keras ב-GKE.