גישה לאחסון מתמיד

אחסון מתמיד ב-Google Distributed Cloud (GDC)‎ עם air gap מאפשר לשמור נתונים של קונטיינרים בלי קשר למחזורי החיים של pod. אתם יכולים להצהיר על נפחים באמצעות משאבי PersistentVolumeClaim (PVC) ולהרחיב את הקיבולת כדי לשמור על המצב בכל הפעלה מחדש ותזמון מחדש.

המסמך הזה מיועד למפתחים בקבוצת מפעילי האפליקציות שיוצרים עומסי עבודה בארגון. מידע נוסף זמין במאמר קהלי היעד של מסמכי התיעוד של GDC עם air gap.

לפני שמתחילים

כדי להשלים את המשימות שבמסמך הזה, צריך לבקש את ההרשאות הנדרשות ולהכין את הסביבה.

בקשת תפקידים ב-IAM

כדי לקבל את ההרשאות שנדרשות לגישה לאחסון מתמיד, צריך שיהיו לכם תפקידים ספציפיים. התפקידים שאתם צריכים תלויים בשאלה אם אתם עובדים באשכול משותף ברמת הארגון או באשכול רגיל ברמת הפרויקט. מידע נוסף זמין במאמר הגדרות של אשכול Kubernetes.

תפקידים משותפים באשכול

כדי ליצור, למחוק, לערוך או להציג נפחים קבועים באשכול משותף, בקשו מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקיד אדמין של מרחב שמות (namespace-admin). התפקיד הזה קשור למרחב השמות של הפרויקט.

תפקידים רגילים באשכול

כדי ליצור, למחוק, לערוך או להציג אמצעי אחסון קבועים באשכול רגיל, צריך לבקש מהאדמין של הפרויקט ב-IAM להקצות לכם את התפקיד מפתח אשכולות (cluster-developer). התפקיד הזה קשור למרחב השמות של הפרויקט.

הכנת הסביבה

כדי להריץ פקודות באשכול Kubernetes באמצעות ה-API, צריך לוודא שיש לכם את המשאבים הבאים:

  • מאתרים את שם האשכול של Kubernetes, או שואלים חבר בקבוצת האדמינים של הפלטפורמה מה שם האשכול.

  • נכנסים לחשבון ויוצרים את קובץ kubeconfig לאשכול Kubernetes.

  • בהוראות הבאות, מחליפים את KUBERNETES_CLUSTER_KUBECONFIG בנתיב kubeconfig של אשכול Kubernetes.

יצירת אמצעי אחסון מתמיד (persistent volume)

בהוראות הבאות מוסבר איך ליצור נפח באמצעות standard-rwo StorageClass של GDC. מידע נוסף על משאבי StorageClass שזמינים ב-GDC מופיע במאמר אחסון מתמיד לקונטיינרים.

  1. יוצרים משאב PersistentVolumeClaim ‏ (PVC) ומגדירים אותו עם מצב גישה ReadWriteOnce וסוג אחסון standard-rwo:

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: PVC_NAME
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi
      storageClassName: standard-rwo
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול.

    • ‫NAMESPACE: מרחב השמות שבו יוצרים את ה-PVC. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.

    • ‫PVC_NAME: השם של האובייקט PersistentVolumeClaim.

  2. מוודאים שאובייקט ה-PVC זמין:

    kubectl get pvc --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE
    

    הפלט אמור להיראות כך:

    NAME       CAPACITY   ACCESS MODES   STATUS      CLAIM     STORAGECLASS   AGE
    pvc-uuid   10Gi       RWO            Bound       pvc-name  standard-rwo   60s
    
  3. מגדירים את עומסי העבודה של הקונטיינר כך שישתמשו ב-PVC. הדוגמה הבאה היא של pod של nginx שמשתמש ב-PVC של standard-rwo:

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server-deployment
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
        - mountPath: /usr/share/nginx/html
          name: data
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: PVC_NAME
    EOF
    

    מחליפים את PVC_NAME ב-PVC שיצרתם.

הרחבת קיבולת הנפח

כדי להגדיל את הקיבולת של אובייקט PersistentVolumeClaim, מעדכנים את השדה spec.resources.storage לקיבולת החדשה. גודל הנפח המקסימלי שנתמך הוא 14.5Ti.

  1. מעדכנים את הנפח לגודל גדול יותר בקובץ המניפסט של האובייקט PersistentVolumeClaim:

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: PVC_NAME
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: VOLUME_STORAGE_SIZE
    EOF
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫KUBERNETES_CLUSTER_KUBECONFIG: קובץ ה-kubeconfig של האשכול.

    • ‫NAMESPACE: מרחב השמות שבו נמצא משאב ה-PVC. באשכולות משותפים, צריך להשתמש במרחב שמות של פרויקט. באשכולות רגילים, זה יכול להיות כל מרחב שמות.

    • ‫PVC_NAME: השם של ה-PVC שאתם מגדילים את נפח האחסון שלו.

    • ‫VOLUME_SNAPSHOT_SIZE: נפח האחסון שרוצים להוסיף, למשל 50Gi.

  2. בודקים את הסטטוס של ה-PV המעודכנים באשכול:

    kubectl get pv --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
    

המאמרים הבאים