إنشاء وحدة تخزين واستخدامها مع تخزين Azure Blob في خدمة Azure Kubernetes (AKS)

غالبًا ما تحتاج التطبيقات المستندة إلى حاوية إلى الوصول إلى البيانات، والمثابرة عليها في وحدة تخزين بيانات خارجية. إذا كانت القرون المتعددة بحاجة إلى وصول متزامن إلى نفس وحدة التخزين، فيمكنك استخدام تخزين Azure Blob للاتصال باستخدام blobfuse أو Network File System (NFS).

توضح لك هذه المقالة كيفية:

  • العمل مع وحدة تخزين ثابتة ديناميكية (PV) عن طريق تثبيت برنامج تشغيل واجهة تخزين الحاوية (CSI) وإنشاء حاوية تخزين Azure Blob بشكل ديناميكي لإرفاقها بحاوية.
  • العمل مع PV ثابت عن طريق إنشاء حاوية تخزين Azure Blob، أو استخدام حاوية موجودة وإرفاقها ب pod.

لمزيد من المعلومات حول وحدات تخزين Kubernetes، راجع خيارات التخزين للتطبيقات في AKS .

قبل البدء

  • تمكين برنامج تشغيل Blob storage CSI على نظام مجموعة AKS.

  • لدعم حساب تخزين Azure DataLake Gen2 عند استخدام تحميل blobfuse، ستحتاج إلى القيام بما يلي:

    • لإنشاء حساب ADLS باستخدام برنامج التشغيل في التوفير الديناميكي، حدد isHnsEnabled: "true" في معلمات فئة التخزين.
    • لتمكين الوصول blobfuse إلى حساب ADLS في التوفير الثابت، حدد خيار --use-adls=true التحميل في وحدة التخزين الثابتة.
    • إذا كنت ستقوم بتمكين حساب تخزين باستخدام Namespace هرمية، يجب إعادة تحميل وحدات التخزين الثابتة الموجودة مع --use-adls=true خيار التحميل.
  • حول ذاكرة التخزين المؤقت blobfuse

    • بشكل افتراضي، توجد ذاكرة التخزين المؤقت blobfuse في /mnt الدليل. إذا كان VM SKU يوفر قرصا مؤقتا، /mnt يتم تحميل الدليل على القرص المؤقت. ومع ذلك، إذا لم يوفر VM SKU قرصا مؤقتا، /mnt يتم تحميل الدليل على قرص نظام التشغيل، يمكنك تعيين --tmp-path= خيار التحميل لتحديد دليل ذاكرة تخزين مؤقت مختلفة

توفير وحدة تخزين ديناميكيا

يوفر هذا القسم إرشادات لمسؤولي نظام المجموعة الذين يرغبون في توفير وحدة تخزين ثابتة واحدة أو أكثر تتضمن تفاصيل تخزين Blob لاستخدامها بواسطة حمل العمل. تستخدم مطالبة وحدة التخزين الدائمة (PVC) كائن فئة التخزين لتوفير مشاركة ملف Azure بشكل ديناميكي.

معلمات فئة التخزين لوحدات التخزين الثابتة الديناميكية

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

Name الوصف مثال إلزامي القيمة الافتراضية
skuName حدد نوع حساب تخزين Azure (الاسم المستعار: storageAccountType). Standard_LRS، ، Premium_LRS، Standard_GRSStandard_RAGRS لا Standard_LRS
مكان حدد موقع Azure. eastus لا إذا كان فارغاً، فسيستخدم السائق نفس اسم الموقع مثل مجموعة AKS الحالية.
resourceGroup اسم مجموعة موارد Azure الخاصة بك. myResourceGroup لا إذا كان فارغًا، فسيستخدم برنامج التشغيل نفس اسم مجموعة الموارد مثل نظام المجموعة الحالية.
storageAccount حدد اسم حساب تخزين Azure. storageAccountName -لا عند عدم توفير اسم حساب تخزين معين، سيبحث برنامج التشغيل عن حساب تخزين مناسب يطابق إعدادات الحساب داخل نفس مجموعة الموارد. إذا فشل في العثور على حساب تخزين مطابق، فسينشئ حسابا جديدا. ومع ذلك، إذا تم تحديد اسم حساب تخزين، يجب أن يكون حساب التخزين موجودا بالفعل.
نوع نقطة نهاية الشبكة حدد نوع نقطة نهاية الشبكة لحساب التخزين الذي تم إنشاؤه بواسطة برنامج التشغيل. إذا تم تحديد نقطة نهاية خاصة، يتم إنشاء نقطة نهاية خاصة لحساب التخزين. بالنسبة للحالات الأخرى، سيتم إنشاء نقطة نهاية خدمة لبروتوكول NFS.1 privateEndpoint لا بالنسبة إلى نظام مجموعة AKS، أضف اسم مجموعة AKS إلى دور المساهم في مجموعة الموارد التي تستضيف VNET.
البروتوكول حدد تحميل blobfuse أو تحميل NFSv3. fuse, nfs لا fuse
containerName حدد اسم الحاوية (الدليل) الموجود. حاوية لا إذا كان فارغًا، يقوم برنامج التشغيل بإنشاء اسم حاوية جديد، بدءًا من pvc-fuse blobfuse أو pvc-nfs ل NFS v3.
containerNamePrefix حدد بادئة دليل تخزين Azure التي تم إنشاؤها بواسطة برنامج التشغيل. my يمكن أن يحتوي فقط على أحرف صغيرة وأرقام وواصلات وطول يجب أن يكون أقل من 21 حرفًا. لا
الخادم حدد اسم مجال حساب تخزين Azure. اسم مجال DNS لحساب التخزين الموجود، على سبيل المثال <storage-account>.privatelink.blob.core.windows.net. لا إذا كان فارغًا، يستخدم برنامج التشغيل اسم مجال DNS لحساب تخزين على السحابة الافتراضي <storage-account>.blob.core.windows.net أو أي حساب تخزين سحابي آخر ذي سيادة.
allowBlobPublicAccess السماح بالوصول العام أو عدم السماح به لجميع الكائنات الثنائية كبيرة الحجم أو الحاويات لحساب التخزين الذي أنشأه برنامج التشغيل. true,false لا false
storageEndpointSuffix حدد لاحقة نقطة نهاية تخزين Azure. core.windows.net لا إذا كان فارغًا، فسيستخدم برنامج التشغيل لاحقة نقطة نهاية التخزين الافتراضية وفقا لبيئة السحابة.
العلامات سيتم إنشاء العلامات في حساب تخزين جديد. تنسيق العلامة: 'foo=aaa,bar=bbb' لا ""
علامات المطابقة مطابقة العلامات عندما يحاول برنامج التشغيل العثور على حساب تخزين مناسب. true,false لا false
--- المعلمات التالية مخصصة فقط لـ blobfuse --- --- ---
subscriptionID حدد معرف اشتراك Azure حيث سيتم إنشاء دليل تخزين الكائن الثنائي كبير الحجم. مُعرف اشتراكك في Azure لا إذا لم يكن فارغاً، فيجب تقديم resourceGroup.
storeAccountKey حدد مفتاح حساب المتجر إلى بيانات Kubernetes السرية.

ملاحظه:
false يعني أن برنامج التشغيل يستخدم هوية kubelet للحصول على مفتاح الحساب.
true,false لا true
secretName حدد اسمًا سريًا لتخزين مفتاح الحساب. لا
secretNamespace حدد مساحة اسم البيانات السرية لتخزين مفتاح الحساب. default،kube-system، وما إلى ذلك. لا مساحة اسم pvc
isHnsEnabled تمكين Hierarchical namespace لحساب تخزين Azure Data Lake. true,false لا false
--- المعلمات التالية مخصصة فقط لبروتوكول NFS --- --- ---
mountPermissions حدد أذونات المجلد المحمل. الافتراضي هو 0777. إذا تم التعيين إلى 0، فلن يعمل chmod برنامج التشغيل بعد التحميل. 0777 لا

1 إذا تم إنشاء حساب التخزين بواسطة برنامج التشغيل، فأنت تحتاج فقط إلى تحديد networkEndpointType: privateEndpoint معلمة في فئة التخزين. يقوم برنامج تشغيل CSI بإنشاء نقطة النهاية الخاصة مع الحساب. إذا قمت بإحضار حساب التخزين الخاص بك، فأنت بحاجة إلى إنشاء نقطة نهاية خاصة لحساب التخزين.

إنشاء مطالبة وحدة تخزين ثابتة باستخدام فئة التخزين المضمنة

تستخدم مطالبة وحدة التخزين الدائمة (PVC) كائن فئة التخزين لتوفير مشاركة ملف Azure بشكل ديناميكي. يمكن استخدام YAML التالي لإنشاء مطالبة ثابتة لوحدة التخزين بحجم 5 غيغابايت مع وصول ReadWriteMany، باستخدام فئة التخزين المدمجة. لمزيد من المعلومات حول أوضاع الوصول، راجع وثائق وحدة التخزين الدائمة لـ Kubernetes.

  1. قم بإنشاء ملف باسم blob-nfs-pvc.yaml وانسخه في YAML التالي.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azure-blob-storage
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: azureblob-nfs-premium
      resources:
        requests:
          storage: 5Gi
    
  2. إنشاء مطالبة وحدة التخزين الدائمة باستخدام الأمر kubectl create :

    kubectl create -f blob-nfs-pvc.yaml
    

بمجرد الانتهاء، سيتم إنشاء حاوية تخزين Blob. يمكنك استخدام الأمر kubectl get لعرض حالة PVC:

kubectl get pvc azure-blob-storage

إخراج الأمر يشبه المثال التالي:

NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
azure-blob-storage   Bound    pvc-b88e36c5-c518-4d38-a5ee-337a7dda0a68   5Gi        RWX            azureblob-nfs-premium       92m

إنشاء مطالبة وحدة التخزين الثابتة

ينشئ YAML التالية حاوية تستخدم مطالبة وحدة التخزين my-azurefile لتحميل مشاركة ملف Azure في المسار /mnt/azure.

  1. قم بإنشاء ملف باسم blob-nfs-pv وانسخه في ملف YAML التالي. تأكد من أن claimName يطابق PVC التي تم إنشاؤها في الخطوة الأخيرة.

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
      - name: mypod
        image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/blob"
          name: volume
          readOnly: false
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-blob-storage
    
  2. أنشئ الكبسولة باستخدام الأمر kubectl apply:

    kubectl apply -f blob-nfs-pv.yaml
    
  3. بعد أن يكون البود في حالة التشغيل، قم بتشغيل الأمر التالي لإنشاء ملف جديد يسمى test.txt.

    kubectl exec mypod -- touch /mnt/blob/test.txt
    
  4. للتحقق من صحة تثبيت القرص بشكل صحيح، قم بتشغيل الأمر التالي وتحقق من رؤية الملف test.txt في الإخراج:

    kubectl exec mypod -- ls /mnt/blob
    

    إخراج الأمر يشبه المثال التالي:

    test.txt
    

إنشاء فئة تخزين مخصصة

تناسب فئات التخزين الافتراضية السيناريوهات الأكثر شيوعا، ولكن ليس كلها. في بعض الحالات، قد ترغب في تخصيص فئة التخزين الخاصة بك مع المعلمات الخاصة بك. في هذا القسم، نقدم مثالين. يستخدم الأول بروتوكول NFS، والثاني يستخدم blobfuse.

فئة التخزين باستخدام بروتوكول NFS

في هذا المثال، يقوم البيان التالي بتكوين تحميل حاوية تخزين Blob باستخدام بروتوكول NFS. استخدمه لإضافة معلمة العلامات.

  1. قم بإنشاء ملف باسم blob-nfs-sc.yaml، والصق مثال البيان التالي:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azureblob-nfs-premium
    provisioner: blob.csi.azure.com
    parameters:
      protocol: nfs
      tags: environment=Development
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - nconnect=4
    
  2. أنشئ فئة التخزين باستخدام الأمر kubectl apply :

    kubectl apply -f blob-nfs-sc.yaml
    

    إخراج الأمر يشبه المثال التالي:

    storageclass.storage.k8s.io/blob-nfs-premium created
    

فئة التخزين باستخدام blobfuse

في هذا المثال، يكون البيان التالي باستخدام blobfuse ويحمل حاوية تخزين Blob. استخدمه لتحديث معلمة skuName.

  1. قم بإنشاء ملف باسم blobfuse-sc.yaml، والصق مثال البيان التالي:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azureblob-fuse-premium
    provisioner: blob.csi.azure.com
    parameters:
      skuName: Standard_GRS  # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - -o allow_other
      - --file-cache-timeout-in-seconds=120
      - --use-attr-cache=true
      - --cancel-list-on-mount-seconds=10  # prevent billing charges on mounting
      - -o attr_timeout=120
      - -o entry_timeout=120
      - -o negative_timeout=120
      - --log-level=LOG_WARNING  # LOG_WARNING, LOG_INFO, LOG_DEBUG
      - --cache-size-mb=1000  # Default will be 80% of available memory, eviction will happen beyond that.
    
  2. أنشئ فئة التخزين باستخدام الأمر kubectl apply :

    kubectl apply -f blobfuse-sc.yaml
    

    إخراج الأمر يشبه المثال التالي:

    storageclass.storage.k8s.io/blob-fuse-premium created
    

توفير وحدة تخزين بشكل ثابت

يوفر هذا القسم إرشادات لمسؤولي نظام المجموعة الذين يرغبون في إنشاء وحدة تخزين ثابتة واحدة أو أكثر تتضمن تفاصيل تخزين Blob لاستخدامها بواسطة حمل العمل.

معلمات التوفير الثابت لوحدات التخزين الثابتة

يتضمن الجدول التالي المعلمات التي يمكنك استخدامها لتعريف وحدة تخزين ثابتة.

Name الوصف مثال إلزامي القيمة الافتراضية
volumeHandle حدد قيمة يمكن لبرنامج التشغيل استخدامها لتعريف حاوية كائن ثنائي كبير الحجم للتخزين بشكل فريد في نظام المجموعة. الطريقة الموصى بها لإنتاج قيمة فريدة هي دمج اسم حساب التخزين الفريد عالميا واسم الحاوية: {account-name}_{container-name}.
ملاحظة: #الحرف ، / محجوز للاستخدام الداخلي ولا يمكن استخدامه في مقبض وحدة التخزين.
‏‏نعم‬
volumeAttributes.resourceGroup حدد اسم مجموعة موارد Azure. myResourceGroup لا إذا كان فارغا، يستخدم برنامج التشغيل نفس اسم مجموعة الموارد مثل نظام المجموعة الحالي.
volumeAttributes.storageAccount حدد اسم حساب تخزين Azure موجود. storageAccountName ‏‏نعم‬
volumeAttributes.containerName حدد اسم الحاوية الحالي. حاوية ‏‏نعم‬
volumeAttributes.protocol حدد blobfuse mount أو NFS v3 mount. fuse, nfs لا fuse
--- المعلمات التالية مخصصة فقط لـ blobfuse --- --- ---
volumeAttributes.secretName الاسم السري الذي يخزن اسم ومفتاح حساب التخزين (ينطبق فقط على SMB). لا
volumeAttributes.secretNamespace حدد مساحة اسم البيانات السرية لتخزين مفتاح الحساب. default لا مساحة اسم Pvc
nodeStageSecretRef.name حدد اسما سريا يخزن أحد الإجراءات التالية:
azurestorageaccountkey
azurestorageaccountsastoken
msisecret
azurestoragespnclientsecret.
لا اسم البيانات السرية الحالي لـ Kubernetes
nodeStageSecretRef.namespace حدد مساحة اسم البيانات السرية. مساحة اسم Kubernetes ‏‏نعم‬
--- المعلمات التالية مخصصة فقط لبروتوكول NFS --- --- ---
volumeAttributes.mountPermissions حدد أذونات المجلد المحمل. 0777 لا
--- المعلمات التالية مخصصة فقط لإعداد NFS VNet --- --- ---
vnetResourceGroup حدد مجموعة موارد الشبكة الظاهرية التي تستضيف شبكة ظاهرية. myResourceGroup لا إذا كان فارغًا، يستخدم برنامج التشغيل القيمة vnetResourceGroup المحددة في ملف تكوين السحابة Azure.
vnetName حدد اسم الشبكة الظاهرية. aksVNet لا إذا كان فارغًا، يستخدم برنامج التشغيل القيمة vnetName المحددة في ملف تكوين السحابة Azure.
subnetName حدد اسم الشبكة الفرعية الحالية لعقدة العامل. aksSubnet لا إذا كان فارغًا، يستخدم برنامج التشغيل القيمة subnetName في ملف تكوين سحابة Azure.
--- المعلمات التالية مخصصة فقط للميزة: blobfuse
مصادقة الهوية المُدارة واسم الخدمة الأساسي
--- --- ---
volumeAttributes.AzureStorageAuthType حدد نوع المصادقة. Key، ، SAS، MSISPN لا Key
volumeAttributes.AzureStorageIdentityClientID حدد معرف عميل الهوية. لا
volumeAttributes.AzureStorageIdentityResourceID حدد معرف مورد الهوية. لا
volumeAttributes.MSIEndpoint حدد نقطة نهاية MSI. لا
volumeAttributes.AzureStorageSPNClientID حدد معرف عميل الاسم الأساسي لخدمة Azure (SPN). لا
volumeAttributes.AzureStorageSPNTenantID حدد معرف مستأجر Azure SPN. لا
volumeAttributes.AzureStorageAADEndpoint حدد نقطة نهاية Microsoft Entra. لا
--- المعلمات التالية مخصصة فقط للميزة: blobfuse لقراءة مفتاح الحساب أو رمز SAS المميز من مخزن المفاتيح --- --- ---
volumeAttributes.keyVaultURL حدد اسم Azure Key Vault DNS. {vault-name}.vault.azure.net لا
volumeAttributes.keyVaultSecretName حدد اسم البيانات السرية لـ Azure Key Vault. اسم البيانات السرية الحالية لـ Azure Key Vault. لا
volumeAttributes.keyVaultSecretVersion نسخة للبيانات السرية من Azure Key Vault. الإصدار الحالي لا إذا كان فارغًا، يستخدم برنامج التشغيل الإصدار الحالي.

بإنشاء حاوية تخزين الكائن الثنائي كبير الحجم

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

بالنسبة لهذه المقالة، قم بإنشاء الحاوية في مجموعة موارد العقدة. أولاً، احصل على اسم مجموعة الموارد مع أمر az aks show وإضافة معلمة الاستعلام --query nodeResourceGroup. يحصل المثال التالي على مجموعة موارد العقدة لمجموعة AKS المسماة myAKSCluster في مجموعة الموارد المسماة myResourceGroup:

az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv

إخراج الأمر يشبه المثال التالي:

MC_myResourceGroup_myAKSCluster_eastus

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

تحميل وحدة التخزين

في هذا القسم، يمكنك تحميل وحدة التخزين الثابتة باستخدام بروتوكول NFS أو Blobfuse.

لا يصادق تركيب تخزين الكائن الثنائي كبير الحجم باستخدام بروتوكول NFS v3 باستخدام مفتاح حساب. يجب أن تكون نظام مجموعة AKS الخاصة بك موجودة في نفس الشبكة الظاهرية أو نظيرها مثل عقدة الوكيل. الطريقة الوحيدة لتأمين البيانات في حساب التخزين الخاص بك هي باستخدام شبكة ظاهرية وإعدادات أمان أخرى للشبكة. لمزيد من المعلومات حول كيفية إعداد وصول NFS إلى حساب التخزين الخاص بك، راجع تحميل تخزين الكائن الثنائي كبير الحجم باستخدام بروتوكول نظام ملفات الشبكة (NFS) 3.0.

يوضح المثال التالي كيفية تحميل حاوية تخزين الكائن الثنائي كبير الحجم كوحدة تخزين ثابتة باستخدام بروتوكول NFS.

  1. قم بإنشاء ملف باسم pv-blob-nfs.yaml وانسخه في YAML التالي. ضمن storageClass، حدِّث resourceGroup وstorageAccount وcontainerName.

    إشعار

    volumeHandle يجب أن تكون القيمة معرف وحدة تخزين فريدا لكل حاوية كائن ثنائي كبير الحجم للتخزين متطابقة في نظام المجموعة. الحرف # و / محجوزان للاستخدام الداخلي ولا يمكن استخدامهما.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: blob.csi.azure.com
      name: pv-blob
    spec:
      capacity:
        storage: 1Pi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain  # If set as "Delete" container would be removed after pvc deletion
      storageClassName: azureblob-nfs-premium
      mountOptions:
        - nconnect=4
      csi:
        driver: blob.csi.azure.com
        # make sure volumeid is unique for every identical storage blob container in the cluster
        # character `#` and `/` are reserved for internal use and cannot be used in volumehandle
        volumeHandle: account-name_container-name
        volumeAttributes:
          resourceGroup: resourceGroupName
          storageAccount: storageAccountName
          containerName: containerName
          protocol: nfs
    

    إشعار

    في حين أن سمة سعة Kubernetes API إلزامية، لا يتم استخدام هذه القيمة من قبل برنامج تشغيل CSI لتخزين Azure Blob لأنه يمكنك كتابة البيانات بمرونة حتى تصل إلى حد سعة حساب التخزين الخاص بك. يتم استخدام قيمة السمة capacity فقط لمطابقة الحجم بين PersistentVolumes و PersistentVolumeClaims. نوصي باستخدام قيمة عالية وهمية. ترى الجراب وحدة تخزين مثبتة بحجم وهمي يبلغ 5 بيتابايت.

  2. قم بتشغيل الأمر التالي لإنشاء وحدة التخزين الثابتة باستخدام الأمر kubectl create الذي يشير إلى ملف YAML الذي تم إنشاؤه مسبقا:

    kubectl create -f pv-blob-nfs.yaml
    
  3. pvc-blob-nfs.yaml إنشاء ملف باستخدام PersistentVolumeClaim. على سبيل المثال:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-blob
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      volumeName: pv-blob
      storageClassName: azureblob-nfs-premium
    
  4. قم بتشغيل الأمر التالي لإنشاء مطالبة وحدة التخزين الدائمة باستخدام الأمر kubectl create الذي يشير إلى ملف YAML الذي تم إنشاؤه مسبقا:

    kubectl create -f pvc-blob-nfs.yaml
    

استخدم الحجم الثابت

ينشئ YAML التالي حاوية تستخدم وحدة التخزين الثابتة أو مطالبة وحدة التخزين الثابتة المسماة pvc-blob التي تم إنشاؤها سابقا، لتحميل تخزين Azure Blob في /mnt/blob المسار.

  1. قم بإنشاء ملف باسم nginx-pod-blob.yaml وانسخه في ملف YAML التالي. تأكد من أن claimName يطابق PVC الذي تم إنشاؤه في الخطوة السابقة عند إنشاء وحدة تخزين ثابتة لـ NFS أو Blobfuse.

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-blob
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
        - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine
          name: nginx-blob
          volumeMounts:
            - name: blob01
              mountPath: "/mnt/blob"
              readOnly: false
      volumes:
        - name: blob01
          persistentVolumeClaim:
            claimName: pvc-blob
    
  2. قم بتشغيل الأمر التالي لإنشاء الجراب وتركيب PVC باستخدام الأمر kubectl create الذي يشير إلى ملف YAML الذي تم إنشاؤه مسبقا:

    kubectl create -f nginx-pod-blob.yaml
    
  3. قم بتشغيل الأمر التالي لإنشاء جلسة shell تفاعلية مع الجراب للتحقق من تحميل تخزين الكائن الثنائي كبير الحجم:

    kubectl exec -it nginx-blob -- df -h
    

    الإخراج من الأمر يشبه المثال التالي:

    Filesystem      Size  Used Avail Use% Mounted on
    ...
    blobfuse         14G   41M   13G   1% /mnt/blob
    ...
    

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