إدارة تخزين Kubernetes على جهاز Azure Stack Edge Pro GPU

ينطبق على:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

على جهاز Azure Stack Edge Pro، يتم إنشاء مجموعة Kubernetes عند تكوين دور الحساب. بمجرد إنشاء مجموعة Kubernetes، يمكن نشر التطبيقات الحاوية على مجموعة Kubernetes في pods. هناك طرق مميزة لتوفير التخزين للقرون في مجموعة Kubernetes الخاصة بك.

توضح هذه المقالة أساليب توفير التخزين على مجموعة Kubernetes بشكل عام وتحديدا في سياق جهاز Azure Stack Edge Pro.

متطلبات التخزين لوحدات Kubernetes

جرابات Kubernetes عديمة الحالة ولكن التطبيقات التي تشغلها عادة ما تكون ذات حالة. نظرا لأن وحدات الجراب يمكن أن تكون قصيرة الأجل، وأنها تعيد التشغيل أو تفشل أو تنتقل بين عقد Kubernetes، يجب تلبية المتطلبات التالية للتخزين المرتبط بالجراب.

يجب أن يكون التخزين:

  • يعيش خارج الجراب.
  • كن مستقلا عن دورة حياة الجراب.
  • يمكن الوصول إليها من جميع عقد Kubernetes.

لفهم كيفية إدارة التخزين ل Kubernetes، يحتاج المرء إلى فهم موردين لواجهة برمجة التطبيقات:

  • PersistentVolume (PV): هذا جزء من التخزين في مجموعة Kubernetes. يمكن توفير تخزين Kubernetes بشكل ثابت ك PersistentVolume. يمكن أيضا توفيره ديناميكيا ك StorageClass.

  • PersistentVolumeClaim (PVC):هذا طلب للتخزين من قبل المستخدم. تستهلك أجهزة الكمبيوتر الشخصية موارد PV. يمكن لأجهزة الكمبيوتر الشخصية طلب أوضاع محددة للوصول والحجم.

    نظرا لأن المستخدمين يحتاجون إلى PersistentVolumes خصائص مختلفة لمشاكل مختلفة، وبالتالي يحتاج مسؤولو نظام المجموعة إلى أن يكونوا قادرين على تقديم مجموعة متنوعة من PersistentVolumes تلك تختلف بطرق أكثر من أوضاع الحجم والوصول فقط. لهذه الاحتياجات، تحتاج إلى StorageClass المورد.

يمكن أن يكون توفير التخزين ثابتا أو ديناميكيا. تتم مناقشة كل نوع من أنواع التوفير في الأقسام التالية.

التزويد الثابت

يمكن لمسؤولي مجموعة Kubernetes توفير التخزين بشكل ثابت. للقيام بذلك، يمكنهم استخدام الواجهة الخلفية للتخزين استنادا إلى أنظمة ملفات SMB/NFS أو استخدام أقراص iSCSI التي يتم إرفاقها محليا عبر الشبكة في بيئة محلية، أو حتى استخدام ملفات Azure أو أقراص Azure في السحابة. لا يتم توفير هذا النوع من التخزين بشكل افتراضي ويتعين على مسؤولي نظام المجموعة تخطيط وإدارة هذا التزويد.

فيما يلي رسم تخطيطي يوضح كيفية استهلاك التخزين الذي تم توفيره بشكل ثابت في Kubernetes:

Static provisioning via PersistentVolumes

تحدث الخطوات التالية:

  1. توفير التخزين: يقوم مسؤول نظام المجموعة بتوفير التخزين. في هذا المثال، يقوم مسؤول نظام المجموعة بإنشاء مشاركات SMB واحدة أو أكثر تنشئ تلقائيا كائنات وحدة تخزين ثابتة في مجموعة Kubernetes المقابلة لهذه المشاركات.

  2. تخزين المطالبة: يمكنك إرسال توزيع PVC الذي يطلب التخزين. هذه المطالبة للتخزين هي PersistentVolumeClaim (PVC). إذا تطابق حجم ووضع الوصول ل PV مع حجم PVC، فإن PVC مرتبط ب PV. خريطة PVC وPV واحد إلى واحد.

  3. تحميل PVC إلى الحاوية: بمجرد ربط PVC ب PV، يمكنك تحميل PVC هذا على مسار في الحاوية الخاصة بك. عندما يقرأ منطق التطبيق في الحاوية/ يكتب من/إلى هذا المسار، تتم كتابة البيانات في تخزين SMB.

التزويد الديناميكي

فيما يلي رسم تخطيطي يوضح كيفية استهلاك التخزين الذي تم توفيره بشكل ثابت في Kubernetes:

Dynamic provisioning via StorageClasses

تحدث الخطوات التالية:

  1. تعريف فئة التخزين: يحدد مسؤول نظام المجموعة فئة تخزين اعتمادا على بيئة التشغيل لمجموعة Kubernetes الخاصة بك. يقوم مسؤول نظام المجموعة أيضا بنشر توفير، وهو عبارة عن جراب آخر أو تطبيق آخر تم نشره على مجموعة Kubernetes. لدى مقدم الخدمة جميع التفاصيل لتوفير المشاركات ديناميكيا.

  2. تخزين المطالبة: يمكنك إرسال تطبيق يطالب بالتخزين. بمجرد إنشاء PVC مع مرجع فئة التخزين هذا، يتم استدعاء الموفر.

  3. توفير التخزين ديناميكيا: يقوم موفر الخدمة بإنشاء المشاركة المرتبطة بتخزين القرص المحلي ديناميكيا. بمجرد إنشاء المشاركة، فإنه ينشئ أيضا كائن PV يتوافق تلقائيا مع هذه المشاركة.

  4. تحميل PVC إلى الحاوية: بمجرد ربط PVC ب PV، يمكنك تحميل PVC على الحاوية على مسار بنفس الطريقة مثل التوفير الثابت والقراءة من المشاركة أو الكتابة فيها.

توفير التخزين على Azure Stack Edge Pro

على جهاز Azure Stack Edge Pro، يتم إنشاء توفير PersistentVolumes ثابت باستخدام قدرات تخزين الجهاز. عند توفير مشاركة واستخدام خيار المشاركة مع حوسبة Edge، ينشئ هذا الإجراء مورد PV تلقائيا في مجموعة Kubernetes.

Local share creation in Azure portal for static provisioning

لاستخدام ترتيب السحابة، يمكنك إنشاء مشاركة سحابة Edge مع تمكين خيار استخدام المشاركة مع حوسبة Edge. يتم إنشاء PV مرة أخرى تلقائيا لهذه المشاركة. يتم ترتيب أي بيانات تطبيق تكتبها إلى مشاركة Edge على السحابة.

Cloud share creation in Azure portal for static provisioning

يمكنك إنشاء مشاركات SMB وNFS لتوفير أجهزة PV بشكل ثابت على جهاز Azure Stack Edge Pro. بمجرد توفير PV، سترسل PVC للمطالبة بهذا التخزين. فيما يلي مثال على توزيع yaml PVC الذي يطالب بالتخزين ويستخدم المشاركات التي قمت بتوفيرها.

kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
  name: pvc-smb-flexvol 
spec: 
  accessModes: 
  - ReadWriteMany 
  resources: 
    requests: 
      storage: 10Gi 
  volumeName: <nfs-or-smb-share-name-here> 
  storageClassName: ""

للحصول على قيمة volumeName الحقل، حدد نقطة التحميل المحلية لوحدات حساب Edge عند تحديد مشاركة SMB أو NFS بعد الإنشاء. هذا هو نفس اسم المشاركة.

لمزيد من المعلومات، راجع نشر تطبيق ذي حالة عبر توفير ثابت على Azure Stack Edge Pro عبر kubectl.

للوصول إلى نفس التخزين الذي تم توفيره بشكل ثابت، تكون خيارات تحميل وحدة التخزين المقابلة لروابط التخزين ل IoT كما يلي. /home/input هو المسار الذي يمكن الوصول إلى وحدة التخزين داخل الحاوية.

{
"HostConfig": {
"Mounts": [
{
"Target": "/home/input",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
},
{
"Target": "/home/output",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
}]
}
}

يحتوي Azure Stack Edge Pro أيضا على مضمن StorageClass يسمى ase-node-local يستخدم تخزين قرص البيانات المرفق بعقدة Kubernetes. وهذا StorageClass يدعم التزويد الديناميكي. يمكنك إنشاء StorageClass مرجع في تطبيقات pod ويتم إنشاء PV تلقائيا لك. لمزيد من المعلومات، راجع لوحة معلومات Kubernetes للاستعلام عن ase-node-local StorageClass.

Built-in storage class in Kubernetes dashboard

لمزيد من المعلومات، راجع نشر تطبيق ذي حالة عبر التزويد الديناميكي على Azure Stack Edge Pro عبر kuebctl.

اختيار نوع التخزين

قد تحتاج إلى اختيار نوع التخزين الخاص بك اعتمادا على حمل العمل الذي تقوم بنشره.

  • إذا كنت تريد ReadWriteMany وضع الوصول الخاص بك PersistentVolumes حيث يتم تحميل وحدات التخزين للقراءة والكتابة بواسطة العديد من العقد التي يتم توزيعها، فاستخدم التوفير الثابت لمشاركات SMB/NFS.

  • إذا كانت التطبيقات التي تقوم بنشرها لها متطلبات توافق POSIX، على سبيل المثال، تطبيقات مثل MongoDB أو PostgreSQL أو MySQL أو Prometheus، فاستخدم StorageClass المضمنة. أوضاع الوصول هي ReadWriteOnce أو يتم تحميل وحدة التخزين للقراءة والكتابة بواسطة عقدة واحدة.

لمزيد من المعلومات حول أوضاع الوصول، راجع وضع الوصول إلى وحدات تخزين Kubernetes.

الخطوات التالية

لفهم كيفية توفير PersistentVolume، راجع:

لمعرفة كيفية توفير StorageClass، راجع: