إنشاء وحدة تخزين واستخدامها مع أقراص Azure في خدمة Azure Kubernetes (AKS)
تمثل وحدة التخزين الثابتة جزءا من التخزين المخصص للاستخدام مع جرابات Kubernetes. يمكنك استخدام وحدة تخزين ثابتة مع واحد أو العديد من القرون، ويمكنك توفيرها ديناميكيا أو ثابتا. توضح هذه المقالة كيفية إنشاء وحدات تخزين ثابتة ديناميكيا باستخدام أقراص Azure في نظام مجموعة Azure Kubernetes Service (AKS).
إشعار
يمكن تحميل قرص Azure فقط باستخدام نوع وضع الوصول ReadWriteOnce، مما يجعله متاحا لعقدة واحدة في AKS. لا يزال وضع الوصول هذا يسمح لوحدات الجراب المتعددة بالوصول إلى وحدة التخزين عند تشغيل pods على نفس العقدة. لمزيد من المعلومات، راجع أوضاع الوصول إلى Kubernetes PersistentVolume.
توضح لك هذه المقالة كيفية:
- العمل مع وحدة تخزين ثابتة ديناميكية (PV) عن طريق تثبيت برنامج تشغيل واجهة تخزين الحاوية (CSI) وإنشاء قرص واحد أو أكثر من أقراص Azure المدارة لإرفاقها بجراب ديناميكيا.
- العمل مع PV ثابت عن طريق إنشاء قرص واحد أو أكثر من أقراص Azure المدارة أو استخدام قرص موجود وإرفاقه بجراب.
لمزيد من المعلومات حول وحدات تخزين Kubernetes، راجع خيارات التخزين للتطبيقات في AKS .
قبل البدء
تأكد من تثبيت الإصدار 2.0.59 من Azure CLI أو إصدار أحدث وتكوينه. قم بتشغيل
az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.برنامج تشغيل Azure Disk CSI له حد وحدة تخزين لكل عقدة. يتغير عدد وحدات التخزين استنادا إلى حجم تجمع العقدة/العقدة. قم بتشغيل الأمر kubectl get لتحديد عدد وحدات التخزين التي يمكن تخصيصها لكل عقدة:
kubectl get CSINode <nodename> -o yaml
توفير وحدة تخزين ديناميكيا
يوفر هذا القسم إرشادات لمسؤولي نظام المجموعة الذين يرغبون في توفير وحدة تخزين ثابتة واحدة أو أكثر تتضمن تفاصيل تخزين Azure Disk لاستخدامها بواسطة حمل العمل. تستخدم مطالبة وحدة التخزين الثابتة (PVC) كائن فئة التخزين لتوفير حاوية تخزين قرص Azure ديناميكيا.
معلمات فئة التخزين ل PersistentVolumes الديناميكية
يتضمن الجدول التالي معلمات يمكنك استخدامها لتعريف فئة تخزين مخصصة ل PersistentVolumeClaim.
الاسم | المعنى | القيمة المتاحة | إلزامي | القيمة الافتراضية |
---|---|---|---|---|
skuName | نوع حساب تخزين Azure Disks (الاسم المستعار: storageAccountType ) |
Standard_LRS ، Premium_LRS ، StandardSSD_LRS ، PremiumV2_LRS ، UltraSSD_LRS ، ، Premium_ZRS StandardSSD_ZRS |
لا | StandardSSD_LRS |
fsType | نوع نظام الملفات | ext4 ، ext3 ، ext2 ، xfs ، btrfs لنظام التشغيل Linux، ntfs لنظام التشغيل Windows |
لا | ext4 لنظام التشغيل Linux وntfs لنظام التشغيل Windows |
cachingMode | إعداد ذاكرة التخزين المؤقت لمضيف قرص بيانات Azure (PremiumV2_LRS UltraSSD_LRS يدعمان None وضع التخزين المؤقت فقط) |
None ، ، ReadOnly ReadWrite |
لا | ReadOnly |
resourceGroup | تحديد مجموعة الموارد لأقراص Azure | اسم مجموعة الموارد الحالية | لا | إذا كان فارغا، يستخدم برنامج التشغيل نفس اسم مجموعة الموارد مثل نظام مجموعة AKS الحالي |
DiskIOPSReadWrite | قرص UltraSSD أو إمكانية Premium SSD v2 IOPS (الحد الأدنى: 2 IOPS/GiB) | 100~160000 | لا | 500 |
DiskMBpsReadWrite | UltraSSD disk أو Premium SSD v2 Throughput Capability(minimum: 0.032/GiB) | 1~2000 | لا | 100 |
LogicalSectorSize | حجم القطاع المنطقي بالبايت للقرص الفائق. القيم المدعومة هي 512 و4096. 4096 هو الافتراضي. | 512 , 4096 |
لا | 4096 |
العلامات | علاماتقرص Azure | تنسيق العلامة: key1=val1,key2=val2 |
لا | "" |
diskEncryptionSetID | تم تعيين ResourceId لتشفير القرص لاستخدامه من أجل تمكين التشفير أثناء الثبات (عدم تنقلها) | التنسيق: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
لا | "" |
diskEncryptionType | نوع التشفير لمجموعة تشفير القرص. | EncryptionAtRestWithCustomerKey (افتراضياً), EncryptionAtRestWithPlatformAndCustomerKeys |
لا | "" |
writeAcceleratorEnabled | مسرع الكتابة على Azure Disks | true , false |
لا | "" |
networkAccessPolicy | NetworkAccessPolicy لمنع إنشاء SAS URI لقرص أو لقطة | AllowAll ، ، DenyAll AllowPrivate |
لا | AllowAll |
diskAccessID | معرف مورد Azure لمورد DiskAccess لاستخدام نقاط النهاية الخاصة على الأقراص | لا | `` | |
enableBursting | تمكين الاندفاع عند الطلب بما يتجاوز هدف الأداء المتاح للقرص. يجب تطبيق الاندفاع عند الطلب فقط على القرص المميز وعندما يكون حجم > القرص 512 جيجابايت. القرص الفائق والمشترك غير مدعوم. يتم تعطيل الاندفاع افتراضياً. | true , false |
لا | false |
useragent | عامل المستخدم في إحالة استخدام العميل | لا | عامل مستخدم تم إنشاؤه بتنسيق driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID | حدد معرف اشتراك Azure حيث يتم إنشاء أقراص Azure. | مُعرف اشتراكك في Azure | لا | إذا لم يكن فارغاً، فيجب تقديم resourceGroup . |
--- | المعلمات التالية هي فقط للإصدار 2 | --- | --- | --- |
maxShares | العدد الإجمالي لتركيبات القرص المشترك المسموح بها للقرص. يؤدي تعيين القيمة إلى 2 أو أكثر إلى تمكين النسخ المتماثلة للمرفقات. | تعتمد القيم المدعومة على حجم القرص. راجع مشاركة قرص مدار من Azure للحصول على القيم المدعومة. | لا | 1 |
maxMountReplicaCount | عدد مرفقات النسخ المتماثلة التي يجب الاحتفاظ بها. | يجب أن تكون هذه القيمة في النطاق [0..(maxShares - 1)] |
لا | إذا كان accessMode هو ReadWriteMany ، فإن الإعداد الافتراضي هو 0 . وإلا، فإن الإعداد الافتراضي هو maxShares - 1 |
فئات تخزين مدمجة
تحدد فئات التخزين كيفية إنشاء وحدة تخزين ديناميكيا بوحدة تخزين ثابتة. لمزيد من المعلومات حول فئات التخزين Kubernetes، راجع فئات تخزين Kubernetes .
تتضمن كل مجموعة AKS أربع فئات تخزين تم إنشاؤها مسبقا، تم تكوين اثنتين منها للعمل مع أقراص Azure:
- توفر فئة التخزين الافتراضية أقراص قياسية من نوع SSD Azure.
- تدعم محركات أقراص SSD القياسية التخزين القياسي وتوفر تخزينا فعالا من حيث التكلفة مع تقديم أداء موثوق به.
- توفر فئة التخزين managed-csi-premium أقراص Azure متميزة.
- الأقراص عالية الأداء وذات زمن الانتقال المنخفض المستندة إلى SSD تعود إلى الأقراص المتميزة. وهي مثالية للأجهزة الظاهرية التي تقوم بتشغيل أحمال عمل الإنتاج. عند استخدام برنامج تشغيل Azure Disk CSI على AKS، يمكنك أيضا استخدام
managed-csi
فئة التخزين، التي تدعمها وحدة تخزين قياسية SSD مكررة محليا (LRS).
- الأقراص عالية الأداء وذات زمن الانتقال المنخفض المستندة إلى SSD تعود إلى الأقراص المتميزة. وهي مثالية للأجهزة الظاهرية التي تقوم بتشغيل أحمال عمل الإنتاج. عند استخدام برنامج تشغيل Azure Disk CSI على AKS، يمكنك أيضا استخدام
- بدءا من الإصدار 1.29 من Kubernetes، عند نشر مجموعات Azure Kubernetes Service (AKS) عبر مناطق توفر متعددة، تستخدم AKS الآن التخزين المتكرر للمنطقة (ZRS) لإنشاء أقراص مدارة ضمن فئات التخزين المضمنة.
- يضمن ZRS النسخ المتماثل المتزامن للأقراص المدارة من Azure عبر مناطق توفر Azure المتعددة في المنطقة التي اخترتها. تعزز استراتيجية التكرار هذه مرونة تطبيقاتك وتحمي بياناتك من فشل مركز البيانات.
- ومع ذلك، من المهم ملاحظة أن التخزين المتكرر في المنطقة (ZRS) يأتي بتكلفة أعلى مقارنة بالتخزين الزائد محليا (LRS). إذا كان تحسين التكلفة أولوية، يمكنك إنشاء فئة تخزين جديدة مع معلمة اسم LRS SKU واستخدامها في مطالبة وحدة التخزين الثابتة (PVC).
لا يتم دعم تقليل حجم PVC بسبب خطر فقدان البيانات. يمكنك تحرير فئة تخزين موجودة باستخدام kubectl edit sc
الأمر ، أو يمكنك إنشاء فئة التخزين المخصصة الخاصة بك. على سبيل المثال، إذا كنت تريد استخدام قرص بحجم 4 تيرابايت، يجب إنشاء فئة تخزين تحدد cachingmode: None
لأن التخزين المؤقت للقرص غير مدعوم للأقراص 4 تيرابايت وأكبر. لمزيد من المعلومات حول فئات التخزين وإنشاء فئة التخزين الخاصة بك، راجع خيارات التخزين للتطبيقات في AKS.
يمكنك مشاهدة فئات التخزين التي تم إنشاؤها مسبقا باستخدام kubectl get sc
الأمر . يوضح المثال التالي فئات التخزين التي تم إنشاؤها مسبقا المتوفرة داخل نظام مجموعة AKS:
kubectl get sc
إخراج الأمر يشبه المثال التالي:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
إشعار
يتم تحديد مطالبات الحجم الثابتة في GiB؛ ولكن تتم فوترة الأقراص المُدارة Azure بواسطة SKU لحجم معين. تتراوح وحدات SKU هذه من 32 جيجا بايت للأقراص S4 أو P4 إلى 32 تيرا بايت للأقراص S80 أو P80 (في المعاينة). تعتمد الإنتاجية وأداء IOPS للقرص المدار Premium على كل من SKU وحجم المثيل للعقد في مجموعة AKS. لمزيد من المعلومات، راجع تسعير وأداء الأقراص المُدارة .
إنشاء مطالبة وحدة تخزين ثابتة
توفر مطالبة وحدة التخزين الدائمة (PVC) التخزين تلقائيا استنادا إلى فئة التخزين. في هذه الحالة، يمكن استخدام PVC إحدى فئات التخزين التي تم إنشاؤها مسبقا لإنشاء قرص مدار قياسي أو متميز من Azure.
قم بإنشاء ملف باسم
azure-pvc.yaml
وانسخه في البيان التالي. تطلب المطالبة قرصا باسمazure-managed-disk
بحجم 5 غيغابايت مع وصول ReadWriteOnce . تم تحديد فئة التخزين managed-csi كفئة التخزين.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5Gi
تلميح
لإنشاء قرص يستخدم وحدة تخزين متميزة، استخدم storageClassName: managed-csi-premium
بدلاً من managed-csi.
أنشئ مطالبة وحدة التخزين الثابتة باستخدام
kubectl apply
الأمر وحدد ملف azure-pvc.yaml .kubectl apply -f azure-pvc.yaml
إخراج الأمر يشبه المثال التالي:
persistentvolumeclaim/azure-managed-disk created
استخدم الحجم الثابت
بعد إنشاء مطالبة وحدة التخزين الثابتة، يجب التحقق من أن حالة Pending
. Pending
تشير الحالة إلى أنها جاهزة للاستخدام من قبل جراب.
تحقق من حالة PVC باستخدام
kubectl describe pvc
الأمر .kubectl describe pvc azure-managed-disk
يشبه إخراج الأمر المثال المكثف التالي:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
قم بإنشاء ملف باسم
azure-pvc-disk.yaml
وانسخه في البيان التالي. ينشئ هذا البيان حاوية NGINX أساسية تستخدم مطالبة وحدة التخزين الدائمة المسماة azure-managed-disk لتحميل قرص Azure في المسار/mnt/azure
. بالنسبة لحاويات Windows Server، حدد mountPath باستخدام اصطلاح مسار Windows، مثل 'D:'.kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-managed-disk
إنشاء الجراب باستخدام
kubectl apply
الأمر .kubectl apply -f azure-pvc-disk.yaml
إخراج الأمر يشبه المثال التالي:
pod/mypod created
لديك الآن كبسولة قيد التشغيل مع قرص Azure المثبت في الدليل
/mnt/azure
. تحقق من تكوين الجراب باستخدامkubectl describe
الأمر .kubectl describe pod mypod
إخراج الأمر يشبه المثال التالي:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
استخدام أقراص Azure ultra
لاستخدام قرص Azure ultra، راجع استخدام الأقراص الفائقة على خدمة Azure Kubernetes (AKS).
استخدام علامات Azure
لمزيد من المعلومات حول استخدام علامات Azure، راجع استخدام علامات Azure في Azure Kubernetes Service (AKS).
توفير وحدة تخزين بشكل ثابت
يوفر هذا القسم إرشادات لمسؤولي نظام المجموعة الذين يرغبون في إنشاء وحدة تخزين ثابتة واحدة أو أكثر تتضمن تفاصيل أقراص Azure لاستخدامها بواسطة حمل العمل.
معلمات التوفير الثابت لوحدات تخزين ثابتة
يتضمن الجدول التالي المعلمات التي يمكنك استخدامها لتعريف وحدة تخزين ثابتة.
الاسم | المعنى | القيمة المتاحة | إلزامي | القيمة الافتراضية |
---|---|---|---|---|
volumeHandle | URI للقرص Azure | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
نعم | غير متوفر |
volumeAttributes.fsType | نوع نظام الملفات | ext4 ، ext3 ، ext2 ، xfs ، btrfs لنظام التشغيل Linux، ntfs لنظام التشغيل Windows |
لا | ext4 لنظام التشغيل Linux وntfs لنظام التشغيل Windows |
volumeAttributes.partition | رقم قسم القرص الحالي (مدعوم فقط في Linux) | 1 ، ، 2 3 |
لا | فارغ (لا يوجد قسم) - تأكد من أن تنسيق القسم يشبه -part1 |
volumeAttributes.cachingMode | إعداد ذاكرة التخزين المؤقت لمضيف القرص | None ، ، ReadOnly ReadWrite |
لا | ReadOnly |
إنشاء قرص Azure
عند إنشاء قرص Azure للاستخدام مع AKS، يمكنك إنشاء مورد القرص في مجموعة موارد العقدة. يسمح هذا الأسلوب لنظام مجموعة AKS بالوصول إلى موارد القرص وإدارتها. إذا أنشأت بدلًا من ذلك القرص في مجموعة موارد منفصلة، فيجب عليك منح هوية خدمة Azure Kubernetes (AKS) المُدارة لنظام مجموعتك دور Contributor
لمجموعة موارد القرص.
حدد اسم مجموعة الموارد باستخدام
az aks show
الأمر وأضف المعلمة--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
إخراج الأمر يشبه المثال التالي:
MC_myResourceGroup_myAKSCluster_eastus
إنشاء قرص باستخدام
az disk create
الأمر . حدد اسم مجموعة موارد العقدة واسما لمورد القرص، مثل myAKSDisk. ينشئ المثال التالي قرصاً بحجم 20غيبي بايت، ويخرج معرف القرص بعد إنشائه. إذا كنت بحاجة إلى إنشاء قرص لاستخدامه مع حاويات Windows Server، فأضف المعلمة--os-type windows
لتهيئة القرص بشكل صحيح.az disk create \ --resource-group MC_myResourceGroup_myAKSCluster_eastus \ --name myAKSDisk \ --size-gb 20 \ --query id --output tsv
إشعار
تتم فوترة أقراص Azure بواسطة SKU لحجم معين. تتراوح وحدات SKU هذه من 32 جيجا بايت للأقراص S4 أو P4 إلى 32 تيرا بايت للأقراص S80 أو P80 (في المعاينة). يعتمد معدل النقل وأداء IOPS للقرص المدار Premium على كل من SKU وحجم المثيل للعقد في نظام مجموعة AKS. راجع تسعير وأداء الأقراص المُدارة.
يُعرض معرف مورد القرص بمجرد اكتمال الأمر بنجاح، كما هو موضح في إخراج المثال التالي. يمكنك استخدام معرف القرص لتحميل القرص في القسم التالي.
/subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
تحميل القرص كوحدة تخزين
قم بإنشاء ملف pv-azuredisk.yaml باستخدام PersistentVolume. قم بتحديث
volumeHandle
بمعرف مورد القرص من الخطوة السابقة. بالنسبة لحاويات Windows Server، حدد ntfs للمعلمة fsType.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: disk.csi.azure.com name: pv-azuredisk spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: managed-csi csi: driver: disk.csi.azure.com volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk volumeAttributes: fsType: ext4
قم بإنشاء ملف pvc-azuredisk.yaml مع PersistentVolumeClaim يستخدم PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
قم بإنشاء PersistentVolume و PersistentVolumeClaim باستخدام
kubectl apply
الأمر والإشارة إلى ملفي YAML اللذين أنشأتهما.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
تحقق من إنشاء PersistentVolumeClaim وربطه ب PersistentVolume باستخدام
kubectl get pvc
الأمر .kubectl get pvc pvc-azuredisk
إخراج الأمر يشبه المثال التالي:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5s
إنشاء ملف azure-disk-pod.yaml للإشارة إلى PersistentVolumeClaim. بالنسبة لحاويات Windows Server، حدد mountPath باستخدام اصطلاح مسار Windows، مثل 'D:'.
apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure persistentVolumeClaim: claimName: pvc-azuredisk
تطبيق التكوين وتركيب وحدة التخزين باستخدام
kubectl apply
الأمر .kubectl apply -f azure-disk-pod.yaml
تنظيف الموارد
عند الانتهاء من الموارد التي تم إنشاؤها في هذه المقالة، يمكنك إزالتها باستخدام kubectl delete
الأمر .
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
الخطوات التالية
- لمعرفة كيفية استخدام برنامج تشغيل CSI لتخزين أقراص Azure، راجع استخدام تخزين أقراص Azure مع برنامج تشغيل CSI.
- للحصول على أفضل الممارسات المرتبطة بها، راجع أفضل الممارسات للتخزين والنسخ الاحتياطي في AKS.
Azure Kubernetes Service