במאמר הזה מוסבר איך ליצור עותק, או תמונת מצב, של נפח אחסון בנקודת זמן ספציפית עבור אפליקציית הקונטיינר. תמונת מצב של נפח מאפשרת לכם להחזיר נפח למצב קודם או להקצות נפח חדש.
המסמך הזה מיועד למפתחים בקבוצת מפעילים של אפליקציות, שאחראים ליצירת עומסי עבודה של אפליקציות בארגון שלהם. מידע נוסף זמין במאמר בנושא קהלים ב-GDC עם air gap.
לפני שמתחילים
כדי להשלים את המשימות שמתוארות במאמר הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.
שליחת בקשה לתפקידי IAM
כדי לקבל את ההרשאות שדרושות ליצירת תמונות מצב של נפח אחסון, צריך להיות לכם תפקידים ספציפיים. התפקידים שנדרשים לכם תלויים בסוג האשכול שבו אתם עובדים: אשכול שיתופי בהיקף הארגון או אשכול רגיל בהיקף הפרויקט. למידע נוסף, קראו את המאמר הגדרות של אשכול Kubernetes.
תפקידים משותפים באשכול
כדי ליצור, למחוק, לערוך או להציג תמונות מצב של נפח באשכול משותף, צריך לבקש מאדמין IAM בפרויקט להקצות לכם את התפקיד אדמין של מרחב שמות (namespace-admin).
התפקיד הזה משויך למרחב השמות של הפרויקט.
תפקידים סטנדרטיים באשכול
כדי ליצור, למחוק, לערוך או להציג תמונות מצב של נפח באשכול רגיל, צריך לבקש מאדמין IAM של הפרויקט להקצות לכם את התפקיד מפתח אשכול (cluster-developer). התפקיד הזה משויך למרחב השמות של הפרויקט.
הכנת הסביבה
כדי להריץ פקודות מול אשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:
מאתרים את שם אשכול Kubernetes או שואלים את אחד מחברי קבוצת האדמינים של הפלטפורמה מה שם האשכול.
נכנסים לחשבון ויוצרים את קובץ ה-kubeconfig לאשכול Kubernetes.
משתמשים בנתיב kubeconfig של אשכול Kubernetes כדי להחליף את
KUBERNETES_CLUSTER_KUBECONFIGבהוראות האלה.
יצירת תמונת מצב של נפח
כדי לצלם תמונה של אובייקט PersistentVolumeClaim, צריך ליצור אובייקט VolumeSnapshot. המערכת לא מבטיחה עקביות של הנתונים. להשהות את האפליקציה ולנקות את הנתונים לפני שמצלמים תמונת מצב.
יוצרים
VolumeSnapshotמשאב בהתאמה אישית:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: VOLUME_SNAPSHOT_NAME spec: source: persistentVolumeClaimName: PVC_NAME EOFמחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול.
NAMESPACE: מרחב השמות שבו רוצים ליצור את קובץ ה-snapshot של אמצעי האחסון. במקרה של אשכולות משותפים, זה חייב להיות מרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
VOLUME_SNAPSHOT_NAME: שם האובייקטVolumeSnapshot.
PVC_NAME: השם של ה-PVC שעבורו יוצרים snapshot.
פעולת יצירת התמונה תסתיים כשהערך של השדה
.status.readyToUseיהפוך ל-true. כדי לבדוק את הסטטוס, אפשר להשתמש בפקודה הבאה:kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \ -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'מעדכנים את המניפסט של ה-PVC עם תמונת מצב של נפח האחסון שצוינה כמקור נתונים:
kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \ --namespace NAMESPACE apply -f - <<EOF apiVersion: v1 kind: PersistentVolumeClaim metadata: name: PVC_NAME spec: dataSource: name: VOLUME_SNAPSHOT_NAME kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io storageClassName: standard-rwo accessModes: - ReadWriteOnce resources: requests: storage: 10Gi EOFמחליפים את מה שכתוב בשדות הבאים:
KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול.
NAMESPACE: מרחב השמות שבו קיים משאב ה-PVC. במקרה של אשכולות משותפים, זה חייב להיות מרחב שמות של פרויקט. במקרים של אשכולות רגילים, אפשר להשתמש בכל מרחב שמות.
PVC_NAME: השם של ה-PVC שעבורו יוצרים snapshot.
VOLUME_SNAPSHOT_NAME: השם של תמונת המצב של אמצעי האחסון.