במאמר הזה מוסבר איך להשתמש בכלי להעברת CSI של StatefulSet כדי להעביר עומסי עבודה עם שמירת מצב מתוסף נפח vSphere בתוך העץ אל מנהל התקן vSphere CSI ב-Google Distributed Cloud.
ברשימה הבאה מוצג שלב ההשקה של הכלי הזה לכל גרסה:
- גרסה 1.0: זמינות כללית
- גרסה 0.1: תצוגה מקדימה
גרסאות נתמכות של Google Distributed Cloud: 1.30 עד 1.28.
סקירה כללית
Google Distributed Cloud משתלב עם מערכות חיצוניות לאחסון בלוקים או קבצים באמצעות אחסון VMware vSphere, תוספים (או 'מנהלי התקנים') של נפחי אחסון בתוך העץ של Kubernetes ומנהלי התקנים של Container Storage Interface (CSI).
התכונה Kubernetes CSI migration מופעלת כברירת מחדל בגרסה 1.15, ולכן PersistentVolume שמגובה על ידי הפלאגין in-tree vSphere volume ממשיך לפעול בסביבה שכוללת CSI בלבד. תכונת ההעברה של CSI מפנה קריאות לפעולות של פלאגין בתוך העץ אל מנהל ההתקן של CSI. מכיוון שאי אפשר לשנות את המפרט של PersistentVolume, הוא עדיין מגובה על ידי הפלאגין בתוך העץ. קבוצת התכונות הזמינות זהה לזו של פלאגין נפח בתוך העץ.
הסט המלא של תכונות CSI, כמו הרחבת נפח וצילום מצב של נפח, לא זמין עבור נפחים כאלה. כדי ליהנות מהתכונות האלה, צריך להעביר את עומסי העבודה עם שמירת מצב באופן מלא ל-CSI, על ידי יצירה מחדש של PersistentVolumes שמגובה על ידי מנהל ההתקן vSphere CSI. אתם יכולים להשתמש בכלי להעברת נתונים של CSI כדי להעביר עומסי עבודה עם שמירת מצב ל-CSI ולהשתמש בכל התכונות של CSI.
הכלי הזה מאפשר לבצע העברה מתגלגלת של PersistentVolume ו-PersistentVolumeClaim של StatefulSet ל-CSI, והוא לא כולל השבתה של האפליקציה. הכלי הזה מגבה את משאבי Kubernetes בספרייה מקומית ומגדיר את ReclaimPolicy ל-Retain לפני ההעברה. לכן לא יהיה אובדן נתונים.
מגבלה
הכלים האוטומטיים נתמכים רק בגרסאות של Google Distributed Cloud שהן נתמכות באופן מלא.
היא פועלת רק עם StatefulSets. אפשר להריץ בדיקות קדם-הפעלה באמצעות הכלי, כדי לבצע כמה בדיקות אבטחה לפני השימוש בכלים.
./statefulset-csi-migration-tool preflight \
--kubeconfig ADMIN_KUBECONFIG \
--cluster-name USER_CLUSTER_NAME \
--sts-name STS_NAME \
--sts-namespace STS_NAMESPACE \
--intree-storageclass INTREE_STORAGECLASS \
--csi-storageclass CSI_STORAGECLASS
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
USER_CLUSTER_NAME: אם ה-StatefulSet פועל באשכול המשתמשים, צריך לציין את שם אשכול המשתמשים. אם עומס העבודה פועל באשכול האדמין, אפשר לדלג על הדגל הזה.
STS_NAME: השם של StatefulSet.
STS_NAMESPACE: מרחב השמות של StatefulSet.
INTREE_STORAGECLASS: שם ה-StorageClass בתוך העץ שמגבה את ה-PersistentVolume של ה-StatefulSet.
CSI_STORAGECLASS: השם של CSI StorageClass שתומך ב-PersistentVolume של StatefulSet אחרי המיגרציה.
הורדה
מורידים את הכלי בכתובת gs://gke-on-prem-release/statefulset-csi-migration-tool/v1.0/statefulset-csi-migration-tool.
הערה: הכלי הזה נמצא בגרסת טרום-השקה.
התהליך
בקטע הזה מפורטים השלבים הנדרשים להעברת StatefulSet מ-vSphere בתוך העץ vCP מנהל הקצאות פנימי (kubernetes.io/vsphere-volume) אל vSphere CSI מנהל הקצאות (csi.vsphere.vmware.com).
./statefulset-csi-migration-tool rolling-migration all \
--kubeconfig ADMIN_KUBECONFIG \
--cluster-name USER_CLUSTER_NAME \
--sts-name STS_NAME \
--sts-namespace STS_NAMESPACE \
--intree-storageclass INTREE_STORAGECLASS \
--csi-storageclass CSI_STORAGECLASS \
--working-directory WORKING_DIRECTORY
מחליפים את מה שכתוב בשדות הבאים:
ADMIN_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין.
USER_CLUSTER_NAME: אם ה-StatefulSet פועל באשכול המשתמשים, צריך לציין את שם אשכול המשתמשים. אם עומס העבודה פועל באשכול האדמין, אפשר לדלג על הדגל הזה.
STS_NAME: השם של StatefulSet.
STS_NAMESPACE: מרחב השמות של StatefulSet.
INTREE_STORAGECLASS: שם ה-StorageClass בתוך העץ שמגבה את ה-PersistentVolume של ה-StatefulSet.
CSI_STORAGECLASS: השם של CSI StorageClass שתומך ב-PersistentVolume של StatefulSet אחרי המיגרציה.
WORKING_DIRECTORY: הספרייה המקומית לשמירת מפרט משאב Kubernetes של StatefulSet וה-Pod שלו, PersistentVolumeClaim ו-PersistentVolume. שם הספרייה חייב להיות ייחודי לכל StatefulSet. הספרייה הזו צריכה להיות ריקה או לא להתקיים. מומלץ לא ליצור את הספרייה הזו כדי שהכלי יוכל ליצור אותה בשבילכם.
הפקודה הזו מבצעת את המשימות הבאות:
מגבה את StatefulSet ואת התלויות שלו כמו PersistentVolume, PersistentVolumeClaim ומפרטי רפליקות של Pod בספריית העבודה המקומית.
מוחק את StatefulSet עם מדיניות מחיקה של יתומים. בשלב הזה נמחק רק ה-StatefulSet, אבל לא התלויות שלו כמו העתקים של Pod, PersistentVolume ו-PersistentVolumeClaim.
מעבירה כל Pod ל-CSI drivers (בדומה לאפשרות 1), ומבצעת את הפעולות הבאות:
א. הגדרת השדה ReclaimPolicy של PersistentVolume כ-Retain.
ב. מחיקת ה-Pod, נפח האחסון המתמיד והבקשה לנפח אחסון מתמיד.
ג. המערכת ממירה את קובץ ה-VMDK הקיים ל-FCD.
ד. יוצר מחדש את נפח האחסון המתמיד, את בקשת נפח האחסון המתמיד ואת ה-Pod.
מחדש את ה-StatefulSet, אבל השדה PVCTemplate במפרט שלו מצביע על CSI StorageClass. הבקר StatefulSet צריך למפות שוב את העותקים המשוכפלים היתומים.