במדריך הזה מוסבר איך להתחבר למכונה קיימת של Managed Lustre באמצעות מנהל ההתקן של Managed Lustre CSI. כך אתם יכולים לגשת למכונות Managed Lustre קיימות בתור אמצעי אחסון לעומסי העבודה עם שמירת המצב, בצורה מבוקרת וצפויה.
תמיכה ב-multi-NIC לרשתות עם ביצועים גבוהים
באשכולות GKE שפועלים בגרסה 1.35.2-gke.1842000 ואילך, מנהל ההתקן של Managed Lustre CSI מופעל כברירת מחדל כדי להשתמש בכל כרטיסי הרשת (NIC) הזמינים להגדלת קצב הנתונים. התמיכה הזו צוברת רוחב פס על ידי פיזור תעבורת הנתונים של אחסון TCP בין ממשקי הרשת.
כדי להשתמש בתמיכה ב-multi-NIC, הצמתים צריכים לעמוד בדרישות הבאות:
- כרטיסי רשת רגילים ל-TCP: הצמתים צריכים להשתמש בכרטיסי רשת רגילים, כמו כרטיס רשת וירטואלי של Google (gVNIC) או VirtIO-Net, כדי לטפל בתעבורת הנתונים של האחסון ב-TCP.
- אותו VPC: כל כרטיסי ה-NIC הרגילים חייבים להיות באותה רשת VPC.
- שיקולי RDMA: אפשר גם לצרף לצמתים כרטיסי רשת (NIC) של RDMA, אבל מנהל ההתקן של Managed Lustre CSI משתמש רק בכרטיסי הרשת הרגילים לתעבורת נתונים של אחסון TCP.
אם רוצים להשבית את התמיכה ב-multi-NIC, אפשר לעיין במאמר השבתת multi-NIC ל-Lustre.
יציאות תקשורת של Lustre
מנהל התקן ה-CSI של GKE Managed Lustre משתמש ביציאות שונות כדי לתקשר עם מכונות Managed Lustre, בהתאם לגרסת אשכול GKE ולהגדרות הקיימות של Managed Lustre.
יציאת ברירת המחדל (מומלץ): באשכולות GKE חדשים שמריצים את גרסה
1.33.2-gke.4780000ואילך, מנהל ההתקן משתמש ביציאה988לתקשורת Lustre כברירת מחדל.יציאה מדור קודם (הוצאה משימוש): משתמשים ביציאה
6988על ידי הוספת הדגל--enable-legacy-lustre-portלפקודותgcloudבתרחישים הבאים:- גרסאות קודמות של GKE: אם באשכול GKE פועלת גרסה שקודמת ל-
1.33.2-gke.4780000, הדגל--enable-legacy-lustre-portעוקף התנגשות בין יציאות לביןgke-metadata-serverבצומתי GKE. - מכונות Lustre קיימות: אם אתם מתחברים למכונה קיימת של Managed Lustre שנוצרה עם הדגל
gke-support-enabled, אתם עדיין צריכים לכלול את--enable-legacy-lustre-portבפקודותgcloud, בלי קשר לגרסת האשכול. בלי הדגל הזה, אשכול GKE לא יצליח לטעון את מכונת Lustre הקיימת.
- גרסאות קודמות של GKE: אם באשכול GKE פועלת גרסה שקודמת ל-
אתם יכולים להגדיר את האשכולות החדשים והקיימים כך שישתמשו ביציאת ברירת המחדל 988 או ביציאה הקודמת 6988.
לפני שמתחילים
לפני שמתחילים, חשוב לוודא שביצעתם את המשימות הבאות:
- מפעילים את Google Cloud Managed Lustre API ואת Google Kubernetes Engine API. הפעלת ממשקי ה-API
- כדי להשתמש ב-Google Cloud CLI למשימה הזו, מתקינים ואז מאתחלים את ה-CLI של gcloud. אם כבר התקנתם את ה-CLI של gcloud, הריצו את הפקודה
gcloud components updateכדי לקבל את הגרסה העדכנית. יכול להיות שבגרסאות קודמות של ה-CLI של gcloud אי אפשר להריץ את הפקודות שבמסמך הזה.
- למידע על המגבלות והדרישות, קראו את המאמר מידע על מנהל ההתקן של Google Cloud Managed Lustre CSI.
- חשוב לוודא שהפעלתם את מנהל ההתקן של Managed Lustre CSI. היא מושבתת כברירת מחדל באשכולות Standard ו-Autopilot.
הגדרת משתני סביבה
מגדירים את משתני הסביבה הבאים:
export CLUSTER_NAME=CLUSTER_NAME
export PROJECT_ID=PROJECT_ID
export NETWORK_NAME=LUSTRE_NETWORK
export LOCATION=ZONE
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
PROJECT_ID: מזהה הפרויקט ב- Google Cloud . -
LUSTRE_NETWORK: הרשת המשותפת של הענן הווירטואלי הפרטי שבה נמצאים גם אשכול GKE וגם המכונה של Managed Lustre. -
ZONE: האזור הגיאוגרפי של אשכול GKE, לדוגמהus-central1-a.
הגדרת מנהל ההתקן של Managed Lustre CSI
בקטע הזה מוסבר איך להפעיל ולהשבית את מנהל ההתקן של Managed Lustre CSI.
הפעלת מנהל ההתקן של Managed Lustre CSI באשכול GKE חדש
בקטעים הבאים מוסבר איך להפעיל את מנהל ההתקן של Managed Lustre CSI באשכול GKE חדש.
שימוש ביציאת ברירת המחדל 988
כדי להפעיל את מנהל ההתקן של Managed Lustre CSI כשיוצרים אשכול GKE חדש שפועל בגרסה 1.33.2-gke.4780000 ואילך, מריצים את הפקודה הבאה:
טייס אוטומטי
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver
רגילה
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver
שימוש ביציאה מדור קודם 6988
כדי להפעיל את מנהל ההתקן של Managed Lustre CSI כשיוצרים אשכול GKE חדש שפועל בגרסה שקודמת ל-1.33.2-gke.4780000, מריצים את הפקודה הבאה:
טייס אוטומטי
gcloud container clusters create-auto "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--enable-lustre-csi-driver \
--enable-legacy-lustre-port
רגילה
gcloud container clusters create "${CLUSTER_NAME}" \
--location=${LOCATION} \
--network="${NETWORK_NAME}" \
--cluster-version=${CLUSTER_VERSION} \
--addons=LustreCsiDriver \
--enable-legacy-lustre-port
הפעלת מנהל ההתקן של Managed Lustre CSI באשכולות GKE קיימים
בקטעים הבאים מוסבר איך להפעיל את מנהל ההתקן של Managed Lustre CSI באשכולות GKE קיימים.
שימוש ביציאת ברירת המחדל 988
כדי להפעיל את מנהל ההתקן של Managed Lustre CSI באשכול GKE קיים שפועל בגרסה 1.33.2-gke.4780000 ואילך, מריצים את הפקודה הבאה:
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=ENABLED
שימוש ביציאה מדור קודם 6988
כדי להפעיל את מנהל ההתקן של Managed Lustre CSI באשכול GKE קיים, יכול להיות שתצטרכו להשתמש ביציאה הקודמת 6988 על ידי הוספת הדגל --enable-legacy-lustre-port. חובה להשתמש בדגל הזה בתרחישים הבאים:
- אם אשכול GKE פועל בגרסה שקודמת ל-
1.33.2-gke.4780000. אם אתם מתכוונים לחבר את האשכול הזה למכונה קיימת של Managed Lustre שנוצרה עם הדגל
gke-support-enabled.gcloud container clusters update ${CLUSTER_NAME} \ --location=${LOCATION} \ --enable-legacy-lustre-port
צריך לשדרג את הצמתים באשכולות הקיימים
הפעלת מנהל ההתקן של Managed Lustre CSI באשכולות קיימים יכולה להפעיל יצירה מחדש של צמתים כדי לעדכן את מודולי הליבה (kernel) הנדרשים ללקוח Managed Lustre. כדי שהגרסה תהיה זמינה באופן מיידי, מומלץ לשדרג ידנית את מאגרי הצמתים.
אשכולות GKE בערוץ הפצה משודרגים בהתאם להשקה המתוזמנת שלהם, שיכולה להימשך כמה שבועות בהתאם לחלון הזמן לתחזוקה. אם אתם משתמשים בגרסה סטטית של GKE, אתם צריכים לשדרג ידנית את מאגרי הצמתים.
עד שהשדרוג של הצומת יושלם, יכול להיות ש-Pod של מנהל ההתקן של CSI יקרוס בלולאה בצמתים שממתינים לעדכון. אם מופיעה השגיאה Operation not permitted ביומני ה-Pod של מנהל ההתקן של CSI, צריך לשדרג את הצומת או ליצור אותו מחדש.
אחרי השדרוג של מאגר הצמתים, יכול להיות שצמתי המעבד (CPU) יופיעו עם תמונת GPU במסוף Google Cloud או בפלט של ה-CLI. זו התנהגות רגילה. המערכת משתמשת שוב בקובץ האימג' של ה-GPU בצומתי ה-CPU כדי להתקין באופן מאובטח את מודולי הליבה (kernel) של Managed Lustre. לא תחויבו על השימוש ב-GPU.
(אופציונלי) יצירת מאגר צמתים multi-NIC
כדי להשתמש ברשתות עם ביצועים גבוהים, צריך ליצור מאגר צמתים עם סוג מכונה שתומך בכמה ממשקי רשת. התמיכה ב-multi-NIC מופעלת כברירת מחדל באשכולות GKE שפועלים בגרסה 1.35.2-gke.1842000 ואילך. חשוב לוודא שממשקי הרשת המשניים נמצאים באותה רשת VPC כמו הממשק הראשי.
מריצים את הפקודה הבאה:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--machine-type=MACHINE_TYPE \
--enable-gvnic \
--additional-node-network network=NETWORK_NAME,subnetwork=SECONDARY_SUBNET
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים. -
CLUSTER_NAME: שם האשכול. -
LOCATION: האזור או התחום של האשכול. -
MACHINE_TYPE: סוג המכונה של מאגר הצמתים, למשלa3-megagpu-8g, שמשמש לעיתים קרובות עם multi-NIC לביצועים גבוהים. יש תמיכה ב-multi-NIC בכל סוגי המכונות. -
NETWORK_NAME: השם של רשת ה-VPC. -
SECONDARY_SUBNET: השם של רשת המשנה המשנית.
השבתת multi-NIC ב-Lustre
למרות שמומלץ להשתמש בתמיכה ב-multi-NIC לעומסי עבודה עם ביצועים גבוהים, יכול להיות שתרצו להשבית אותה בתרחישים ספציפיים. לדוגמה, יכול להיות שלא תרצו לפזר את התנועה של Lustre בין כל ממשקי החומרה הזמינים, או שתצטרכו לבודד בעיות קישוריות לנתיב רשת יחיד כדי לפתור בעיות.
הערה: אם אתם משביתים את התמיכה ב-multi-NIC בצמתים פעילים, יכול להיות שתצטרכו ליצור מחדש או לשדרג ידנית את מאגרי הצמתים כדי שהשינוי ייכנס לתוקף.
לאשכול
כדי להשבית את הרשתות עם הביצועים הגבוהים בכל האשכול, משתמשים בדגל --disable-multi-nic-lustre כשיוצרים או מעדכנים את האשכול. לדוגמה:
gcloud container clusters update CLUSTER_NAME \
--location=LOCATION \
--disable-multi-nic-lustre
מחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER_NAME: שם האשכול. -
LOCATION: האזור או התחום של האשכול.
למאגר צמתים
כדי להשבית את הרשתות עם הביצועים הגבוהים במאגר צמתים ספציפי, מעדכנים את מאגר הצמתים ומגדירים את התווית lustre.csi.storage.gke.io/multi-nic לערך false:
gcloud container node-pools update NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--zone=LOCATION \
--node-labels=lustre.csi.storage.gke.io/multi-nic=false
מחליפים את מה שכתוב בשדות הבאים:
-
NODE_POOL_NAME: השם של מאגר הצמתים. -
CLUSTER_NAME: שם האשכול. -
LOCATION: האזור של האשכול.
השבתת מנהל ההתקן של Managed Lustre CSI
אפשר להשבית את מנהל התקן ה-CSI של Managed Lustre באשכול GKE קיים באמצעות Google Cloud CLI.
gcloud container clusters update ${CLUSTER_NAME} \
--location=${LOCATION} \
--update-addons=LustreCsiDriver=DISABLED
אחרי השבתת מנהל ההתקן של CSI, GKE יוצר מחדש באופן אוטומטי את הצמתים ומסיר את מודולי הליבה (kernel) של Managed Lustre.
גישה למכונה קיימת של Managed Lustre באמצעות מנהל התקן ה-CSI של Managed Lustre
אם כבר הקציתם מכונה של Managed Lustre באותה רשת של אשכול GKE, אתם יכולים לפעול לפי ההוראות הבאות כדי להקצות באופן סטטי PersistentVolume שמפנה למכונה.
בקטעים הבאים מתואר התהליך הרגיל לגישה למכונה קיימת של Managed Lustre באמצעות מנהל ההתקן של Managed Lustre CSI:
- יוצרים PersistentVolume שמפנה למכונה של Managed Lustre.
- שימוש ב-PersistentVolumeClaim כדי לגשת לנפח האחסון.
- יוצרים עומס עבודה שמשתמש בנפח האחסון.
יצירת PersistentVolume
כדי לאתר את המכונה של Managed Lustre, מריצים את הפקודה הבאה.
gcloud lustre instances list \ --project=${PROJECT_ID} \ --location=${LOCATION}הפלט אמור להיראות כך: לפני שתמשיכו לשלב הבא, חשוב לרשום את השדות Managed Lustre instance name, filesystem ו-mountPoint.
capacityGib: '9000' createTime: '2025-04-28T22:42:11.140825450Z' filesystem: testlfs gkeSupportEnabled: true mountPoint: 10.90.1.4@tcp:/testlfs name: projects/my-project/locations/us-central1-a/instances/my-lustre network: projects/my-project/global/networks/default perUnitStorageThroughput: '1000' state: ACTIVE updateTime: '2025-04-28T22:51:41.559098631Z'שומרים את המניפסט הבא בקובץ בשם
lustre-pv.yaml:apiVersion: v1 kind: PersistentVolume metadata: name: lustre-pv spec: storageClassName: "STORAGE_CLASS_NAME" capacity: storage: 9000Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem claimRef: namespace: default name: lustre-pvc csi: driver: lustre.csi.storage.gke.io volumeHandle: "PROJECT_ID/LOCATION/INSTANCE_NAME" volumeAttributes: ip: IP_ADDRESS filesystem: FILESYSTEMמחליפים את מה שכתוב בשדות הבאים:
-
storageClassName: השם של StorageClass. הערך יכול להיות מחרוזת ריקה, אבל הוא חייב לעמוד במפרט של PersistentVolumeClaim. -
volumeHandle: המזהה של אמצעי האחסון הזה.- PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
- LOCATION: המיקום של מכונת Lustre באזור. צריך לציין אזור נתמך למנהל ההתקן של Managed Lustre CSI.
- INSTANCE_NAME: השם של מכונת Lustre.
-
ip: כתובת ה-IP של מכונת Lustre. מקבלים את זה מהשדהmountPointבפלט של הפקודה הקודמת. -
filesystem: השם של מערכת הקבצים במכונה של Managed Lustre.
הרשימה המלאה של השדות שנתמכים באובייקט PersistentVolume מופיעה במאמרי העזרה של מנהל ההתקן של Managed Lustre CSI.
-
מריצים את הפקודה הבאה כדי ליצור את PersistentVolume:
kubectl apply -f lustre-pv.yaml
שימוש ב-PersistentVolumeClaim כדי לגשת לאמצעי האחסון
אתם יכולים ליצור משאב PersistentVolumeClaim שמפנה ל-StorageClass של מנהל ההתקן של Managed Lustre CSI.
קובץ המניפסט הבא מראה דוגמה ליצירת PersistentVolumeClaim בReadWriteMany
access mode , שמפנה ל-StorageClass שיצרתם קודם.
שומרים את המניפסט הבא בקובץ בשם
lustre-pvc.yaml:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: lustre-pvc spec: accessModes: - ReadWriteMany storageClassName: "STORAGE_CLASS_NAME" volumeName: lustre-pv resources: requests: storage: STORAGE_SIZEמחליפים את STORAGE_SIZE בנפח האחסון, לדוגמה
9000Gi. הוא צריך להתאים למפרט ב-PersistentVolume.כדי ליצור את PersistentVolumeClaim, מריצים את הפקודה הבאה:
kubectl create -f lustre-pvc.yaml
יצירת עומס עבודה שצורך את הנפח
בקטע הזה מוסבר איך ליצור Pod שמשתמש במשאב PersistentVolumeClaim שיצרתם קודם.
כמה Pods יכולים לשתף את אותו משאב PersistentVolumeClaim.
שומרים את המניפסט הבא בקובץ בשם
my-pod.yaml.apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: nginx image: nginx volumeMounts: - name: lustre-volume mountPath: /data volumes: - name: lustre-volume persistentVolumeClaim: claimName: lustre-pvcמריצים את הפקודה הבאה כדי להחיל את המניפסט על האשכול:
kubectl apply -f my-pod.yamlה-Pod ממתין עד ש-GKE יקצה את ה-PersistentVolumeClaim לפני שהוא מתחיל לפעול. הפעולה הזו עשויה להימשך כמה דקות.
מוודאים שה-Pod פועל:
kubectl get podsיכול להיות שיעברו כמה דקות עד שה-Pod יגיע למצב
Running.הפלט אמור להיראות כך:
NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 11s
שימוש ב-fsGroup עם אמצעי אחסון של Managed Lustre
אתם יכולים לשנות את הבעלות על הקבוצה של ספריית הרמה הבסיסית (root) של מערכת הקבצים שנטענה, כך שתתאים ל-fsGroup שביקש המשתמש וצוין ב-SecurityContext של ה-Pod.
פתרון בעיות
בדף פתרון הבעיות שבמסמכי התיעוד של Managed Lustre מוסבר איך לפתור בעיות.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud , מחקו את משאבי האחסון שיצרתם במדריך הזה.
מוחקים את ה-Pod ואת ה-PersistentVolumeClaim.
kubectl delete pod my-pod kubectl delete pvc lustre-pvcבודקים את הסטטוס של PersistentVolume. אחרי שמוחקים את ה-Pod ואת ה-PersistentVolumeClaim, ה-PersistentVolume אמור לדווח על מצב Released:
kubectl get pvהפלט אמור להיראות כך:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Released default/preprov-pvc 2m28sשימוש חוזר ב-PersistentVolume. כדי להשתמש שוב ב-PersistentVolume, צריך להסיר את ההפניה לבקשה (
claimRef):kubectl patch pv lustre-pv --type json -p '[{"op": "remove", "path": "/spec/claimRef"}]'עכשיו הסטטוס של PersistentVolume אמור להיות Available, כלומר הוא מוכן לקישור ל-PersistentVolumeClaim חדש. בודקים את הסטטוס של PersistentVolume:
kubectl get pvהפלט אמור להיראות כך:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE lustre-pv 9000Gi RWX Retain Available 19mאם לא צריך יותר את PersistentVolume, מוחקים אותו. אם אין יותר צורך ב-PersistentVolume, מוחקים אותו:
kubectl delete pv lustre-pvמחיקת PersistentVolume לא מסירה את המכונה הבסיסית של Managed Lustre.