إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توضح لك هذه المقالة كيفية إنشاء وحدات تخزين دائمة (PVs) ديناميكيا وثابتا باستخدام أقراص Azure لاستخدامها بواسطة وحدة واحدة في عنقود خدمة Azure Kubernetes (AKS).
المتطلبات المسبقه
تم تثبيت وتكوين Azure CLI الإصدار 2.0.59 أو لاحقا. ابحث عن الإصدار باستخدام
az --versionالأمر . للتثبيت أو الترقية، راجع تثبيت Azure CLI.برنامج تشغيل CSI Azure Disks مفعل على عنقود AKS الخاص بك.
برنامج تشغيل Azure Disks CSI له حد للحجم لكل عقدة. يتغير عدد وحدات التخزين استنادا إلى حجم تجمع العقدة/العقدة. يمكنك تحديد عدد الأحجام التي يمكن تخصيصها لكل عقدة باستخدام الأمر
kubectl get. على سبيل المثال:kubectl get CSINode <node-name> -o yamlإذا كان حد حجم الصوت لكل عقدة يمثل مشكلة في عبء عملك، فكر في استخدام Azure Container Storage للوحدات الدائمة بدلا من تعريفات CSI.
فئات تخزين مدمجة لأنظمة PV الديناميكية مع أقراص Azure
تحدد فئات التخزين كيفية إنشاء وحدة تخزين ديناميكيا بوحدة تخزين ثابتة.
تتضمن كل مجموعة AKS أربع فئات تخزين مدمجة، اثنتان منها مهيأتان للعمل مع أقراص Azure:
- توفر فئة التخزين default قرص SSD Azure قياسي.
- أقراص SSD القياسية تدعم التخزين القياسي وتوفر تخزينا فعالا من حيث التكلفة مع الحفاظ على أداء موثوق.
- توفر فئة التخزين managed-csi-premium قرص Azure مميز.
- الأقراص عالية الأداء وذات زمن الانتقال المنخفض المستندة إلى SSD تعود إلى الأقراص المتميزة. هي مثالية للآلات الافتراضية (VMs) التي تشغل أحمال عمل الإنتاج. عند استخدام برنامج تشغيل CSI Azure Disk على AKS، يمكنك أيضا استخدام فئة التخزين
managed-csi، والتي تدعمها ذاكرة تخزين محلية مكررة محليا (LRS) على SSD قياسي.
- الأقراص عالية الأداء وذات زمن الانتقال المنخفض المستندة إلى SSD تعود إلى الأقراص المتميزة. هي مثالية للآلات الافتراضية (VMs) التي تشغل أحمال عمل الإنتاج. عند استخدام برنامج تشغيل CSI Azure Disk على AKS، يمكنك أيضا استخدام فئة التخزين
- بدءا من إصدار Kubernetes 1.29: عند نشر مجموعات AKS عبر عدة مناطق توافر، يستخدم AKS الآن التخزين الاحتياطي في المنطقة (ZRS) لإنشاء أقراص مدارة ضمن فئات التخزين المدمجة.
- يضمن ZRS تكرارا متزامنا لأقراص Azure المدارة عبر عدة مناطق توفر Azure في المنطقة التي اخترتها. تعزز استراتيجية التكرار هذه مرونة تطبيقاتك وتحمي بياناتك من فشل مركز البيانات.
- ومع ذلك، من المهم ملاحظة أن ZRS يأتي بتكلفة أعلى مقارنة بالتخزين المحلي الاحتياطي (LRS). إذا كان تحسين التكلفة أولوية، يمكنك إنشاء فئة تخزين جديدة باستخدام معامل اسم SKU الخاص ب LRS واستخدامها في ملف PVC الخاص بك.
- يضمن ZRS تكرارا متزامنا لأقراص Azure المدارة عبر عدة مناطق توفر Azure في المنطقة التي اخترتها. تعزز استراتيجية التكرار هذه مرونة تطبيقاتك وتحمي بياناتك من فشل مركز البيانات.
لا يتم دعم تقليل حجم PVC بسبب خطر فقدان البيانات. يمكنك تعديل فئة تخزين موجودة باستخدام الأمر kubectl edit sc ، أو يمكنك إنشاء فئة تخزين مخصصة خاصة بك.
ملاحظة
تحدد مطالبات الحجم الدائم ب GiB، لكن أقراص Azure المدارة تتم فوترتها بواسطة SKU لحجم محدد. تتراوح هذه الوحدات من 32 جيجابايت لأقراص S4 أو P4 إلى 32 تيبايت لأقراص S80 أو P80 (في المعاينة). يعتمد معدل النقل وأداء IOPS لقرص SSD بريميوم على كل من وحدة التخزين وحجم مثيل العقد في عنقود AKS. لمزيد من المعلومات، راجع تسعير وأداء الأقراص المُدارة .
عرض أصناف التخزين الجاهزة باستخدام kubectl get sc الأمر. يوضح المثال التالي فئات التخزين التي تم إنشاؤها مسبقا المتوفرة داخل نظام مجموعة AKS:
kubectl get sc
يجب أن يشبه مخرجاتك الإخراج المثال التالي، والذي يشمل فئات التخزين default و managed-csi-premium التي تم إنشاؤها مسبقا لأقراص Azure:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi-premium disk.csi.azure.com 1h
إنشاء فئات تخزين مخصصة لأنظمة PV الديناميكية باستخدام أقراص Azure
فئات التخزين الافتراضية مناسبة لمعظم السيناريوهات. في بعض الحالات، قد ترغب في تخصيص فئة تخزين خاصة بك مع معاييرك الخاصة. على سبيل المثال، قد ترغب في تغيير الفئة volumeBindingMode .
يمكنك استخدام فئة volumeBindingMode: Immediate تضمن حدوث ذلك فور صنع ال PVC. عندما تكون مجموعات العقد لديك مقيدة بالطوبولوجيا، مثل استخدام مناطق التوفر، ستكون PVs مرتبطة أو مجهزة دون معرفة متطلبات الجدولة الخاصة بالبود.
لمعالجة هذا السيناريو، يمكنك استخدام volumeBindingMode: WaitForFirstConsumer، الذي يؤخر ربط وتجهيز الPV حتى يتم إنشاء كبسولة تستخدم PVC. بهذه الطريقة، تتوافق الشبكة العرضية ويتم توفيرها في منطقة التوافر (أو أي طوبولوجيا أخرى) المحددة بقيود الجدولة الخاصة بالبود. تستخدم فئات volumeBindingMode: WaitForFirstConsumer التخزين الافتراضية الفئة.
أنشئ ملفا مسمى
sc-azuredisk-csi-waitforfirstconsumer.yamlوالصقه في بيان YAML التالي. فئة التخزين هي نفسها فئة التخزين لديناmanaged-csi، لكن بفئة مختلفةvolumeBindingMode.kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: azuredisk-csi-waitforfirstconsumer provisioner: disk.csi.azure.com parameters: skuName: StandardSSD_LRS allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumerأنشئ فئة التخزين باستخدام
kubectl applyالأمر وحدد ملفكsc-azuredisk-csi-waitforfirstconsumer.yaml:kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
معلمات فئة التخزين لوحدات PV الديناميكية مع أقراص Azure
يتضمن الجدول التالي معلمات يمكنك استخدامها لتعريف فئة تخزين مخصصة لمطالبات الحجم الديناميكي المستمر (PVCs) باستخدام أقراص Azure:
| الاسم | المعنى | القيم المتاحة | مطلوب | القيمة الافتراضية |
|---|---|---|---|---|
skuName |
نوع حساب تخزين الأقراص Azure (الاسم المستعار: storageAccountType).
PremiumV2_LRS ودعم UltraSSD_LRS الوصول الفوري لاستعادة اللقطات التدريجية. |
Standard_LRS، Premium_LRS، StandardSSD_LRS، PremiumV2_LRS، UltraSSD_LRS، ، Premium_ZRSStandardSSD_ZRS |
لا | StandardSSD_LRS |
fsType |
نوع نظام الملفات |
ext4, ext3, ext2, xfs, للينكس btrfsntfs Windows |
لا |
ext4 بالنسبة لينكس ntfs Windows |
cachingMode |
إعداد |
None، ، ReadOnlyReadWrite |
لا | ReadOnly |
resourceGroup |
حدد مجموعة الموارد لأقراص Azure | اسم مجموعة الموارد الحالية | لا | إذا كان فارغا، يستخدم برنامج التشغيل نفس اسم مجموعة الموارد مثل نظام مجموعة AKS الحالي |
DiskIOPSReadWrite |
قدرة Ultra Disk أو SSD Premium v2 IOPS (الحد الأدنى: 2 IOPS/GiB) | 100~160000 | لا | 500 |
DiskMBpsReadWrite |
قدرة معالجة Ultra Disk أو Premium SSD v2 (الحد الأدنى: 0.032/جيجابايت) | 1~2000 | لا | 100 |
LogicalSectorSize |
حجم القطاع المنطقي بالبايت لقرص Ultra. |
512، 4096 |
لا | 4096 |
tags |
Azure القرص tags | تنسيق العلامة: key1=val1,key2=val2 |
لا | "" |
diskEncryptionSetID |
معرف المورد لتشفير القرص تم ضبطه لتمكين التشفير في حالة السكون | الصيغة: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
لا | "" |
diskEncryptionType |
نوع التشفير لمجموعة تشفير القرص. |
EncryptionAtRestWithCustomerKey (بشكل افتراضي)، EncryptionAtRestWithPlatformAndCustomerKeys |
لا | EncryptionAtRestWithCustomerKey |
writeAcceleratorEnabled |
Write Accelerator على أقراص Azure |
true، false |
لا | "" |
networkAccessPolicy |
NetworkAccessPolicy خاصية لمنع توليد رابط مستخدم SAS للقرص أو لقطة. |
AllowAll، ، DenyAllAllowPrivate |
لا | AllowAll |
diskAccessID |
معرف مورد Azure لمورد DiskAccess لاستخدام نقاط النهاية الخاصة على الأقراص | لا | `` | |
enableBursting |
تمكين الاندفاع عند الطلب بما يتجاوز هدف الأداء المتاح للقرص. يجب تطبيق الاندفاع عند الطلب فقط على القرص المميز وعندما يكون حجم > القرص 512 جيجابايت. القرص الفائق والمشترك غير مدعوم. يتم تعطيل الاندفاع افتراضياً. |
true، false |
لا | false |
userAgent |
عامل المستخدم في إحالة استخدام العميل | لا | تنسيق وكيل المستخدم المولد: driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID |
حدد معرف اشتراك Azure حيث يتم إنشاء Azure Disks. إذا لم يكن فارغاً، فيجب تقديم resourceGroup. |
مُعرف اشتراكك في Azure | لا | |
| --- | المعاملات التالية مخصصة فقط ل v2 | --- | --- | --- |
maxShares |
العدد الإجمالي لتركيبات القرص المشترك المسموح بها للقرص. يؤدي تعيين القيمة إلى 2 أو أكثر إلى تمكين النسخ المتماثلة للمرفقات. | تعتمد القيم المدعومة على حجم القرص. انظر Share an disk managed Azure للقيم المدعومة. | لا | 1 |
maxMountReplicaCount |
عدد مرفقات النسخ المتماثلة التي يجب الاحتفاظ بها. | يجب أن تكون هذه القيمة في النطاق [0..(maxShares - 1)] |
لا | إذا كان accessMode هو ReadWriteMany، فإن الإعداد الافتراضي هو 0. وإلا، فإن الإعداد الافتراضي هو maxShares - 1 |
مهم
يتم تطبيق معامل فئة التخزين tags على القرص المدار عندما يقوم برنامج تشغيل CSI للقرص Azure بتوفير الحجم. بعد إنشاء الحجم الدائم، يصبح التخصص PersistentVolume غير قابل للتغيير، لذا فإن تحرير أو تحديث ال PV لتغيير العلامات أو سمات الحجم الأخرى يفشل. تحديث فئة التخزين لاحقا يؤثر فقط على الأحجام التي تم توفيرها حديثا.
لتحديث العلامات على وحدة تخزين موجودة، قم بتغييرها على القرص المدار الأساسي في Azure. هذه العملية لا تقطع التركيبات أو البودات أو الوصول إلى البيانات الموجودة، وعلامات Azure المحدثة لا تتزامن مع Kubernetes PV YAML أو البيانات الوصفية. على سبيل المثال:
az disk update \
--name myManagedDisk \
--resource-group MC_myResourceGroup_myAKSCluster_eastus \
--set tags.abc=ABC123
أنشئ نسخة PVC باستخدام أقراص Azure
يوفر PVC تلقائيا التخزين بناء على فئة التخزين. في هذه الحالة، يمكن لجهاز PVC استخدام إحدى فئات التخزين الجاهزة لإنشاء قرص Azure مدار Standard أو Premium.
أنشئ ملفا باسم
azure-pvc.yamlوالصقه في البيان التالي. الطلب يطلب قرصا بحجمazure-managed-disk10 جيجابايت مع إمكانية الوصول إلى ReadWriteOne . تم تحديد فئة التخزين managed-csi كفئة التخزين.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 10Giنصيحة
لإنشاء قرص يستخدم وحدة تخزين متميزة، استخدم
storageClassName: managed-csi-premiumبدلاً من managed-csi.أنشئ ملف PVC باستخدام
kubectl applyالأمر وحدد ملف azure-pvc.yaml الخاص بك:kubectl apply -f azure-pvc.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
persistentvolumeclaim/azure-managed-disk createdتحقق من جاهزية الPV للاستخدام من قبل الكبسولة باستخدام
kubectl describe pvcالأمر:kubectl describe pvc azure-managed-diskيجب أن يشبه مخرجاتك مثال المخرج، الذي يظهر أن الإضاءة الافتراضية في حالة انتظار :
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
أنشئ بودك يستخدم PVC مع أقراص Azure
أنشئ ملفا باسم
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يجب أن يشبه مخرجاك المثال التالي، الذي يظهر أن الحجم المسمى يستخدم ملف PVC المسمى azure-managed-disk:
[...] 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-12345678-9 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-12345678-9 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-12345678-9 MountVolume.SetUp succeeded for volume "pvc-abc0d123-4e5f-67g8-901h-ijk23l45m678" [...]
معلمات فئة Volume Snapshot لأقراص Azure
يدعم برنامج تشغيل Azure Disks CSI إنشاء snapshots للأحجام الدائمة. كجزء من هذه القدرة، يمكن للسائق تنفيذ لقطات كاملة أو تدريجية اعتمادا على القيمة المحددة في المعامل incremental .
يوفر الجدول التالي تفاصيل للمعلمات التي يمكنك استخدامها لتعريف فئة لقطات حجم مخصصة لقطات الحجم الخاصة بك باستخدام أقراص Azure:
| الاسم | المعنى | القيم المتاحة | مطلوب | القيمة الافتراضية |
|---|---|---|---|---|
resourceGroup |
مجموعة الموارد لتخزين اللقطات | مجموعة الموارد الحالية | لا | إذا لم يتم تحديدها، سيتم تخزين اللقطة في نفس مجموعة الموارد التي تخزن فيها أقراص Azure الأصلية |
incremental |
خذ لقطات كاملة أو تدريجية |
true، false |
لا | true |
tags |
أقراص Azure tags | تنسيق الوسم: 'key1=val1,key2=val2' | لا | "" |
userAgent |
عامل المستخدم في إحالة استخدام العميل | لا | وكيل المستخدم المولد بتنسيق driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID |
حدد معرف اشتراك Azure حيث سيتم إنشاء Azure Disks | مُعرف اشتراكك في Azure | لا | إذا لم يكن فارغا، resourceGroup يجب توفيره، ويجب incremental أن يكون كالتالي false |
أنشئ لقطة حجم من ملف PVC باستخدام أقراص Azure
ملاحظة
قبل المتابعة، تأكد من أن التطبيق لا يكتب بيانات على القرص المصدر.
أنشئ فئة لقطة حجم باستخدام
kubectl applyالأمر:kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/storageclass-azuredisk-snapshot.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc createdأنشئ لقطة حجم من ال PVC الديناميكي الذي أنشأته سابقا في هذا الدرس باستخدام
kubectl applyالأمر:kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot createdتحقق من إنشاء لقطة الصوت بنجاح باستخدام
kubectl describeالأمر:kubectl describe volumesnapshot azuredisk-volume-snapshotيجب أن يشبه مخرجاك المثال التالي للمخرجات، والذي يوضح أن لقطة الحجم جاهزة للاستخدام:
Name: azuredisk-volume-snapshot Namespace: default Labels: <none> Annotations: API Version: snapshot.storage.k8s.io/v1 Kind: VolumeSnapshot Metadata: Creation Timestamp: 2020-08-27T05:27:58Z Finalizers: snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection snapshot.storage.kubernetes.io/volumesnapshot-bound-protection Generation: 1 Resource Version: 714582 Self Link: /apis/snapshot.storage.k8s.io/v1/namespaces/default/volumesnapshots/azuredisk-volume-snapshot UID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee Spec: Source: Persistent Volume Claim Name: pvc-azuredisk Volume Snapshot Class Name: csi-azuredisk-vsc Status: Bound Volume Snapshot Content Name: snapcontent-00aa00aa-bb11-cc22-dd33-44ee44ee44ee Creation Time: 2020-08-31T05:27:59Z Ready To Use: true Restore Size: 10Gi Events: <none>
أنشئ ملف PVC جديد بناء على لقطة حجم باستخدام أقراص Azure
يمكنك إنشاء PVC جديد بناء على لقطة الحجم. في هذا القسم، نستخدم لقطة من إنشاء لقطة حجم من PVC مع قسم Azure الأقراص وننشئ new PVC وnew pod لاستهلاكها.
أنشئ ال PVC والوحدة باستخدام الأوامر التالية
kubectl apply:kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/pvc-azuredisk-snapshot-restored.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/nginx-pod-restored-snapshot.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
persistentvolumeclaim/pvc-azuredisk-snapshot-restored created pod/nginx-restored createdتحقق من أنه نفس ال PVC الذي تم إنشاؤه سابقا عن طريق التحقق من محتوى المجلد باستخدام
kubectl execالأمر لتنفيذlsالأمر داخل الكبسولة:kubectl exec nginx-restored -- ls /mnt/azurediskيجب أن يشبه مخرجاتك مثال الإخراج التالي، الذي يعرض نفس محتوى ال PVC الأصلي، بما في ذلك الملف
test.txtالذي تم إنشاؤه في ال PVC الأصلي:lost+found outfile test.txt
نسخ الأحجام باستخدام أقراص Azure
يعرف الحجم المستنسخ بأنه نسخة مكررة من حجم Kubernetes موجود. لمزيد من المعلومات حول أحجام الاستنساخ في كوبيرنيتس، راجع التوثيق المفاهيمي لاستنساخ الحجم.
يدعم برنامج تشغيل CSI لأقراص Azure استنساخ الصوت. لتوضيح، أنشئ حجما مستنسخا من ال PVC الديناميكي الذي أنشأته سابقا في هذا الدرس وكبسولة جديدة لاستهلاكها.
أنشئ ال PVC المستنسخ والكبسولة باستخدام الأوامر التالية
kubectl apply:kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/pvc-azuredisk-cloning.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/nginx-pod-restored-cloning.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
persistentvolumeclaim/pvc-azuredisk-cloning created pod/nginx-restored-cloning createdتحقق من أن الحجم المستنسخ يحتوي على نفس محتوى الحجم الأصلي عن طريق التحقق من محتويات المجلد باستخدام الأمر لتنفيذ
kubectl execlsالأمر داخل الكبسولة:kubectl exec nginx-restored-cloning -- ls /mnt/azurediskيجب أن يشبه مخرجاتك مثال الإخراج التالي، الذي يعرض نفس محتوى ال PVC الأصلي، بما في ذلك الملف
test.txtالذي تم إنشاؤه في ال PVC الأصلي:lost+found outfile test.txt
إعادة حجم حجم مستمر دون توقف مؤقت باستخدام أقراص Azure
ملاحظة
تقليص وحدات التخزين الثابتة غير مدعوم حاليا. محاولة إصلاح PVC موجود بحجم أصغر من الحالي تؤدي إلى رسالة الخطأ التالية:
The persistentVolumeClaim "pvc-azuredisk" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value.
يمكنك طلب حجم أكبر لجهاز PVC عن طريق تعديل كائن PVC لتحديد حجم أكبر. يؤدي هذا التغيير إلى توسيع وحدة التخزين الأساسية التي تدعم PV. لا يتم إنشاء PV جديدة لتلبية المطالبة. بدلا من ذلك، يتم حجم وحدة تخزين موجودة.
في AKS، تدعم فئة التخزين المدمجة managed-csi بالفعل التوسعة، لذا يمكنك استخدام PVC الديناميكي الذي أنشأته سابقا في هذا الدرس. طلب جهاز PVC حجما مستمرا بسعة 10 جيتار.
تحقق من حجم الصوت الحالي باستخدام
kubectl execالأمر لتنفيذdf -hالأمر داخل البود:kubectl exec -it nginx-azuredisk -- df -h /mnt/azurediskيجب أن يشبه المخرجات مثالية التالية، والتي تظهر أن حجم الصوت الحالي هو 10 جيجيت:
Filesystem Size Used Avail Use% Mounted on /dev/sdc 9.8G 42M 9.8G 1% /mnt/azurediskقم بتوسيع ال PVC عن طريق زيادة المجال
spec.resources.requests.storageباستخدامkubectl patchالأمر. في هذا المثال، نزيد حجم PVC إلى 15 جيجيتار:kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'يجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
persistentvolumeclaim/pvc-azuredisk patchedتحقق من الزجاج الافتراضي للتأكد من أن الحجم الجديد يظهر في الكاميرا باستخدام
kubectl get pvالأمر:kubectl get pvيجب أن يشبه مخرجاتك مثال الإخراج التالي، والذي يظهر أن ال PV تم تغيير حجمه إلى 15 جيجي:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 15Gi RWO Delete Bound default/pvc-azuredisk managed-csi 2d2h (...)بعد بضع دقائق، تحقق من ال PVC للتأكد من أن الحجم الجديد ينعكس في ال PVC باستخدام
kubectl get pvcالأمر:kubectl get pvc pvc-azurediskيجب أن يشبه مخرجاك المثال التالي، الذي يظهر أن PVC تم تغيير حجمه إلى 15 جيجيت:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pvc-a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 15Gi RWO managed-csi 2d2hتأكد من تحديث حجم القرص في الوحدة إلى الحجم الجديد باستخدام
kubectl execالأمر لتنفيذdf -hالأمر داخل الكبسولة:kubectl exec -it nginx-azuredisk -- df -h /mnt/azurediskيجب أن يشبه مخرجاك المثال التالي للمخرجات، والذي يظهر أن حجم الصوت تم تحديثه إلى 15 جيجي:
Filesystem Size Used Avail Use% Mounted on /dev/sdc 15G 46M 15G 1% /mnt/azuredisk
الانفجار عند الطلب لأقراص SSD المميزة مع أقراص Azure
نموذج انفجار الأقراص عند الطلب يسمح بدفعات القرص كلما تجاوزت احتياجاته سعته الحالية. هذا النموذج يولد شحنات إضافية في كل مرة ينفجر فيها القرص. التفجير عند الطلب متاح فقط لأقراص SSD المميزة التي تزيد حجمها عن 512 جيجابايت. لمزيد من المعلومات حول IOPS المجهزة في أقراص Premium SSD ومعدل النقل لكل قرص، راجع حجم Premium SSD. بدلا من ذلك، الانفجار المعتمد على الرصيد هو حيث ينفجر القرص فقط إذا كان لديه أرصدة متراكمة في صندوق الائتمان الخاص به. الانفجار المعتمد على الائتمان لا يولد شحنات إضافية عند انفجار القرص. التثبيت المعتمد على الائتمان متاح فقط لأقراص SSD المميزة بحجم 512 جيجابايت أو أصغر، وأقراص SSD القياسية بحجم 1024 جيجابايت وما أصغر. لمزيد من المعلومات حول الانفجار عند الطلب، انظر الانفجار عند الطلب.
مهم
فئة التخزين الافتراضية managed-csi-premium لديها تعطيل الانفجار عند الطلب وتستخدم الانفجار المعتمد على الاعتماد. أي قرص SSD مميز يتم إنشاؤه ديناميكيا بواسطة مطالبة حجم دائم بناء على فئة التخزين الافتراضية managed-csi-premium أيضا يتم تعطيل الانفجار عند الطلب.
لإنشاء وحدة تخزين SSD دائمة مع تفعيل الانفجار عند الطلب ، يمكنك إنشاء فئة تخزين جديدة مع تعيين معامل enableBursting كما true هو موضح في قالب YAML التالي. لمزيد من المعلومات حول تفعيل الانفجار عند الطلب، راجع الانفجار عند الطلب. لمزيد من المعلومات حول بناء فئة تخزين خاصة بك مع تفعيل الانفجار عند الطلب، راجع إنشاء فئة Premium Storage CSI مدارة من Burstable Class.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: burstable-managed-csi-premium
provisioner: disk.csi.azure.com
parameters:
skuName: Premium_LRS
enableBursting: "true"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
Use Azure Disks with Windows containers
يدعم برنامج تشغيل Azure Disk CSI عقد وحاويات Windows. إذا أردت استخدام حاويات Windows، اتبع Windows الحاويات السريع لإضافة مجموعة عقد Windows. بعد أن يكون لديك تجمع عقد Windows، يمكنك استخدام فئات التخزين المدمجة مثل managed-csi.
نشر مثال Windows setful set الذي يحفظ الطوابع الزمنية في الملف
data.txtباستخدام الأمر التاليkubectl apply:kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yamlيجب أن يشبه الإخراج الخاص بك إخراج المثال التالي:
statefulset.apps/busybox-azuredisk createdتحقق من محتوى الملف
data.txtفي الوحدة باستخدامkubectl execالأمر لتنفيذ الأمرtypeداخل الكبسولة:kubectl exec -it statefulset-azuredisk-win-0 -- powershell -c "type c:/mnt/azuredisk/data.txt"يجب أن يشبه مخرجاتك مثال الإخراج التالي، الذي يوضح الطوابع الزمنية التي يتم حفظها في الملف
data.txt:2020-08-27 08:13:41Z 2020-08-27 08:13:42Z 2020-08-27 08:13:44Z (...)
إنشاء ملف PV ثابت باستخدام أقراص Azure
الأقسام التالية تقدم تعليمات لإنشاء PV ثابت باستخدام أقراص Azure. ال PV الثابت هو وحدة تخزين مستمرة يقوم المسؤول بإنشائه يدويا. هذه الكاميرا الزجاجية متاحة للاستخدام من قبل الكبسولات في العنقود. لاستخدام PV ثابت، تقوم بإنشاء PVC يشير إلى PVC، ثم تنشئ وحدة تشير إلى PVC.
معلمات فئة التخزين للPVs الثابتة مع أقراص Azure
يتضمن الجدول التالي معلمات يمكنك استخدامها لتعريف فئة تخزين مخصصة لوحدات PVC الثابتة الخاصة بك مع أقراص Azure:
| الاسم | المعنى | القيم المتاحة | مطلوب | القيمة الافتراضية |
|---|---|---|---|---|
volumeHandle |
Azure disk URI | /subscriptions/{sub-id}/resourceGroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
نعم | غير متوفر |
volumeAttributes.fsType |
نوع نظام الملفات |
ext4, ext3, ext2, xfs, للينكس btrfsntfs Windows |
لا |
ext4 بالنسبة لينكس ntfs Windows |
volumeAttributes.partition |
رقم قسم القرص الحالي (مدعوم فقط في Linux) |
1، ، 23 |
لا | فارغ (بدون قسم) تأكد من تنسيق القسم هو: -part1 |
volumeAttributes.cachingMode |
إعداد ذاكرة التخزين المؤقت لمضيف القرص |
None، ، ReadOnlyReadWrite |
لا | ReadOnly |
Create an Azure disk
عندما تنشئ قرص Azure للاستخدام مع AKS، يمكنك إنشاء مورد القرص في مجموعة موارد العقد. يسمح هذا الأسلوب لنظام مجموعة AKS بالوصول إلى موارد القرص وإدارتها. إذا أنشأت القرص بدلا من ذلك في مجموعة موارد منفصلة، يجب أن تمنح هوية AKS المدارة لمجموعة Contributor الدور الخاصة بمجموعة موارد القرص.
حدد اسم مجموعة موارد العقدة باستخدام
az aks showالأمر الذي يحتوي على المعامل--query nodeResourceGroup.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvيجب أن يشبه مخرجاتك مثال الإخراج التالي، الذي يظهر اسم مجموعة موارد العقد لمجموعة AKS:
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 لحجم محدد. تتراوح هذه الوحدات من 32 جيجابايت لأقراص S4 أو P4 إلى 32 تيبايت لأقراص S80 أو P80 (في المعاينة). يعتمد معدل النقل وأداء IOPS للقرص المدار Premium على كل من SKU وحجم المثيل للعقد في نظام مجموعة AKS. انظر تسعير وأداء أقراص مُدارة.
يجب أن يشبه مخرجاك المثال التالي للمخرجات، والذي يظهر معرف مورد القرص الذي تم إنشاؤه:
/subscriptions/<subscriptionID>/resourceGroups/MC_myResourceGroup_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
أنشئ ملف PV وPVC يشير إلى قرص Azure
أنشئ ملف pv-azuredisk.yaml باستخدام ملف PV باستخدام المثال التالي الظاهرة. قم بتحديث
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_myResourceGroup_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk volumeAttributes: fsType: ext4كما هو مذكور في إنشاء قرص Azure، إذا تم إنشاء قرص
volumeHandleفي مجموعة موارد منفصلة، فعليك منح هوية AKS المدارة لمجموعة المواردContributorلمجموعة موارد القرص.أنشئ ملف pvc-azuredisk.yaml باستخدام ملف PVC يستخدم الملف الافتراضي باستخدام المثال التالي:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csiأنشئ ال PV و PVC باستخدام الأوامر التالية
kubectl apply:kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yamlتحقق من إنشاء PVC الخاص بك بنجاح وربطه بالطاقة الزجاجية باستخدام
kubectl get pvcالأمر:kubectl get pvc pvc-azurediskيجب أن يشبه المخرجات المثال التالي، الذي يظهر أن ال PVC في حالة Bound :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5s
أنشئ كبسولة تستخدم ال PVC مع أقراص Azure
أنشئ ملف azure-disk-pod.yaml للإشارة إلى ملف PVC الخاص بك باستخدام البيان المثال التالي. (بالنسبة 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][kubectl-delete] التالية:# Remove the pod kubectl delete -f azure-pvc-disk.yaml # Remove the persistent volume claim kubectl delete -f azure-pvc.yaml