استخدام Azure Container Storage مع temp SSD
Azure Container Storage هي خدمة إدارة وحدة تخزين ونشر وتنسيق مستندة إلى السحابة تم إنشاؤها في الأصل للحاويات. توضح هذه المقالة كيفية تكوين Azure Container Storage لاستخدام القرص المؤقت مع SSD المؤقت كمساحة تخزين خلفية لأحمال عمل Kubernetes. في النهاية، سيكون لديك جراب يستخدم SSD المؤقت كمخزن له.
ما هو القرص المؤقت؟
عندما يحتاج تطبيقك إلى زمن انتقال تخزين أقل من مللي ثانية ولا يتطلب متانة البيانات، يمكنك استخدام القرص المؤقت مع Azure Container Storage لتلبية متطلبات الأداء الخاصة بك. تعني الزوال أنه يتم نشر الأقراص على الجهاز الظاهري المحلي (VM) الذي يستضيف نظام مجموعة AKS ولا يتم حفظها في خدمة تخزين Azure. سيتم فقدان البيانات على هذه الأقراص إذا قمت بإيقاف/إلغاء تخصيص الجهاز الظاهري الخاص بك.
يتوفر نوعان من القرص المؤقت: NVMe المحلي وSSD المؤقت. تم تصميم NVMe لنقل البيانات بسرعة عالية بين التخزين وCPU. اختر NVMe عندما يحتاج تطبيقك إلى IOPS أو معدل نقل أعلى من SSD المؤقت، أو يتطلب مساحة تخزين أكبر. يجب أن تدرك أن Azure Container Storage يدعم فقط النسخ المتماثل للبيانات المتزامنة ل NVMe المحلي.
نظرا للطبيعة المؤقتة لهذه الأقراص، يدعم Azure Container Storage استخدام وحدات التخزين المؤقتة العامة بشكل افتراضي عند استخدام القرص المؤقت. ومع ذلك، قد تستدعي بعض حالات الاستخدام وحدات تخزين ثابتة حتى إذا كانت البيانات غير دائمة؛ على سبيل المثال، إذا كنت تريد استخدام ملفات YAML الموجودة أو قوالب التوزيع التي تم ترميزها بشكل ثابت لاستخدام وحدات التخزين الثابتة، ويدعم حمل العمل النسخ المتماثل على مستوى التطبيق للمتانة. في مثل هذه الحالات، يمكنك تحديث تثبيت Azure Container Storage وإضافة التعليق التوضيحي acstor.azure.com/accept-ephemeral-storage=true
في تعريف مطالبة وحدة التخزين الثابتة لدعم إنشاء وحدات تخزين ثابتة من تجمعات تخزين القرص المؤقتة.
المتطلبات الأساسية
في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء.
تتطلب هذه المقالة أحدث إصدار (2.35.0 أو أحدث) من Azure CLI. راجع كيفية تثبيت Azure CLI. إذا كنت تستخدم بيئة Bash في Azure Cloud Shell، فإن أحدث إصدار مثبت بالفعل. إذا كنت تخطط لتشغيل الأوامر محليا بدلا من Azure Cloud Shell، فتأكد من تشغيلها بامتيازات إدارية. لمزيد من المعلومات، راجع بدء استخدام Azure Cloud Shell.
ستحتاج إلى عميل سطر أوامر Kubernetes،
kubectl
. يتم تثبيته بالفعل إذا كنت تستخدم Azure Cloud Shell، أو يمكنك تثبيته محليا عن طريق تشغيلaz aks install-cli
الأمر .إذا لم تكن قد قمت بتثبيت Azure Container Storage بالفعل، فاتبع الإرشادات الواردة في استخدام Azure Container Storage مع Azure Kubernetes Service.
تحقق مما إذا كانت منطقتك المستهدفة مدعومة في مناطق Azure Container Storage.
اختر نوع الجهاز الظاهري الذي يدعم SSD المؤقت
يتوفر القرص المؤقت فقط في أنواع معينة من الأجهزة الظاهرية. تأكد من اختيار نوع جهاز ظاهري مع SSD مؤقت، مثل Ev3 وEsv3-series VM.
يمكنك تشغيل الأمر التالي للحصول على نوع الجهاز الظاهري المستخدم مع تجمع العقدة.
az aks nodepool list --resource-group <resource group> --cluster-name <cluster name> --query "[].{PoolName:name, VmSize:vmSize}" -o table
فيما يلي مثال على الإخراج.
PoolName VmSize
---------- ---------------
nodepool1 standard_l8s_v3
نوصي بأن يكون لكل جهاز ظاهري ما لا يقل عن أربع وحدات معالجة مركزية ظاهرية (vCPUs)، ولكل تجمع عقدة ثلاث عقد على الأقل.
إنشاء وحدات تخزين عامة سريعة الزوال وإرفاقها
اتبع هذه الخطوات لإنشاء وحدة تخزين عامة سريعة الزوال وإرفاقها.
1. إنشاء تجمع تخزين
أولا، قم بإنشاء تجمع تخزين، وهو تجميع منطقي للتخزين لمجموعة Kubernetes الخاصة بك، عن طريق تعريفه في ملف بيان YAML.
إذا قمت بتمكين Azure Container Storage باستخدام az aks create
أو az aks update
أوامر، فقد يكون لديك بالفعل تجمع تخزين. استخدم kubectl get sp -n acstor
للحصول على قائمة تجمعات التخزين. إذا كان لديك تجمع تخزين متوفر بالفعل تريد استخدامه، يمكنك تخطي هذا القسم والمتابعة إلى عرض فئات التخزين المتوفرة.
اتبع هذه الخطوات لإنشاء تجمع تخزين باستخدام SSD المؤقت.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-storagepool.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة اسم تجمع التخزين ما تريد.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk-temp namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
تطبيق ملف بيان YAML لإنشاء تجمع التخزين.
kubectl apply -f acstor-storagepool.yaml
عند اكتمال إنشاء تجمع التخزين، سترى رسالة مثل:
storagepool.containerstorage.azure.com/ephemeraldisk-temp created
يمكنك أيضا تشغيل هذا الأمر للتحقق من حالة تجمع التخزين. استبدل
<storage-pool-name>
بقيمة اسم تجمع التخزين. على سبيل المثال، ستكون القيمة سريعة الزوال-temp.kubectl describe sp <storage-pool-name> -n acstor
عند إنشاء تجمع التخزين، سيقوم Azure Container Storage بإنشاء فئة تخزين نيابة عنك، باستخدام اصطلاح acstor-<storage-pool-name>
التسمية .
2. عرض فئات التخزين المتوفرة
عندما يكون تجمع التخزين جاهزا للاستخدام، يجب تحديد فئة تخزين لتحديد كيفية إنشاء التخزين ديناميكيا عند إنشاء مطالبات وحدة تخزين ثابتة ونشر وحدات التخزين الثابتة.
قم بتشغيل kubectl get sc
لعرض فئات التخزين المتوفرة. يجب أن تشاهد فئة تخزين تسمى acstor-<storage-pool-name>
.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk-temp containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
هام
لا تستخدم فئة التخزين التي تم وضع علامة داخلي عليها. إنها فئة تخزين داخلية مطلوبة لكي يعمل Azure Container Storage.
3. نشر جراب مع وحدة تخزين عامة سريعة الزوال
إنشاء جراب باستخدام Fio (اختبار الإدخال/الإخراج المرن) لقياس الأداء ومحاكاة حمل العمل، الذي يستخدم وحدة تخزين سريعة الزوال عامة.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-pod.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralvolume volumes: - name: ephemeralvolume ephemeral: volumeClaimTemplate: metadata: labels: type: my-ephemeral-volume spec: accessModes: [ "ReadWriteOnce" ] storageClassName: acstor-ephemeraldisk-temp # replace with the name of your storage class if different resources: requests: storage: 1Gi
عند تغيير حجم تخزين وحدات التخزين الخاصة بك، تأكد من أن الحجم أقل من السعة المتاحة للقرص المؤقت لعقدة واحدة. راجع التحقق من سعة القرص المؤقت للعقدة.
تطبيق ملف بيان YAML لنشر الجراب.
kubectl apply -f acstor-pod.yaml
يجب أن ترى مخرجات مماثلة لما يلي:
pod/fiopod created
تحقق من أن الحاوية قيد التشغيل وأن مطالبة وحدة التخزين المؤقتة قد تم ربطها بنجاح بالجراب:
kubectl describe pod fiopod kubectl describe pvc fiopod-ephemeralvolume
تحقق من اختبار fio لمعرفة حالته الحالية:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
لقد قمت الآن بنشر جراب يستخدم SSD المؤقت كمخزن له، ويمكنك استخدامه لأحمال عمل Kubernetes الخاصة بك.
إنشاء وحدات تخزين ثابتة وإرفاقها
لإنشاء وحدة تخزين ثابتة من تجمع تخزين قرص سريع الزوال، يجب تضمين تعليق توضيحي في مطالبات وحدة التخزين الثابتة (PVCs) كضمان لضمان أنك تنوي استخدام وحدات التخزين الثابتة حتى عندما تكون البيانات سريعة الزوال. بالإضافة إلى ذلك، تحتاج إلى تمكين العلامة --ephemeral-disk-volume-type
بالقيمة على PersistentVolumeWithAnnotation
نظام المجموعة قبل إنشاء مطالبات وحدة التخزين الثابتة.
اتبع هذه الخطوات لإنشاء وحدة تخزين ثابتة وإرفاقها.
1. تحديث تثبيت Azure Container Storage
قم بتشغيل الأمر التالي لتحديث تثبيت Azure Container Storage للسماح بإنشاء وحدات تخزين ثابتة من تجمعات تخزين القرص المؤقتة.
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage ephemeralDisk --storage-pool-option Temp --ephemeral-disk-volume-type PersistentVolumeWithAnnotation
2. إنشاء تجمع تخزين
إنشاء تجمع تخزين، وهو تجميع منطقي للتخزين لمجموعة Kubernetes الخاصة بك، عن طريق تعريفه في ملف بيان YAML.
إذا قمت بتمكين Azure Container Storage باستخدام az aks create
أو az aks update
أوامر، فقد يكون لديك بالفعل تجمع تخزين. استخدم kubectl get sp -n acstor
للحصول على قائمة تجمعات التخزين. إذا كان لديك تجمع تخزين متوفر بالفعل تريد استخدامه، يمكنك تخطي هذا القسم والمتابعة إلى عرض فئات التخزين المتوفرة.
اتبع هذه الخطوات لإنشاء تجمع تخزين باستخدام SSD المؤقت.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-storagepool.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة اسم تجمع التخزين ما تريد.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk-temp namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
تطبيق ملف بيان YAML لإنشاء تجمع التخزين.
kubectl apply -f acstor-storagepool.yaml
عند اكتمال إنشاء تجمع التخزين، سترى رسالة مثل:
storagepool.containerstorage.azure.com/ephemeraldisk-temp created
يمكنك أيضا تشغيل هذا الأمر للتحقق من حالة تجمع التخزين. استبدل
<storage-pool-name>
بقيمة اسم تجمع التخزين. على سبيل المثال، ستكون القيمة سريعة الزوال-temp.kubectl describe sp <storage-pool-name> -n acstor
عند إنشاء تجمع التخزين، سيقوم Azure Container Storage بإنشاء فئة تخزين نيابة عنك، باستخدام اصطلاح acstor-<storage-pool-name>
التسمية .
3. عرض فئات التخزين المتوفرة
عندما يكون تجمع التخزين جاهزا للاستخدام، يجب تحديد فئة تخزين لتحديد كيفية إنشاء التخزين ديناميكيا عند إنشاء وحدات التخزين ونشرها.
قم بتشغيل kubectl get sc
لعرض فئات التخزين المتوفرة. يجب أن تشاهد فئة تخزين تسمى acstor-<storage-pool-name>
.
$ kubectl get sc | grep "^acstor-"
acstor-azuredisk-internal disk.csi.azure.com Retain WaitForFirstConsumer true 65m
acstor-ephemeraldisk-temp containerstorage.csi.azure.com Delete WaitForFirstConsumer true 2m27s
هام
لا تستخدم فئة التخزين التي تم وضع علامة داخلي عليها. إنها فئة تخزين داخلية مطلوبة لكي يعمل Azure Container Storage.
4. إنشاء مطالبة وحدة تخزين ثابتة
يتم استخدام مطالبة وحدة تخزين ثابتة لتوفير التخزين تلقائيا استنادا إلى فئة تخزين. اتبع هذه الخطوات لإنشاء PVC باستخدام فئة التخزين الجديدة.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-pvc.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة PVC
name
ما تريد.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc annotations: acstor.azure.com/accept-ephemeral-storage: "true" spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-temp # replace with the name of your storage class if different resources: requests: storage: 100Gi
عند تغيير حجم تخزين وحدات التخزين الخاصة بك، تأكد من أن الحجم أقل من السعة المتوفرة للقرص المؤقت لعقدة واحدة. راجع التحقق من سعة القرص المؤقت للعقدة.
تطبيق ملف بيان YAML لإنشاء PVC.
kubectl apply -f acstor-pvc.yaml
يجب أن تلاحظ مخرجات مشابهة لـ:
persistentvolumeclaim/ephemeralpvc created
يمكنك التحقق من حالة PVC عن طريق تشغيل الأمر التالي:
kubectl describe pvc ephemeralpvc
بمجرد إنشاء PVC، يكون جاهزا للاستخدام من قبل جراب.
5. نشر جراب وإرفاق وحدة تخزين ثابتة
إنشاء جراب باستخدام Fio (اختبار الإدخال/الإخراج المرن) لقياس الأداء ومحاكاة حمل العمل، وتحديد مسار تحميل وحدة التخزين الثابتة. بالنسبة إلى claimName، استخدم قيمة الاسم التي استخدمتها عند إنشاء مطالبة وحدة التخزين الدائمة.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-pod.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: ephemeralpv persistentVolumeClaim: claimName: ephemeralpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: ephemeralpv
تطبيق ملف بيان YAML لنشر الجراب.
kubectl apply -f acstor-pod.yaml
يجب أن ترى مخرجات مماثلة لما يلي:
pod/fiopod created
تحقق من أن الحاوية قيد التشغيل وأن مطالبة وحدة التخزين الدائمة قد تم ربطها بنجاح بالجراب:
kubectl describe pod fiopod kubectl describe pvc ephemeralpvc
تحقق من اختبار fio لمعرفة حالته الحالية:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
لقد قمت الآن بنشر جراب يستخدم SSD مؤقت ويمكنك استخدامه لأحمال عمل Kubernetes الخاصة بك.
إدارة وحدات التخزين وتجمعات التخزين
في هذا القسم، ستتعلم كيفية التحقق من السعة المتوفرة للقرص المؤقت لعقدة واحدة، وكيفية توسيع تجمع تخزين أو حذفه.
التحقق من سعة القرص المؤقت للعقدة
يتم تخصيص وحدة تخزين سريعة الزوال على عقدة واحدة. عند تكوين حجم وحدات التخزين المؤقتة، يجب أن يكون الحجم أقل من السعة المتوفرة للقرص المؤقت للعقدة الواحدة.
قم بتشغيل الأمر التالي للتحقق من السعة المتوفرة للقرص المؤقت لعقدة واحدة.
$ kubectl get diskpool -n acstor
NAME CAPACITY AVAILABLE USED RESERVED READY AGE
ephemeraldisk-temp-diskpool-jaxwb 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-temp-diskpool-wzixx 75660001280 75031990272 628011008 560902144 True 21h
ephemeraldisk-temp-diskpool-xbtlj 75660001280 75031990272 628011008 560902144 True 21h
في هذا المثال، السعة المتاحة للقرص المؤقت لعقدة واحدة هي 75031990272
بايت أو 69 غيغابايت.
توسيع تجمع تخزين
يمكنك توسيع تجمعات التخزين المدعومة ب SSD المؤقت لتوسيع نطاقها بسرعة ودون وقت تعطل. تقليص تجمعات التخزين غير مدعوم حاليا.
نظرا لأن تجمع التخزين المدعوم من القرص المؤقت يستخدم موارد التخزين المحلية على عقد نظام مجموعة AKS (VMs)، فإن توسيع تجمع التخزين يتطلب إضافة عقدة أخرى إلى نظام المجموعة. اتبع هذه الإرشادات لتوسيع تجمع التخزين.
قم بتشغيل الأمر التالي لإضافة عقدة إلى نظام مجموعة AKS. استبدل
<cluster-name>
و<nodepool name>
و<resource-group-name>
بقيمك الخاصة. للحصول على اسم تجمع العقدة، قم بتشغيلkubectl get nodes
.az aks nodepool add --cluster-name <cluster name> --name <nodepool name> --resource-group <resource group> --node-vm-size Standard_L8s_v3 --node-count 1 --labels acstor.azure.com/io-engine=acstor
قم بتشغيل
kubectl get nodes
وسترى أنه تمت إضافة عقدة إلى نظام المجموعة.قم بتشغيل
kubectl get sp -A
ويجب أن ترى أن سعة تجمع التخزين قد زادت.
حذف تجمع تخزين
إذا كنت تريد حذف تجمع تخزين، فقم بتشغيل الأمر التالي. استبدل <storage-pool-name>
باسم تجمع التخزين.
kubectl delete sp -n acstor <storage-pool-name>