שימוש ב-StorageClass מותאם אישית עם עומסי העבודה
GKE ב-Azure פורס באופן אוטומטי את Azure Disk CSI Driver ואת Azure File CSI Driver.
הגרסאות של מנהל התקן ה-CSI של Azure Disk ומנהל התקן ה-CSI של Azure File קשורות לגרסה של GKE ב-Azure Kubernetes. גרסת הדרייבר היא בדרך כלל הגרסה העדכנית ביותר שזמינה כשגרסת GKE יוצאת. כשמשדרגים את האשכול, מנהלי ההתקנים מתעדכנים אוטומטית.
שימוש ב-StorageClass מותאם אישית
אפשר ליצור עוד StorageClasses לנפחי אחסון או להשתמש במנהלי התקנים של Container Storage Interface (CSI).
בוחרים אם משתמשים בנפח דיסק של Azure או במנהל התקן אחר של CSI.
נפח אחסון דיסקים ב-Azure
אתם יכולים ליצור StorageClass משלכם בהתאמה אישית, שמציין סוג של נפח Azure Disk, סוג של מערכת קבצים ופרמטרים אחרים. פרמטרים נוספים של StorageClass זמינים בדף GitHub של מנהל ה-CSI של דיסק Azure ב-GKE ב-Azure.
כדי להגדיר StorageClass בהתאמה אישית, מעתיקים את מניפסט ה-YAML הבא לקובץ בשם
my-custom-class.yaml.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: trueמחליפים את CLASS_NAME בשם של StorageClass חדש.
לדוגמה, קובץ ה-YAML הבא יוצר StorageClass חדש שמקצה נפחי אחסון בחשבון אחסון ספציפי ומחיל תג של
group=devעל כל נפח אחסון חדש.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-class provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: storageAccount: my-storage-account tags: group=devCSI Driver
אפשר לציין מנהל התקן אחר של CSI בשדה
provisioner.כדי ליצור StorageClass עם מנהל התקן אחר של CSI, אפשר להשתמש בדוגמה הבאה של YAML.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...מחליפים את הערכים הבאים:
- CLASS_NAME: השם של StorageClass (לדוגמה,
my-custom-class). - CSI_DRIVER_NAME: השם של מנהל התקן CSI (לדוגמה,
csi.example.com).
לאחר מכן, מגדירים שדות משנה בקטע
parametersבהתאם לתיעוד של מנהל ההתקן של CSI.- CLASS_NAME: השם של StorageClass (לדוגמה,
מחילים את ה-YAML על האשכול.
kubectl apply -f my-custom-class.yamlיצירת PersistentVolumeClaim עם StorageClass בהתאמה אישית.
אחרי שיוצרים StorageClass בהתאמה אישית, אפשר לציין אותו ב-PVC. בדוגמה הבאה נוצר PVC בשם
my-pvcשמפנה אל StorageClass בשםmy-custom-class.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
הגדרת StorageClass כברירת מחדל
GKE on Azure משתמש ב-StorageClass שמוגדר כברירת מחדל בשם standard-rwo, שמקצה דיסקים סטנדרטיים של SSD Azure עם LRS. אפשר לשנות את ברירת המחדל ל-StorageClass אחר.
כדי לשנות את ברירת המחדל של StorageClass:
מעדכנים את ההערה
is-default-classשלstandard-rwoStorageClass עםkubectl patch.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'יוצרים StorageClass חדש עם ההערה
storageclass.kubernetes.io/is-default-class: true.בדוגמה הבאה של StorageClass נעשה שימוש בדרייבר
disk.csi.azure.com. כדי להתקין עוד מנהל התקן לאחסון, אפשר לעיין במאמר בנושא התקנה של מנהל התקן CSI.מעתיקים את קוד ה-YAML הבא לקובץ בשם
my-custom-class.yaml.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME annotations: storageclass.kubernetes.io/is-default-class: true provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer parameters: skuName: VOLUME_TYPEמחליפים את מה שכתוב בשדות הבאים:
- CLASS_NAME: השם של StorageClass החדש.
- VOLUME_TYPE: סוג הנפח של Azure Disk שנוצר על ידי StorageClass.
לדוגמה, קובץ ה-YAML הבא יוצר StorageClass חדש שמוגדר כברירת מחדל ומקצה נפחי דיסק של Azure מסוג Premium SSD.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-default-class annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer parameters: skuName: Premium_LRSמחילים את הכיתה החדשה בהתאמה אישית על האשכול.
kubectl apply -f my-custom-class.yaml
אחרי שמחילים את המניפסט הזה, GKE on Azure משתמש ב-StorageClass my-custom-default-class לבקשות אחסון חדשות.
הפניה ל-StorageClass ב-StatefulSet
כדי להשתמש ב-StorageClass החדש, אפשר להפנות אליו ב-volumeClaimTemplates של StatefulSet.
כשמפנים אל StorageClass במפרט volumeClaimTemplates של StatefulSet, Kubernetes מספק אחסון יציב באמצעות PersistentVolumes (PVs).
Kubernetes קורא לספק השירות שמוגדר ב-StorageClass כדי ליצור נפח אחסון חדש. אחרי שהנפח מוקצה, Kubernetes יוצר באופן אוטומטי PV.
ההפניה הבאה ל-StatefulSet מתייחסת ל-StorageClass my-custom-class ומקצה נפח אחסון של 1 גיביבייט:
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: my-custom-class # This field references the existing StorageClass
המאמרים הבאים
אפשר לקרוא את התיעוד של מנהל התקן ה-CSI של Azure Disk או של מנהל התקן ה-CSI של Azure File.
מידע נוסף על נפחים קבועים ב-GKE
מתקינים מנהלי התקנים של אחסון באשכול GKE on Azure.
כדי לפרוס את עומס העבודה הראשון, אפשר להיעזר במדריך למתחילים.