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

בדף הזה מוסבר איך ליצור ולנהל אחסון מתמיד לעומסי עבודה של קונטיינרים ביקום הריבוני המבודד של Google Distributed Cloud ‏ (GDC). אחסון קבוע מספק לאפליקציה זהויות עקביות ושמות מארחים יציבים, ללא קשר למיקום שבו מתוזמנים עומסי העבודה שלה.

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

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

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

שליחת בקשה לתפקידי IAM

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

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

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

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

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

הכנת הסביבה

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

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

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

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

יצירת נפח אחסון מתמיד

בהוראות הבאות מוסבר איך ליצור אמצעי אחסון באמצעות GDC standard-rwo StorageClass. מידע נוסף על משאבי 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
    

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