שימוש במנהל התקן ה-CSI של דיסקים לאחסון מתמיד ב-Compute Engine

‫Google Kubernetes Engine‏ (GKE) מספק דרך פשוטה לפרוס ולנהל באופן אוטומטי את מנהל ההתקן של ממשק אחסון הקונטיינרים (CSI) של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine באשכולות. מנהל ההתקן של CSI לדיסק אחסון מתמיד ב-Compute Engine תמיד מופעל באשכולות של Autopilot, ואי אפשר להשבית או לערוך אותו. באשכולות רגילים, צריך להפעיל את מנהל ה-CSI של דיסקים לאחסון מתמיד ב-Compute Engine.

גרסת ה-CSI Driver של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine קשורה למספרי הגרסאות של GKE. גרסת ה-CSI Driver של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine היא בדרך כלל הגרסה האחרונה שזמינה בזמן שגרסת GKE יוצאת. הדרייברים מתעדכנים אוטומטית כשמשדרגים את האשכול לתיקון (patch) האחרון של GKE.

יתרונות

שימוש ב-CSI Driver של דיסק אחסון מתמיד ב-Compute Engine מספק את היתרונות הבאים:

  • הוא מאפשר פריסה וניהול אוטומטיים של מנהל ההתקן של הדיסק הקשיח בלי צורך בהגדרה ידנית.
  • אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK). המפתחות האלה משמשים להצפנה של המפתחות להצפנת נתונים, שבאמצעותם מוצפנים הנתונים שלכם. מידע נוסף על CMEK ב-GKE זמין במאמר שימוש ב-CMEK.
  • אפשר להשתמש בתמונות מצב של נפחים עם מנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine. תמונות מצב של נפח אחסון מאפשרות לכם ליצור עותק של נפח האחסון בנקודת זמן ספציפית. אתם יכולים להשתמש בעותק הזה כדי להחזיר נפח אחסון למצב קודם או כדי להקצות נפח אחסון חדש.
  • אפשר להשתמש בשיבוט נפחים עם מנהל ההתקן של ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine באשכולות שמריצים GKE בגרסה 1.22 ואילך. שיבוט נפח מאפשר ליצור עותק של הנפח בנקודת זמן ספציפית, עם כל הנתונים מנפח המקור.
  • תיקוני באגים ועדכוני תכונות מופצים בנפרד מגרסאות משניות של Kubernetes. לוח זמנים לפרסום הזה בדרך כלל מוביל לקצב מהיר יותר של פרסום גרסאות.

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

לפני שמתחילים, חשוב לוודא שביצעתם את הפעולות הבאות:

  • מפעילים את ממשק ה-API של Google Kubernetes Engine.
  • הפעלת Google Kubernetes Engine API
  • אם רוצים להשתמש ב-CLI של Google Cloud למשימה הזו, צריך להתקין ואז להפעיל את ה-CLI של gcloud. אם התקנתם בעבר את ה-CLI של gcloud, מריצים את הפקודה gcloud components update כדי לקבל את הגרסה העדכנית. יכול להיות שגרסאות קודמות של ה-CLI של gcloud לא יתמכו בהרצת הפקודות שמופיעות במסמך הזה.

הפעלת מנהל התקן CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine

כדי להפעיל את מנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine באשכולות קיימים מסוג Standard, משתמשים ב-Google Cloud CLI או במסוף Google Cloud .

כדי להפעיל את ה-driver באשכול קיים, מבצעים את השלבים הבאים:

gcloud

gcloud container clusters update CLUSTER-NAME \
   --update-addons=GcePersistentDiskCsiDriver=ENABLED

מחליפים את CLUSTER-NAME בשם של האשכול הקיים.

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. בקטע Features (תכונות), לצד השדה Compute Engine persistent disk CSI Driver (מנהל התקן CSI של דיסק לאחסון מתמיד ב-Compute Engine), לוחצים על Edit Compute Engine CSI driver (עריכת מנהל התקן CSI של Compute Engine).

  4. מסמנים את תיבת הסימון Enable Compute Engine Persistent Disk CSI Driver.

  5. לוחצים על שמירת השינויים.

אחרי שמפעילים את מנהל ההתקן CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine, אפשר להשתמש במנהל ההתקן בכרכים של Kubernetes באמצעות שם מנהל ההתקן ומנהל ההקצאות (provisioner): pd.csi.storage.gke.io.

השבתת מנהל התקן CSI של דיסק אחסון מתמיד ב-Compute Engine

אפשר להשבית את מנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine עבור אשכולות רגילים באמצעות Google Cloud CLI או Google Cloud המסוף.

אם משביתים את הדרייבר, כל ה-Pods שמשתמשים כרגע ב-PersistentVolumes שבבעלות הדרייבר לא מסיימים את הפעולה. גם פודים חדשים שמנסים להשתמש ב-PersistentVolumes האלה לא מצליחים להתחיל.

כדי להשבית את הדרייבר באשכול קיים מסוג Standard, מבצעים את השלבים הבאים:

gcloud

gcloud container clusters update CLUSTER-NAME \
    --update-addons=GcePersistentDiskCsiDriver=DISABLED

מחליפים את CLUSTER-NAME בשם של האשכול הקיים.

המסוף

  1. נכנסים לדף Google Kubernetes Engine במסוף Google Cloud .

    מעבר אל Google Kubernetes Engine

  2. ברשימת האשכולות, לוחצים על שם האשכול שרוצים לשנות.

  3. בקטע Features (תכונות), לצד השדה Compute Engine persistent disk CSI Driver (מנהל התקן CSI של דיסק לאחסון מתמיד ב-Compute Engine), לוחצים על Edit Compute Engine CSI driver (עריכת מנהל התקן CSI של Compute Engine).

  4. מבטלים את הסימון בתיבה Enable Compute Engine Persistent Disk CSI Driver.

  5. לוחצים על שמירת השינויים.

שימוש במנהל התקן CSI של דיסקים לאחסון מתמיד ב-Compute Engine לאשכולות Linux

בקטעים הבאים מתואר התהליך האופייני לשימוש בנפח Kubernetes שמגובה על ידי דרייבר CSI ב-GKE. הקטעים האלה ספציפיים לאשכולות שבהם נעשה שימוש ב-Linux.

יצירת StorageClass

אחרי שמפעילים את מנהל ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine, ‏ GKE מתקין באופן אוטומטי את StorageClasses הבאים:

  • standard-rwo, באמצעות דיסק אחסון מתמיד מאוזן
  • premium-rwo, באמצעות דיסק מתמיד שמבוסס על SSD

באשכולות Autopilot, סוג האחסון שמוגדר כברירת מחדל הוא standard-rwo, שמשתמש במנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine. באשכולות Standard, סוג האחסון (StorageClass) שמוגדר כברירת מחדל משתמש בתוסף הנפח gcePersistentDisk של Kubernetes in-tree.

כדי לראות את השם של StorageClasses שהותקנו, מריצים את הפקודה הבאה:

kubectl get sc

אפשר גם להתקין StorageClass אחר שמשתמש במנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine. כדי לעשות את זה, מוסיפים pd.csi.storage.gke.io בשדה מנהל הקצאות (provisioner).

לדוגמה, אפשר ליצור StorageClass באמצעות הקובץ הבא, שנקרא pd-example-class.yaml.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-example
provisioner: pd.csi.storage.gke.io
# Recommended setting. Delays the binding and provisioning of a PersistentVolume until a Pod that uses the
# PersistentVolumeClaim is created and scheduled on a node.
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-balanced

אפשר לציין את סוגי ה-Persistent Disk הבאים בפרמטר type:

  • pd-balanced
  • pd-ssd
  • pd-standard
  • pd-extreme (נתמך ב-GKE בגרסה 1.26 ואילך)

אם משתמשים ב-pd-standard או ב-pd-extreme, כדאי לעיין בסוגי מכונות שלא נתמכים כדי ללמוד על מגבלות שימוש נוספות.

כשמשתמשים באפשרות pd-extreme, צריך להוסיף גם את השדה provisioned-iops-on-create למניפסט. הערך בשדה הזה צריך להיות זהה לערך ה-IOPS שהוקצה שציינתם כשנוצר ה-Persistent Disk.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-extreme-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-extreme
  provisioned-iops-on-create:'10000'

אחרי שיוצרים את הקובץ pd-example-class.yaml, מריצים את הפקודה הבאה:

kubectl create -f pd-example-class.yaml

יצירת PersistentVolumeClaim

אפשר ליצור PersistentVolumeClaim שמפנה ל-StorageClass של מנהל ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine.

בקובץ הבא, שנקרא pvc-example.yaml, נעשה שימוש בסוג האחסון (storage class) standard-rwo שהותקן מראש:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: standard-rwo
  resources:
    requests:
      storage: 6Gi

אחרי שיוצרים את מניפסט PersistentVolumeClaim, מריצים את הפקודה הבאה:

kubectl create -f pvc-example.yaml

ב-StorageClass שהותקן מראש (standard-rwo), volumeBindingMode מוגדר ל-WaitForFirstConsumer. כשהערך של volumeBindingMode הוא WaitForFirstConsumer, לא מוקצה PersistentVolume עד שתזמנו Pod שמפנה אל PersistentVolumeClaim. אם הערך של volumeBindingMode ב-StorageClass מוגדר כ-Immediate (או אם הוא לא מוגדר), לאחר יצירת PersistentVolumeClaim, מוקצה PersistentVolume שמגובה על ידי דיסק קשיח.

יצירת Pod שמשתמש בנפח האחסון

כשמשתמשים ב-Pods עם PersistentVolumes, מומלץ להשתמש בבקר של עומס עבודה (כמו Deployment או StatefulSet). למרות שבדרך כלל לא משתמשים ב-Pod עצמאי, בדוגמה הבאה נעשה שימוש ב-Pod כזה כדי לפשט את ההסבר.

בדוגמה הבאה נעשה שימוש בנפח האחסון שיצרתם בקטע הקודם:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
   - name: web-server
     image: nginx
     volumeMounts:
       # The path in the container where the volume will be mounted.
       - mountPath: /var/lib/www/html
         # The name of the volume that is being defined in the "volumes" section.
         name: mypvc
  volumes:
   - name: mypvc
     persistentVolumeClaim:
       # References the PersistentVolumeClaim created earlier.
       claimName: podpvc
       readOnly: false

שימוש במנהל התקן ה-CSI של דיסקים לאחסון מתמיד ב-Compute Engine עבור אשכולות Windows

בקטעים הבאים מתואר התהליך האופייני לשימוש בנפח Kubernetes שמגובה על ידי דרייבר CSI ב-GKE. הקטעים האלה ספציפיים לאשכולות שפועלים ב-Windows.

חשוב לוודא ש:

  • גרסת האשכול היא 1.19.7-gke.2000,‏ 1.20.2-gke.2000 או גרסה מאוחרת יותר.
  • גרסאות הצמתים הן ‎1.18.12-gke.1203,‏ ‎1.19.6-gke.800 ואילך.

יצירת StorageClass

יצירת StorageClass ל-Windows דומה מאוד ליצירה ל-Linux. חשוב לדעת ש-StorageClass שמותקן כברירת מחדל לא יפעל ב-Windows כי סוג מערכת הקבצים שונה. מנהל התקן ה-CSI של דיסק לאחסון מתמיד ב-Compute Engine ל-Windows דורש NTFS כסוג מערכת הקבצים.

לדוגמה, אפשר ליצור StorageClass באמצעות הקובץ הבא שנקרא pd- windows-class.yaml. חשוב להוסיף את csi.storage.k8s.io/fstype: NTFS לרשימת הפרמטרים:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-sc-windows
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-balanced
  csi.storage.k8s.io/fstype: NTFS

יצירת PersistentVolumeClaim

אחרי שיוצרים StorageClass ל-Windows, אפשר ליצור PersistentVolumeClaim שמפנה אל StorageClass הזה:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc-windows
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: pd-sc-windows
  resources:
    requests:
      storage: 6Gi

יצירת Pod שמשתמש בנפח האחסון

בדוגמה הבאה נעשה שימוש בנפח האחסון שיצרתם במשימה הקודמת:

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  # Node selector to ensure the Pod runs on a Windows node.
  nodeSelector:
    kubernetes.io/os: windows
  containers:
    - name: iis-server
      # The container image to use.
      image: mcr.microsoft.com/windows/servercore/iis
      ports:
      - containerPort: 80
      volumeMounts:
      # The path in the container where the volume will be mounted.
      - mountPath: /var/lib/www/html
        name: mypvc
  volumes:
    - name: mypvc
      persistentVolumeClaim:
        # References the PersistentVolumeClaim created earlier.
        claimName: podpvc-windows
        readOnly: false

אפשר לשנות באופן דינמי את קצב ה-IOPS ואת קצב העברת הנתונים של Hyperdisk באמצעות VolumeAttributeClass

אפשר להשתמש ב-VolumeAttributesClass עם מנהל התקן ה-CSI של דיסקים לאחסון מתמיד ב-Compute Engine כדי לשנות באופן דינמי מאפיינים של דיסקים לאחסון מתמיד, כולל IOPS וקצב העברת נתונים. מוודאים שגרסת אשכול GKE היא 1.34 ואילך.

בקטע הזה נראה איך משתמשים ב-VolumeAttributesClass כדי לשנות באופן דינמי את ביצועי עוצמת הקול. יוצרים שני משאבי VolumeAttributesClass, ‏ silver ו-gold, כדי להגדיר רמות שונות של IOPS ושל קצב העברת נתונים. לאחר מכן יוצרים StorageClass,‏ PersistentVolumeClaim שמפנה לרמת silver, ו-Pod לצריכת הנפח. לבסוף, מעדכנים את PersistentVolumeClaim כך שיפנה לרמת gold, וכך מתבצע עדכון דינמי של הגדרות הביצועים של אמצעי האחסון.

יצירת VolumeAttributesClass להגדרת רמות ביצועים

בקטע הזה מוגדרים משאבי VolumeAttributesClass עם רמות לדוגמה בשמות silver ו-gold.

  1. שומרים את קובץ המניפסט הבא בשם vac-classes.yaml:

    apiVersion: storage.k8s.io/v1
    kind: VolumeAttributesClass
    metadata:
      name: silver
    driverName: pd.csi.storage.gke.io
    parameters:
      iops: "3000"
      throughput: "188Mi"
    ---
    apiVersion: storage.k8s.io/v1
    kind: VolumeAttributesClass
    metadata:
      name: gold
    driverName: pd.csi.storage.gke.io
    parameters:
      iops: "6000"
      throughput: "345Mi"
    
  2. החלת המניפסט:

    kubectl apply -f vac-classes.yaml
    

יצירת StorageClass ל-Hyperdisk

בקטע הזה מוגדר משאב StorageClass להקצאת נפחי אחסון של Hyperdisk.

  1. שומרים את קובץ המניפסט הבא בשם hyperdisk-sc.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: hyperdisk-example
    provisioner: pd.csi.storage.gke.io
    volumeBindingMode: WaitForFirstConsumer
    allowVolumeExpansion: true
    parameters:
      type: hyperdisk-balanced
    
  2. החלת המניפסט:

    kubectl apply -f hyperdisk-sc.yaml
    

יצירת PVC עם רמת ביצועים ראשונית

בקטע הזה נוצר PVC ונעשה שימוש ברמת השירות הראשונית שנקראת silver.

  1. שומרים את קובץ המניפסט הבא בשם vac-silver-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-pv-claim
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: hyperdisk-example
      volumeAttributesClassName: silver
      resources:
        requests:
          storage: 200Gi
    
  2. החלת המניפסט:

    kubectl apply -f vac-silver-pvc.yaml
    
  3. כדי להקצות נפח אחסון מתמיד, יוצרים Pod שמשתמש ב-PVC. ה-StorageClass שנוצר בסעיף הקודם מגדיר את volumeBindingMode: WaitForFirstConsumer, שמעכב את הקצאת נפח האחסון עד ש-Pod צורך את ה-PVC. שומרים את קובץ המניפסט הבא בשם test-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pvc-pod
    spec:
      containers:
        - name: nginx-container
          image: nginx:latest
          ports:
            - containerPort: 80
          volumeMounts:
            - name: pvc-storage
              mountPath: /usr/share/nginx/html
      volumes:
        - name: pvc-storage
          persistentVolumeClaim:
            claimName: test-pv-claim
    
  4. החלת המניפסט:

    kubectl apply -f test-pod.yaml
    
  5. כדי לבדוק את הגדרות הביצועים של הדיסק, אפשר לעיין במאמר בדיקת הגדרות הביצועים של הדיסק במסוף Google Cloud . ערך Provisioned IOPS צריך להיות 3000 וערך Provisioned throughput צריך להיות 188.

עדכון של ה-PVC כדי להשתמש ברמת ביצועים אחרת

בקטע הזה מעדכנים את ה-PVC לשימוש ברמה gold במקום ברמה silver.

  1. שומרים את קובץ המניפסט הבא בשם vac-gold-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: test-pv-claim
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: hyperdisk-example
      volumeAttributesClassName: gold
      resources:
        requests:
          storage: 200Gi
    
  2. החלת המניפסט:

    kubectl apply -f vac-gold-pvc.yaml
    
  3. כדי לוודא שהגדרות הביצועים של הדיסק עודכנו, אפשר לעיין במאמר אימות הגדרות הביצועים של הדיסק ב Google Cloud מסוף. ערך Provisioned IOPS צריך להיות 6000 וערך Provisioned throughput צריך להיות 345.

אימות הגדרות הביצועים של הדיסק במסוף Google Cloud

ניתן לוודא שהגדרות ה-IOPS והתפוקה חלות על דיסק אחסון מתמיד (persistent disk) על ידי בדיקת פרטי הדיסק במסוף Google Cloud .

  1. משיגים את שם הדיסק:

    PV_NAME=$(kubectl get pvc test-pv-claim -o=jsonpath='{.spec.volumeName}')
    DISK_NAME=$(kubectl get pv $PV_NAME -o=jsonpath='{.spec.csi.volumeHandle}' | sed 's|.*/||')
    echo "Persistent disk name: $DISK_NAME"
    
  2. נכנסים לדף Disks במסוף Google Cloud .

    לפתיחת הדף Disks

  3. לוחצים על השם של דיסק אחסון מתמיד (persistent disk) התואם לשם הדיסק מהפלט של השלב הקודם.

  4. בדף פרטי הדיסק, בקטע ביצועים, אפשר לראות את הערכים של Provisioned IOPS ושל Provisioned throughput.

מידע נוסף מופיע במאמר הצגת הגדרות הביצועים שהוקצו ל-Hyperdisk.

שיקולים לגבי שינוי דינמי

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

שימוש במנהל התקן CSI של דיסק לאחסון מתמיד ב-Compute Engine עם סוגים של מערכות קבצים שאינם ברירת מחדל

סוג מערכת הקבצים שמוגדר כברירת מחדל לדיסקים לאחסון מתמיד ב-Compute Engine ב-GKE הוא ext4. אפשר גם להשתמש בסוג האחסון xfs אם תמונת הצומת תומכת בו. כאן מופיעה רשימה של מנהלי התקנים נתמכים לפי תמונת צומת.

בדוגמה הבאה אפשר לראות איך משתמשים ב-xfs כסוג ברירת המחדל של מערכת הקבצים במקום ב-ext4 באמצעות מנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine.

יצירת StorageClass

  1. שומרים את המניפסט הבא כקובץ YAML בשם pd-xfs-class.yaml:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: xfs-class
    provisioner: pd.csi.storage.gke.io
    parameters:
      # The type of Compute Engine persistent disk to provision.
      type: pd-balanced
      # Specify "xfs" as the filesystem type.
      csi.storage.k8s.io/fstype: xfs
    volumeBindingMode: WaitForFirstConsumer
    
  2. החלת המניפסט:

    kubectl apply -f pd-xfs-class.yaml
    

יצירת PersistentVolumeClaim

  1. שומרים את קובץ המניפסט הבא בשם pd-xfs-pvc.yaml:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: xfs-pvc
    spec:
      # References the StorageClass created earlier.
      storageClassName: xfs-class
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          # The amount of storage requested.
          storage: 10Gi
    
  2. החלת המניפסט:

    kubectl apply -f pd-xfs-pvc.yaml
    

יצירת Pod שמשתמש בנפח האחסון

  1. שומרים את קובץ המניפסט הבא בשם pd-xfs-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: pd-xfs-pod
    spec:
      containers:
      - name: cloud-sdk
        image: google/cloud-sdk:slim
        # Keep the container running for 1 hour.
        args: ["sleep","3600"]
        volumeMounts:
        # The path in the container where the volume will be mounted.
        - mountPath: /xfs
          name: xfs-volume
      # Define the volumes available to the containers in the Pod.
      volumes:
      - name: xfs-volume
        persistentVolumeClaim:
          # References the PersistentVolumeClaim created earlier.
          claimName: xfs-pvc
    
  2. החלת המניפסט:

    kubectl apply -f pd-xfs-pod.yaml
    

איך מוודאים שהנפח הועלה בצורה נכונה

  1. פותחים סשן של מעטפת ב-Pod:

    kubectl exec -it pd-xfs-pod -- /bin/bash
    
  2. מחפשים מחיצות xfs:

    df -aTh --type=xfs
    

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

    Filesystem     Type  Size  Used Avail Use% Mounted on
    /dev/sdb       xfs    30G   63M   30G   1% /xfs
    

צפייה ביומנים של מנהל התקן CSI של דיסקים לאחסון מתמיד ב-Compute Engine

אפשר להשתמש ב-Cloud Logging כדי לראות אירועים שקשורים למנהל התקן ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine. יומנים יכולים לעזור לכם לפתור בעיות.

מידע נוסף על Cloud Logging זמין במאמר צפייה ביומנים של GKE.

כדי לראות את היומנים של מנהל ה-CSI של דיסק אחסון מתמיד (persistent disk) ב-Compute Engine, פועלים לפי השלבים הבאים:

  1. נכנסים לדף Cloud Logging במסוף Google Cloud .

    כניסה ל-Cloud Logging

  2. כדי לסנן את הרשומות ביומן ולהציג רק את הרשומות שקשורות ל-CSI Driver שפועל במרחב השמות שלכם, מריצים את השאילתה הבאה ב-Cloud Logging:

     resource.type="k8s_container"
     resource.labels.project_id="PROJECT_ID"
     resource.labels.location="LOCATION"
     resource.labels.cluster_name="CLUSTER_NAME"
     resource.labels.namespace_name="kube-system"
     resource.labels.container_name="gce-pd-driver"
    

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

    • PROJECT_ID: שם הפרויקט.
    • LOCATION: האזור או התחום של Compute Engine שבו נמצא האשכול.
    • CLUSTER_NAME: השם של האשכול.

בעיות מוכרות

סוגי מכונות שלא נתמכים

אם אתם משתמשים בקבוצת המכונות מסוג C3, אין תמיכה בסוג pd-standardדיסק מתמשך.

אם תנסו להפעיל Pod במכונה, וה-Pod ישתמש בסוג דיסק אחסון מתמיד (persistent disk) שלא נתמך, תוצג לכם הודעת אזהרה כמו זו שמופיעה ב-Pod:

AttachVolume.Attach failed for volume "pvc-d7397693-5097-4a70-9df0-b10204611053" : rpc error: code = Internal desc = unknown Attach error: failed when waiting for zonal op: operation operation-1681408439910-5f93b68c8803d-6606e4ed-b96be2e7 failed (UNSUPPORTED_OPERATION): [pd-standard] features are not compatible for creating instance.

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

אם אתם משתמשים בסוג דיסק אחסון מתמיד pd-extreme, אתם צריכים לוודא שהדיסק מחובר למכונת VM עם צורה מתאימה. מידע נוסף זמין במאמר תמיכה בצורת מכונה.

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