استكشاف أخطاء معاينة Azure Container Storage وإصلاحها

Azure Container Storage هي خدمة إدارة وحدة تخزين ونشر وتنسيق مستندة إلى السحابة تم إنشاؤها في الأصل للحاويات. استخدم هذه المقالة لاستكشاف المشكلات الشائعة في Azure Container Storage وإصلاحها والعثور على حلول للمشاكل.

استكشاف مشكلات التثبيت وإصلاحها

فشل تثبيت Azure Container Storage

بعد تشغيل az aks create، قد ترى الرسالة فشل تثبيت Azure Container Storage. يتم إنشاء نظام مجموعة AKS. يرجى العمل az aks update مع --enable-azure-container-storage لتمكين Azure Container Storage.

تعني هذه الرسالة أنه لم يتم تثبيت Azure Container Storage، ولكن تم إنشاء نظام مجموعة AKS بشكل صحيح.

لتثبيت Azure Container Storage على نظام المجموعة وإنشاء تجمع تخزين، قم بتشغيل الأمر التالي. استبدال <cluster-name>و<resource-group> بالقيم الخاصة بك. استبدل <storage-pool-type> ب azureDiskأو ephemeraldiskأو elasticSan.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>

لا يمكن تعيين نوع تجمع التخزين إلى NVMe

إذا حاولت تثبيت Azure Container Storage مع القرص المؤقت، وتحديدا مع NVMe المحلي على نظام مجموعة حيث لا يحتوي SKU للجهاز الظاهري (VM) على محركات أقراص NVMe، فستحصل على رسالة الخطأ التالية: لا يمكن تعيين --storage-pool-option ك NVMe حيث لا يمكن لأي من تجمعات العقد دعم قرص NVMe سريع الزوال.

للمعالجة، قم بإنشاء تجمع عقدة مع VM SKU يحتوي على محركات أقراص NVMe وحاول مرة أخرى. راجع الأجهزة الظاهرية المحسنة للتخزين.

استكشاف مشكلات تجمع التخزين وإصلاحها

للتحقق من حالة تجمعات التخزين الخاصة بك، قم بتشغيل kubectl describe sp <storage-pool-name> -n acstor. فيما يلي بعض المشكلات التي قد تواجهها.

فشل إنشاء شبكة SAN المرنة

إذا كنت تحاول إنشاء تجمع تخزين Elastic SAN، فقد ترى الرسالة فشل إنشاء Azure Elastic SAN: أقصى عدد ممكن من Elastic SAN للاشتراك الذي تم إنشاؤه بالفعل. وهذا يعني أنك وصلت إلى الحد الأقصى لعدد موارد Elastic SAN التي يمكن نشرها في منطقة لكل اشتراك. يمكنك التحقق من الحد هنا: أهداف قابلية التوسع والأداء Elastic SAN. ضع في اعتبارك حذف أي موارد Elastic SAN موجودة على الاشتراك الذي لم يعد قيد الاستخدام، أو حاول إنشاء تجمع التخزين في منطقة مختلفة.

لم يتم العثور على أجهزة حظر

إذا رأيت هذه الرسالة، فمن المحتمل أنك تحاول إنشاء تجمع تخزين قرص سريع الزوال على نظام مجموعة حيث لا تحتوي وحدة SKU للجهاز الظاهري على محركات أقراص NVMe.

للمعالجة، قم بإنشاء تجمع عقدة مع VM SKU يحتوي على محركات أقراص NVMe وحاول مرة أخرى. راجع الأجهزة الظاهرية المحسنة للتخزين.

نوع تجمع التخزين ممكن بالفعل

إذا حاولت تمكين نوع تجمع تخزين تم تمكينه بالفعل، فستتلقى الرسالة التالية: قيمة غير صالحة --enable-azure-container-storage . تم تمكين Azure Container Storage بالفعل لنوع <storage-pool-type> تجمع التخزين في نظام المجموعة. يمكنك التحقق مما إذا كان لديك أي تجمعات تخزين موجودة تم إنشاؤها عن طريق تشغيل kubectl get sp -n acstor.

تعطيل نوع تجمع تخزين

عند تعطيل نوع تجمع تخزين عبر az aks update --disable-azure-container-storage <storage-pool-type> أو إلغاء تثبيت Azure Container Storage عبر az aks update --disable-azure-container-storage all، إذا كان هناك تجمع تخزين موجود من هذا النوع، فستتلقى الرسالة التالية:

سيؤدي تعطيل Azure Container Storage لنوع <storage-pool-type> تجمع التخزين إلى حذف جميع تجمعات التخزين من نفس النوع بقوة والتأثير على التطبيقات التي تستخدم تجمعات التخزين هذه. يمكن أن يؤدي الحذف القسري لتجمعات التخزين أيضا إلى تسرب موارد التخزين التي يتم استهلاكها. هل تريد التحقق مما إذا كان يتم استخدام أي من مجموعات التخزين من النوع <storage-pool-type> قبل تعطيل Azure Container Storage؟ (Y/n)

إذا حددت Y، يتم تشغيل التحقق التلقائي للتأكد من عدم وجود وحدات تخزين ثابتة تم إنشاؤها من تجمع التخزين. يؤدي تحديد n إلى تجاوز التحقق من الصحة هذا وتعطيل نوع تجمع التخزين، وحذف أي تجمعات تخزين موجودة وربما يؤثر على التطبيق الخاص بك.

لا يمكن حذف مجموعة الموارد التي تحتوي على نظام مجموعة AKS

إذا قمت بإنشاء تجمع تخزين Elastic SAN، فقد لا تتمكن من حذف مجموعة الموارد التي يوجد بها نظام مجموعة AKS.

لحل هذه المشكلة، سجل الدخول إلى مدخل Microsoft Azure وحدد Resource groups. حدد موقع مجموعة الموارد التي أنشأتها AKS (يبدأ اسم مجموعة الموارد MC_). حدد كائن مورد SAN ضمن مجموعة الموارد هذه. إزالة كافة وحدات التخزين ومجموعات وحدات التخزين يدويا. ثم أعد محاولة حذف مجموعة الموارد التي تتضمن مجموعة AKS الخاصة بك.

استكشاف مشكلات وحدة التخزين الثابتة وإصلاحها

لا يمكن إنشاء وحدات تخزين ثابتة من تجمعات تخزين الأقراص سريعة الزوال

نظرا لأن الأقراص سريعة الزوال (NVMe المحلية وSSD المؤقتة) سريعة الزوال وليست دائمة، فإننا نفرض استخدام وحدات التخزين المؤقتة العامة Kubernetes. إذا حاولت إنشاء مطالبة وحدة تخزين ثابتة باستخدام تجمع قرص سريع الزوال، فسترى الخطأ التالي: خطأ من الخادم (ممنوع): خطأ عند إنشاء "eph-pvc.yaml": رفض إخطار على الويب للقبول "pvc.acstor.azure.com" الطلب: يسمح فقط بوحدات التخزين العامة سريعة الزوال في تجمعات تخزين سريعة الزوال غير مكررة.

إذا كنت بحاجة إلى وحدة تخزين ثابتة، حيث تحتوي وحدة التخزين على دورة حياة مستقلة عن أي جراب فردي يستخدم وحدة التخزين، يدعم Azure Container Storage النسخ المتماثل ل NVMe. يمكنك إنشاء تجمع تخزين مع النسخ المتماثل وإنشاء وحدات تخزين ثابتة من هناك. راجع إنشاء تجمع تخزين مع النسخ المتماثل وحدة التخزين للحصول على إرشادات. لاحظ أنه نظرا لأن تجمعات تخزين القرص سريعة الزوال تستهلك جميع أقراص NVMe المتوفرة، يجب حذف أي تجمعات تخزين قرص سريعة الزوال قبل إنشاء تجمع تخزين جديد مع تمكين النسخ المتماثل. إذا لم تكن بحاجة إلى استمرار، يمكنك إنشاء وحدة تخزين سريعة الزوال عامة.

إنشاء Pod المعلق بسبب حجم وحدة التخزين المؤقتة فوق السعة المتوفرة

يتم تخصيص وحدة تخزين سريعة الزوال على عقدة واحدة. عند تكوين حجم وحدات التخزين المؤقتة لوحدات الجراب الخاصة بك، يجب أن يكون الحجم أقل من السعة المتوفرة للقرص المؤقت لعقدة واحدة. وإلا، سيكون إنشاء الجراب في حالة معلقة.

استخدم الأمر التالي للتحقق مما إذا كان إنشاء الجراب الخاص بك في حالة معلقة.

$ kubectl get pods
NAME     READY   STATUS    RESTARTS   AGE
fiopod   0/1     Pending   0          17s

في هذا المثال، الحاوية fiopod في Pending حالة .

استخدم الأمر التالي للتحقق مما إذا كان الحاوية تحتوي على حدث التحذير لإنشاء persistentvolumeclaim.

$ kubectl describe pod fiopod
...
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  40s   default-scheduler  0/3 nodes are available: waiting for ephemeral volume controller to create the persistentvolumeclaim "fiopod-ephemeralvolume". preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling..

في هذا المثال، يعرض pod حدث التحذير عند إنشاء مطالبة fiopod-ephemeralvolumeوحدة تخزين ثابتة .

استخدم الأمر التالي للتحقق مما إذا كانت مطالبة وحدة التخزين الدائمة تفشل في التوفير بسبب عدم كفاية السعة.

$ kubectl describe pvc fiopod-ephemeralvolume
...
  Warning  ProvisioningFailed    107s (x13 over 20m)  containerstorage.csi.azure.com_aks-nodepool1-29463073-vmss000000_7f5bd88d-be76-40d2-a59e-e51ce000e35e  failed to provision volume with StorageClass "acstor-ephemeraldisk-temp": rpc error: code = Internal desc = Operation failed: GenericOperation("error in response: status code '507 Insufficient Storage', content: 'RestJsonError { details: \"Operation failed due to insufficient resources: Not enough suitable pools available, 0/1\", message: \"SvcError :: NotEnoughResources\", kind: ResourceExhausted }'")

في هذا المثال، Insufficient Storage يظهر كسبب لفشل توفير وحدة التخزين.

قم بتشغيل الأمر التالي للتحقق من السعة المتوفرة للقرص المؤقت لعقدة واحدة.

$ 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 غيغابايت.

اضبط حجم تخزين وحدة التخزين أقل من السعة المتوفرة وأعد توزيع الجراب الخاص بك. راجع نشر جراب مع وحدة تخزين سريعة الزوال عامة.

(راجع أيضًا )