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

‫GKE on Azure פורס באופן אוטומטי את azuredisk-csi-driver כדי להקצות ולנהל את נפחי Azure Disk באשכולות.

גרסת מנהל התקן ה-CSI של Azure Disk ב-GKE ב-Azure קשורה לגרסת אשכול Kubernetes. בדרך כלל, גרסת הדרייבר היא הגרסה העדכנית ביותר שזמינה כשגרסת GKE יוצאת. כשמשדרגים את האשכול, מנהלי ההתקנים מתעדכנים אוטומטית.

מידע נוסף על אחסון מתמיד ב-GKE on Azure זמין במאמר סקירה כללית על אחסון.

סוגי אחסון (storage classes) שמוגדרים כברירת מחדל

‫GKE ב-Azure מספק את האפשרויות הבאות של StorageClass כברירת מחדל:

  • standard-rwo (ברירת מחדל): הקצאת דיסקים סטנדרטיים של SSD Azure עם LRS
  • premium-rwo: הקצאת דיסקים מסוג SSD Premium ב-Azure עם LRS

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

שימוש ב-StorageClass שמוגדר כברירת מחדל

כשיוצרים PersistentVolumeClaim בלי להגדיר את השדה spec.storageClassName, ‏ GKE on Azure מקצה נפח SSD רגיל של Azure באמצעות StorageClass של GKE on Azure Azure Disk CSI Driver שמוגדר כברירת מחדל.

קובץ ה-YAML הבא יוצר PersistentVolumeClaim ‏ (PVC) בשם mypvc בגודל של 30 גיביבייט.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

שימוש בסוג האחסון (storage class) פרימיום

כשיוצרים PersistentVolumeClaim ומגדירים את השדה spec.storageClassName לערך premium-rwo, ‏ GKE on Azure מקצה נפח SSD פרימיום ב-Azure.

קובץ ה-YAML הבא יוצר PersistentVolumeClaim ‏ (PVC) בשם mypvc בגודל 30 גיביבייט.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  storageClassName: premium-rwo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 30Gi

הפניה ל-StorageClass ב-StatefulSet

כדי להשתמש ב-StorageClass החדש, אפשר להפנות אליו ב-volumeClaimTemplates של StatefulSet.

כשמפנים אל StorageClass במפרט volumeClaimTemplates של StatefulSet, ‏ Kubernetes מספק אחסון יציב באמצעות PersistentVolumes (PVs). ‫Kubernetes קורא למנהל ההקצאות שמוגדר ב-StorageClass כדי ליצור נפח אחסון חדש. אחרי שהנפח מוקצה, Kubernetes יוצר באופן אוטומטי PV.

ההפניה הבאה של StatefulSet מתייחסת ל-StorageClass‏ premium-rwo ומקצה נפח אחסון של גיביבייט אחד:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates: # This is the specification in which you reference the StorageClass
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 1Gi
      storageClassName: premium-rwo # This field references the existing StorageClass

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