ייבוא נפח אחסון קיים של Azure Disk

אם כבר יש לכם נפח של Azure Disk לשימוש עם GKE ב-Azure, אתם יכולים ליצור אובייקט PersistentVolume ‏ (PV) ולשריין אותו ל-PersistentVolumeClaim ‏ (PVC) ספציפי.

בדף הזה מוסבר איך ליצור PV באמצעות נפח קיים שאוכלס בנתונים, ואיך להשתמש ב-PV ב-Pod.

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

יצירת PersistentVolume עבור נפח אחסון קיים

אפשר לייבא כרך קיים על ידי ציון PV חדש.

  1. מעתיקים את קוד ה-YAML הבא לקובץ בשם existing-volume.yaml:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
      annotations:
        pv.kubernetes.io/provisioned-by: disk.csi.azure.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/microsoft.compute/disks/DISK_NAME
        fsType: FILE_SYSTEM_TYPE
    

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

    • VOLUME_NAME: שם לנפח האחסון
    • VOLUME_CAPACITY: גודל הכרך. לדוגמה, 30Gi. מידע נוסף על הגדרת נפח אחסון ב-Kubernetes זמין במאמר בנושא משמעות הזיכרון.
    • STORAGE_CLASS_NAME: השם של StorageClass שמקצה את נפח האחסון. לדוגמה, אפשר להשתמש ב-standard-rwo שמוגדר כברירת מחדל.

    • SUBSCRIPTION_ID: מזהה המינוי ל-Azure שמכיל את אמצעי האחסון.

    • RESOURCE_GROUP_NAME: קבוצת המשאבים ב-Azure שמכילה את אמצעי האחסון.

    • DISK_NAME: השם של נפח האחסון ב-Azure Disk.

    • FS_TYPE: סוג מערכת הקבצים של אמצעי האחסון. לדוגמה, ext4.

  2. החלת ה-YAML על האשכול

    kubectl apply -f existing-volume.yaml
    
  3. אישור יצירת ה-PV

    kubectl describe pv VOLUME_NAME
    

    הפלט של הפקודה הזו כולל את הסטטוס של ה-PV.

שימוש בנפח עם PersistentVolumeClaim ו-Pod

אחרי שמייבאים את אמצעי האחסון, אפשר ליצור PVC ו-Pod שמבצעים mount ל-PVC.

  1. קובץ ה-YAML הבא יוצר PVC ומצרף אותו ל-Pod שמריץ את שרת האינטרנט Nginx. מעתיקים אותו לקובץ בשם nginx.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ACCESS_MODE
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: my-pvc
    

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

    • STORAGE_CLASS: השם של StorageClass מ-PersistentVolume שיצרתם קודם. לדוגמה, standard-rwo.
    • ACCESS_MODE: מצב הגישה של אמצעי האחסון. במקרה של Azure Disk, משתמשים ב-ReadWriteOnce. במקרה של Azure File, משתמשים ב-ReadWriteMany.
    • VOLUME_CAPACITY: גודל הכרך. לדוגמה, 30Gi.
  2. החלת ה-YAML על האשכול

    kubectl apply -f nginx.yaml
    
  3. בודקים את הסטטוס של מופע Nginx עם kubectl describe. הפלט צריך לכלול את הערך Running של STATUS.

    kubectl describe pod web-server
    

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