استخدام Azure Container Storage Preview مع القرص المؤقت
Azure Container Storage هي خدمة إدارة وحدة تخزين ونشر وتنسيق مستندة إلى السحابة تم إنشاؤها في الأصل للحاويات. توضح هذه المقالة كيفية تكوين Azure Container Storage لاستخدام القرص المؤقت كمساحة تخزين خلفية لأحمال عمل Kubernetes. في النهاية، سيكون لديك جراب يستخدم إما NVMe محلي أو محرك أقراص SSD مؤقت كمخزن له.
هام
الأقراص المحلية سريعة الزوال، ما يعني أنها تم إنشاؤها على تخزين الجهاز الظاهري المحلي (VM) ولا يتم حفظها في خدمة تخزين Azure. سيتم فقدان البيانات على هذه الأقراص إذا قمت بإيقاف/إلغاء تخصيص الجهاز الظاهري الخاص بك. يمكنك فقط إنشاء وحدات تخزين Kubernetes عامة سريعة الزوال من تجمع تخزين القرص المؤقت. إذا كنت ترغب في إنشاء وحدة تخزين ثابتة، يجب تمكين النسخ المتماثل لتجمع التخزين الخاص بك.
المتطلبات الأساسية
في حال لم يكن لديك اشتراك 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 Container Storage مع القرص المؤقت، يجب أن يحتوي نظام مجموعة AKS على تجمع عقدة من ثلاثة أجهزة ظاهرية محسنة للتخزين على الأقل مثل standard_l8s_v3. نوصي بأن يكون لكل جهاز ظاهري ما لا يقل عن أربع وحدات معالجة مركزية ظاهرية (vCPUs).
التوفر الإقليمي
يتوفر Azure Container Storage فقط لمجموعة فرعية من مناطق Azure:
- (إفريقيا) جنوب إفريقيا، الشمال
- (آسيا والمحيط الهادئ) شرق أستراليا
- (آسيا والمحيط الهادئ) شرق آسيا
- (Asia Pacific) Japan East
- (آسيا والمحيط الهادئ) كوريا الوسطى
- (آسيا والمحيط الهادئ) جنوب شرق آسيا
- (آسيا والمحيط الهادئ) الهند الوسطي
- (أوروبا) وسط فرنسا
- (أوروبا) ألمانيا الغربية الوسطى
- (أوروبا) شمال أوروبا
- (أوروبا) غرب أوروبا
- (أوروبا) جنوب المملكة المتحدة
- (أوروبا) وسط السويد
- (أوروبا) شمال سويسرا
- (الشرق الأوسط) شمال الإمارات العربية المتحدة
- (أمريكا الشمالية) شرق الولايات المتحدة الأمريكية
- (أمريكا الشمالية) شرق الولايات المتحدة الأميركية 2
- (أمريكا الشمالية) غرب الولايات المتحدة
- (أمريكا الشمالية) منطقة غرب الولايات المتحدة الأمريكية 2
- (أمريكا الشمالية) منطقة غرب الولايات المتحدة الأمريكية 3
- (أمريكا الشمالية) وسط الولايات المتحدة الأمريكية
- (أمريكا الشمالية) شمال وسط الولايات المتحدة
- (أمريكا الشمالية) جنوب وسط الولايات المتحدة الأمريكية
- (أمريكا الشمالية) غرب وسط الولايات المتحدة
- (أمريكا الشمالية) منطقة وسط كندا
- (أمريكا الشمالية) شرق كندا
- (أمريكا الجنوبية) جنوب البرازيل
إنشاء تجمع تخزين
أولا، قم بإنشاء تجمع تخزين، وهو تجميع منطقي للتخزين لمجموعة Kubernetes الخاصة بك، عن طريق تعريفه في ملف بيان YAML.
إذا قمت بتمكين Azure Container Storage باستخدام az aks create
أو az aks update
أوامر، فقد يكون لديك بالفعل تجمع تخزين. استخدم kubectl get sp -n acstor
للحصول على قائمة تجمعات التخزين. إذا كان لديك تجمع تخزين متوفر بالفعل تريد استخدامه، يمكنك تخطي هذا القسم والمتابعة إلى عرض فئات التخزين المتوفرة.
لديك ثلاثة خيارات لإنشاء تجمع تخزين يستخدم القرص المؤقت:
- إنشاء تجمع تخزين باستخدام NVMe المحلي
- إنشاء تجمع تخزين باستخدام temp SSD
- إنشاء تجمع تخزين باستخدام NVMe المحلي والنسخ المتماثل
إنشاء تجمع تخزين باستخدام NVMe
اتبع هذه الخطوات لإنشاء تجمع تخزين باستخدام NVMe المحلي.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-storagepool.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة اسم تجمع التخزين ما تريد.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk namespace: acstor spec: poolType: ephemeralDisk: {}
تطبيق ملف بيان YAML لإنشاء تجمع التخزين.
kubectl apply -f acstor-storagepool.yaml
عند اكتمال إنشاء تجمع التخزين، سترى رسالة مثل:
storagepool.containerstorage.azure.com/ephemeraldisk created
يمكنك أيضا تشغيل هذا الأمر للتحقق من حالة تجمع التخزين. استبدل
<storage-pool-name>
بقيمة اسم تجمع التخزين. على سبيل المثال، ستكون القيمة سريعة الزوال.kubectl describe sp <storage-pool-name> -n acstor
عند إنشاء تجمع التخزين، سيقوم Azure Container Storage بإنشاء فئة تخزين نيابة عنك، باستخدام اصطلاح acstor-<storage-pool-name>
التسمية .
إنشاء تجمع تخزين باستخدام temp SSD
اتبع هذه الخطوات لإنشاء تجمع تخزين باستخدام SSD المؤقت.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-storagepool.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة اسم تجمع التخزين ما تريد.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: ephemeraldisk namespace: acstor spec: poolType: ephemeralDisk: diskType: temp
تطبيق ملف بيان YAML لإنشاء تجمع التخزين.
kubectl apply -f acstor-storagepool.yaml
عند اكتمال إنشاء تجمع التخزين، سترى رسالة مثل:
storagepool.containerstorage.azure.com/ephemeraldisk created
يمكنك أيضا تشغيل هذا الأمر للتحقق من حالة تجمع التخزين. استبدل
<storage-pool-name>
بقيمة اسم تجمع التخزين. على سبيل المثال، ستكون القيمة سريعة الزوال.kubectl describe sp <storage-pool-name> -n acstor
عند إنشاء تجمع التخزين، سيقوم Azure Container Storage بإنشاء فئة تخزين نيابة عنك، باستخدام اصطلاح acstor-<storage-pool-name>
التسمية .
عرض فئات التخزين المتوفرة
عندما يكون تجمع التخزين جاهزا للاستخدام، يجب تحديد فئة تخزين لتحديد كيفية إنشاء التخزين ديناميكيا عند إنشاء مطالبات وحدة تخزين ثابتة ونشر وحدات التخزين الثابتة.
قم بتشغيل kubectl get sc
لعرض فئات التخزين المتوفرة. يجب أن تشاهد فئة تخزين تسمى acstor-<storage-pool-name>
.
هام
لا تستخدم فئة التخزين التي تم وضع علامة داخلي عليها. إنها فئة تخزين داخلية مطلوبة لكي يعمل Azure Container Storage.
نشر جراب مع وحدة تخزين سريعة الزوال عامة
إنشاء جراب باستخدام 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-nvme" # 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
لقد قمت الآن بنشر جراب يستخدم القرص المؤقت كمخزن له، ويمكنك استخدامه لأحمال عمل Kubernetes الخاصة بك.
توسيع تجمع تخزين
يمكنك توسيع تجمعات التخزين المدعومة من NVMe المحلي أو 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>
اختياري: إنشاء تجمع تخزين مع النسخ المتماثل لوحدات التخزين (NVMe فقط)
يمكن للتطبيقات التي تستخدم NVMe المحلي الاستفادة من النسخ المتماثل للتخزين لتحسين المرونة. النسخ المتماثل غير مدعوم حاليا ل SSD المؤقت.
يدعم Azure Container Storage حاليا تكوينات ثلاث نسخ متماثلة وخمس نسخ متماثلة. إذا قمت بتحديد ثلاث نسخ متماثلة، يجب أن يكون لديك ثلاث عقد على الأقل في نظام مجموعة AKS. إذا قمت بتحديد خمس نسخ متماثلة، يجب أن يكون لديك خمس عقد على الأقل.
اتبع هذه الخطوات لإنشاء تجمع تخزين باستخدام NVMe المحلي مع النسخ المتماثل.
إشعار
نظرا لأن تجمعات تخزين القرص المؤقت تستهلك جميع أقراص NVMe المتوفرة، يجب حذف أي تجمعات تخزين NVMe محلية للقرص المؤقت قبل إنشاء تجمع تخزين جديد مع النسخ المتماثل.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-storagepool.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة اسم تجمع التخزين ما تريد. تعيين النسخ المتماثلة إلى 3 أو 5.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: nvme namespace: acstor spec: poolType: ephemeralDisk: diskType: nvme replicas: 3
تطبيق ملف بيان YAML لإنشاء تجمع التخزين.
kubectl apply -f acstor-storagepool.yaml
عند اكتمال إنشاء تجمع التخزين، سترى رسالة مثل:
storagepool.containerstorage.azure.com/nvme created
يمكنك أيضا تشغيل هذا الأمر للتحقق من حالة تجمع التخزين. استبدل
<storage-pool-name>
بقيمة اسم تجمع التخزين. على سبيل المثال، ستكون القيمة nvme.kubectl describe sp <storage-pool-name> -n acstor
عند إنشاء تجمع التخزين، سيقوم Azure Container Storage بإنشاء فئة تخزين نيابة عنك، باستخدام اصطلاح acstor-<storage-pool-name>
التسمية . يمكنك الآن عرض فئات التخزين المتوفرة وإنشاء مطالبة وحدة تخزين ثابتة.
إنشاء مطالبة وحدة تخزين ثابتة
يتم استخدام مطالبة الحجم الثابت (PVC)؛ لتوفير التخزين تلقائيًا بناءً على فئة التخزين. اتبع هذه الخطوات لإنشاء PVC باستخدام فئة التخزين الجديدة.
استخدم محرر النص المفضل لديك لإنشاء ملف بيان YAML مثل
code acstor-pvc.yaml
.الصق التعليمات البرمجية التالية واحفظ الملف. يمكن أن تكون قيمة PVC
name
ما تريد.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ephemeralpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-ephemeraldisk-nvme # 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، يكون جاهزا للاستخدام من قبل جراب.
نشر جراب وإرفاق وحدة تخزين ثابتة
إنشاء جراب باستخدام 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
لقد قمت الآن بنشر جراب يستخدم القرص المؤقت كمخزن له، ويمكنك استخدامه لأحمال عمل Kubernetes الخاصة بك.
فصل وحدة تخزين ثابتة وإعادة إرفاقها
لفصل وحدة تخزين ثابتة، احذف الكبسولة المرفقة بوحدة التخزين الثابتة. استبدل <pod-name>
باسم pod، على سبيل المثال fiopod.
kubectl delete pods <pod-name>
لإعادة إرفاق وحدة تخزين ثابتة، ما عليك سوى الرجوع إلى اسم مطالبة وحدة التخزين الثابتة في ملف بيان YAML كما هو موضح في نشر جراب وإرفاق وحدة تخزين ثابتة.
للتحقق من وحدة التخزين الثابتة التي ترتبط بها مطالبة وحدة التخزين الثابتة، قم بتشغيل kubectl get pvc <persistent-volume-claim-name>
.