استخدام برنامج تشغيل Azure Blob storage Container Storage Interface (CSI)
برنامج تشغيل Azure Blob Storage Container Storage Interface (CSI) هو برنامج تشغيل متوافق مع مواصفات CSI تستخدمه خدمة Azure Kubernetes (AKS) لإدارة دورة حياة تخزين Azure Blob. منظمة التضامن المسيحي الدولية هو معيار لفضح كتلة التعسفي وأنظمة تخزين الملفات لأعباء العمل في حاويات على Kubernetes.
من خلال اعتماد واستخدام CSI، يمكن لـ AKS الآن كتابة وتوزيع وتكرار المكونات الإضافية لكشف أنظمة التخزين الجديدة أو تحسين أنظمة التخزين الحالية في Kubernetes. يؤدي استخدام برامج تشغيل CSI في AKS إلى تجنب الاضطرار إلى لمس التعليمات البرمجية الأساسية لـ Kubernetes وانتظار دورات الإصدار الخاصة به.
عند تحميل تخزين Azure Blob كنظام ملفات في حاوية أو جراب، فإنه يمكنك من استخدام تخزين blob مع عدد من التطبيقات التي تعمل كميات هائلة من البيانات غير المنظمة. على سبيل المثال:
- تسجيل بيانات الملف
- الصور والمستندات وبث الفيديو أو الصوت
- إصلاح البيانات بعد الكوارث (DR)
يمكن الوصول إلى البيانات الموجودة على تخزين الكائن بواسطة التطبيقات باستخدام بروتوكول BlobFuse أو Network File System (NFS) 3.0. قبل إدخال برنامج تشغيل CSI لتخزين Azure Blob، كان الخيار الوحيد هو تثبيت برنامج تشغيل غير مدعوم يدويا للوصول إلى تخزين Blob من التطبيق الخاص بك الذي يعمل على AKS. عند تمكين برنامج تشغيل CSI لتخزين Azure Blob على AKS، هناك فئتان مضمنتان للتخزين: azureblob-fuse-premium وazureblob-nfs-premium.
لإنشاء مجموعة AKS بدعم برامج تشغيل CSI، قم بمراجعة برامج تشغيل CSI على AKS. لمعرفة المزيد حول الاختلافات في الوصول بين كل نوع من أنواع تخزين Azure باستخدام بروتوكول NFS، راجع مقارنة الوصول إلى ملفات Azure وتخزين Blob وAzure NetApp Files باستخدام NFS.
ميزات برنامج تشغيل CSI لتخزين Azure Blob
يدعم برنامج تشغيل CSI لتخزين Azure Blob الميزات التالية:
- بروتوكول BlobFuse ونظام ملفات الشبكة (NFS) الإصدار 3.0
قبل البدء
تأكد من تثبيت الإصدار 2.42 من Azure CLI أو إصدار أحدث وتكوينه. قم بتشغيل
az --version
للعثور على الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI. إذا قمت بتثبيت ملحق Azure CLIaks-preview
، فتأكد من تحديث الملحق إلى أحدث إصدار عن طريق استدعاءaz extension update --name aks-preview
.نفذ الخطوات الواردة في هذا الارتباط إذا قمت مسبقًا بتثبيت برنامج تشغيل CSI Blob Storage مفتوح المصدر للوصول إلى تخزين Azure Blob من مجموعتك.
إشعار
إذا لم يتم تمكين وكيل blobfuse أثناء تثبيت برنامج تشغيل مصدر مفتوح، سيؤدي إلغاء تثبيت برنامج تشغيل مصدر مفتوح إلى تعطيل عمليات تحميل blobfuse الموجودة. ومع ذلك، ستظل تركيبات NFS غير متأثرة.
تمكين برنامج تشغيل CSI على نظام مجموعة AKS جديد أو موجود
باستخدام Azure CLI، يمكنك تمكين برنامج تشغيل Blob storage CSI على نظام مجموعة AKS جديد أو موجود قبل تكوين وحدة تخزين ثابتة للاستخدام من قبل pods في نظام المجموعة.
لتمكين برنامج التشغيل على نظام مجموعة جديد، قم بتضمين --enable-blob-driver
المعلمةaz aks create
مع الأمر كما هو موضح في المثال التالي:
az aks create \
--enable-blob-driver \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
لتمكين برنامج التشغيل على نظام مجموعة موجود، قم بتضمين --enable-blob-driver
المعلمةaz aks update
مع الأمر كما هو موضح في المثال التالي:
az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
تتم مطالبتك بتأكيد عدم تثبيت برنامج تشغيل Blob CSI مفتوح المصدر. بعد التأكيد، قد يستغرق إكمال هذا الإجراء عدة دقائق. بمجرد اكتماله، يجب أن ترى في الإخراج حالة تمكين برنامج التشغيل على نظام المجموعة الخاص بك. يشبه المثال التالي القسم الذي يشير إلى نتائج الأمر السابق:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
تعطيل برنامج تشغيل CSI على نظام مجموعة AKS موجود
باستخدام Azure CLI، يمكنك تعطيل برنامج تشغيل CSI لتخزين Blob على نظام مجموعة AKS موجود بعد إزالة وحدة التخزين الثابتة من نظام المجموعة.
لتعطيل برنامج التشغيل على نظام مجموعة موجود، قم بتضمين --disable-blob-driver
المعلمةaz aks update
مع الأمر كما هو موضح في المثال التالي:
az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
استخدم وحدة تخزين ثابتة مع تخرين Azure Blob
تمثل وحدة التخزين الثابتة (PV) قطعة تخزين يتم توفيرها للاستخدام مع قرون Kubernetes. يمكن استخدام PV من قبل واحد أو العديد من القرون ويمكن توفيرها ديناميكيا أو ثابتا. إذا احتاجت العديد من pods إلى وصول متزامن إلى نفس وحدة التخزين، فيمكنك استخدام تخزين Azure Blob للاتصال باستخدام نظام ملفات الشبكة (NFS) أو blobfuse. توضح لك هذه المقالة كيفية إنشاء حاوية تخزين Azure Blob ديناميكيًا لاستخدامها من قبل عدة قرون في مجموعة AKS.
لمزيد من المعلومات حول وحدات تخزين Kubernetes، راجع خيارات التخزين للتطبيقات في AKS .
إنشاء PVs PV تخزين Azure Blob ديناميكيًا باستخدام فئات التخزين المضمنة
يتم استخدام فئة تخزين لتحديد كيفية إنشاء حاوية تخزين Azure Blob. يتم إنشاء حساب التخزين تلقائيًا في مجموعة موارد العقدة للاستخدام مع فئة التخزين للاحتفاظ بحاوية تخزين Azure Blob. اختر أحد وحدات SKU الخاصة بتكرار تخزين Azure لـ skuName:
- Standard_LRS : تخزين قياسي محلي إضافي
- Premium_LRS : مساحة تخزين متميزة وفائضة محليًا
- Standard_ZRS: التخزين المتكرر للمنطقة القياسية
- Premium_ZRS: التخزين المتكرر للمنطقة المتميزة
- Standard_GRS : تخزين قياسي متكرر جغرافيًا
- Standard_RAGRS : تخزين قياسي مكرر جغرافيًا يمكن الوصول إليه للقراءة
عند استخدام برامج تشغيل التخزين CSI على AKS، هناك نوعان إضافيان من StorageClasses المضمنة التي تستخدم برنامج تشغيل تخزين Azure Blob CSI.
تضمن سياسة الاسترداد في كلا فئتي التخزين حذف مخزن Azure Blob الأساسي عند حذف PV ذات الصلة. تقوم فئات التخزين أيضًا بتكوين الحاوية لتكون قابلة للتوسيع بشكل افتراضي، حيث يتم تعيين المعلمة set allowVolumeExpansion
إلى true.
إشعار
تقليص وحدات التخزين الثابتة غير مدعوم.
استخدم الأمر kubectl get sc لمشاهدة فئات التخزين التي تم إنشاؤها مسبقًا. يوضح المثال التالي فئات التخزين azureblob-fuse-premium
وazureblob-nfs-premium
المتاحة داخل مجموعة AKS:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
azureblob-fuse-premium blob.csi.azure.com Delete Immediate true 23h
azureblob-nfs-premium blob.csi.azure.com Delete Immediate true 23h
لاستخدام فئات التخزين هذه، قم بإنشاء PVC والحجرة الخاصة التي تشير إليها واستخدمها. يتم استخدام PVC لتوفير التخزين تلقائيا استنادا إلى فئة تخزين. يمكن أن تستخدم PVC إحدى فئات التخزين التي تم إنشاؤها مسبقًا أو فئة التخزين المعرفة من قبل المستخدم لإنشاء حاوية تخزين Azure Blob لـ SKU والحجم والبروتوكول المطلوب للتواصل معها. عند إنشاء تعريف جراب، يتم تحديد PVC لطلب التخزين المطلوب.
استخدام StatefulSet
للحصول على وحدة تخزين ثابتة لحمل العمل الخاص بك، يمكنك استخدام StatefulSet. هذا يجعل من السهل مطابقة وحدات التخزين الموجودة مع وحدات الجراب الجديدة التي تحل محل أي وحدات فشل. توضح الأمثلة التالية كيفية إعداد StatefulSet لتخزين Blob باستخدام إما Blobfuse أو بروتوكول NFS.
المتطلبات الأساسية
- تتم إضافة هوية وحدة التحكم في نظام مجموعة AKS (أي اسم مجموعة AKS) إلى دور المساهم على VNet ومجموعة أمان الشبكة.
قم بإنشاء ملف باسم
azure-blob-nfs-ss.yaml
وانسخه في YAML التالي.apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-blob-nfs labels: app: nginx spec: serviceName: statefulset-blob-nfs replicas: 1 template: metadata: labels: app: nginx spec: nodeSelector: "kubernetes.io/os": linux containers: - name: statefulset-blob-nfs image: mcr.microsoft.com/oss/nginx/nginx:1.22 volumeMounts: - name: persistent-storage mountPath: /mnt/blob updateStrategy: type: RollingUpdate selector: matchLabels: app: nginx volumeClaimTemplates: - metadata: name: persistent-storage spec: storageClassName: azureblob-nfs-premium accessModes: ["ReadWriteMany"] resources: requests: storage: 100Gi
إنشاء StatefulSet باستخدام الأمر kubectl create:
kubectl create -f azure-blob-nfs-ss.yaml
الخطوات التالية
- لمعرفة كيفية إعداد وحدة تخزين ثابتة أو ديناميكية، راجع إنشاء وحدة تخزين واستخدامها مع تخزين Azure Blob.
- لمعرفة كيفية استخدام برنامج تشغيل CSI لأقراص Azure، راجع استخدام أقراص Azure مع برنامج تشغيل CSI
- لمعرفة كيفية استخدام برنامج تشغيل CSI لملفات Azure، راجع استخدام ملفات Azure مع برنامج تشغيل CSI
- لمزيد من المعلومات حول أفضل ممارسات التخزين، راجع أفضل ممارسات التخزين والنسخ الاحتياطية في خدمة Azure Kubernetes .
Azure Kubernetes Service