Поделиться через


Создание и управление постоянными томами (PV) с использованием Azure Blob Storage в сервисе Azure Kubernetes Service (AKS)

Если нескольким pod'ам требуется одновременный доступ к одному тому хранилища, можно использовать хранилище BLOB-объектов Azure для подключения с помощью blobfuse или сетевой файловой системы (NFS).

В этой статье показано, как динамически и статически создавать контейнеры хранилища BLOB-объектов Azure для использования несколькими подами в кластере Службы Azure Kubernetes (AKS).

Предпосылки

  • В кластере AKS активирован драйвер CSI хранилища BLOB-объектов Azure.

  • Учетная запись хранения с поддержкой NFS версии 3, что позволяет подключить постоянный том с помощью протокола NFS. Вы не можете включить NFS версии 3 в существующей учетной записи хранения. Дополнительные сведения см. в статье "Создание учетной записи NFS версии 3".

  • Чтобы поддерживать учетную запись хранения Azure DataLake 2-го поколения при использовании подключения blobfuse, необходимо выполнить следующие задачи:

    • Чтобы создать учетную запись ADLS с помощью драйвера в динамической подготовке, укажите isHnsEnabled: "true" в параметрах класса хранилища.
    • Чтобы включить доступ blobfuse к учетной записи ADLS в процессе статического выделения, укажите параметр монтирования --use-adls=true в настройках постоянного тома.
    • Если вы собираетесь включить учетную запись хранения с иерархическим пространством имен, существующие постоянные тома следует повторно подключить с --use-adls=true помощью параметра подключения.
  • По умолчанию кэш blbfuse находится в каталоге /mnt . Если SKU виртуальной машины предоставляет временный диск, /mnt каталог монтируется на временный диск. Однако если номер SKU виртуальной машины не предоставляет временный диск, /mnt каталог подключен к диску ОС, вы можете задать --tmp-path= параметр монтирования, чтобы указать другой каталог кэша.

Использование встроенных классов хранения для создания динамических PV с Azure Blob Storage

Класс хранения используется для определения способа создания контейнера хранилища BLOB-объектов Azure. Для хранения контейнера хранилища BLOB-объектов Azure учетная запись хранения создается автоматически в группе ресурсов узла для использования с классом хранения. При использовании драйверов CSI для хранилища в AKS имеются два дополнительных встроенных компонента, которые используют драйвер CSI для Azure Blob Storage.

Политика освобождения емкости в обоих классах хранения гарантирует, что базовое хранилище Azure Blob будет удалено при удалении соответствующего постоянного тома. Классы хранения также конфигурируют расширяемость контейнера по умолчанию, поскольку для параметра set allowVolumeExpansion задано значение true.

Замечание

Сжатие постоянных томов не поддерживается.

Вы можете выбрать один из следующих вариантов избыточности хранилища Azure SKU для параметра в определении класса хранения.

  • Standard_LRS — стандартное локально избыточное хранилище.
  • Premium_LRS — локально избыточное хранилище класса Premium.
  • Standard_ZRS: стандартное хранилище с зональной избыточностью
  • Premium_ZRS: избыточное хранилище зоны "Премиум"
  • Standard_GRS — стандартное геоизбыточное хранилище
  • Standard_RAGRS — стандартное геоизбыточное хранилище с доступом только для чтения;

Создание пользовательских классов хранилища для динамических PV с помощью хранилища BLOB-объектов Azure

Классы хранилища по умолчанию подходят для большинства сценариев. В некоторых случаях может потребоваться настроить собственный класс хранилища с собственными параметрами. В этом разделе приведены два примера: один с использованием протокола NFS и один с помощью blobfuse.

Пример пользовательского класса хранилища с помощью протокола NFS

Манифест в этом примере подключает контейнер хранилища BLOB-объектов с помощью протокола NFS. Его можно использовать для добавления tags параметра.

  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
    

Параметры класса хранилища Azure Blob для динамических PV

В следующей таблице приведены параметры, которые можно использовать для определения пользовательского класса хранилища для постоянных требований к хранилищу (ПКТ) с использованием хранилища BLOB-объектов Azure.

Имя. Значение Доступные значения Обязательно Значение по умолчанию
skuName Укажите тип учетной записи хранения Azure (псевдоним: storageAccountType). Standard_LRS Premium_LRS Standard_GRS Standard_RAGRS нет Standard_LRS
location Укажите расположение Azure. eastus нет Если это пусто, драйвер использует то же имя расположения, что и текущий кластер.
resourceGroup Указывает имя группы ресурсов Azure. myResourceGroup нет Если это пусто, драйвер использует то же имя группы ресурсов, что и текущий кластер.
storageAccount Указывает имя учетной записи хранения Azure. storageAccountName нет Если имя определенной учетной записи хранения не указано, драйвер ищет подходящую учетную запись хранения, соответствующую параметрам учетной записи в той же группе ресурсов. Если не удается найти соответствующую учетную запись хранения, она создает новую. Однако если указано имя учетной записи хранения, учетная запись хранения должна существовать.
networkEndpointType Укажите тип сетевой конечной точки для учетной записи хранения, созданной драйвером. Если указан privateEndpoint, для учетной записи хранения создается частная конечная точка . В других случаях для протокола NFS создается конечная точка службы. privateEndpoint нет Для кластера AKS добавьте имя кластера AKS в роль участника в группе ресурсов, включающей виртуальную сеть.
protocol Укажите подключение blobfuse или подключение NFSv3. fuse, nfs нет fuse
containerName Укажите имя существующего каталога (контейнера). container нет Если это поле не заполнено, драйвер создает новое имя контейнера, начиная с pvc-fuse для blobfuse или pvc-nfs для NFS версии 3.
containerNamePrefix Укажите префикс каталога хранилища Azure, созданный драйвером. мой Может содержать только строчные буквы, цифры, дефисы и длину не более 21 символов. нет
server Укажите доменное имя учетной записи хранения Azure. Например <storage-account>.blob.core.windows.net, существующее доменное имя учетной записи хранения DNS. нет Если пусто, драйвер использует доменное имя DNS учетной записи хранения по умолчанию <storage-account>.blob.core.windows.net или другое доменное имя суверенного облачного хранилища.
allowBlobPublicAccess Разрешить или запретить общий доступ ко всем блобам или контейнерам учетной записи хранилища, созданной драйвером. true,false нет false
storageEndpointSuffix Укажите суффикс конечной точки хранилища Azure. core.windows.net нет Если это пусто, драйвер использует суффикс конечной точки хранилища по умолчанию в соответствии с облачной средой.
tags Теги будут созданы в новой учетной записи хранения. Формат тега: 'foo=aaa,bar=bbb' нет ""
matchTags Сопоставляет теги, когда драйвер пытается найти подходящую учетную запись хранения. true,false нет false
--- Следующие параметры предназначены только для blobfuse --- --- ---
subscriptionID Укажите идентификатор подписки Azure, в которой создается каталог хранилища Blob. Идентификатор подписки 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

Замечание

Если учетная запись хранения создается драйвером, необходимо указать networkEndpointType: privateEndpoint только параметр в классе хранилища. Драйвер CSI создает частную конечную точку и частную зону DNS (именованную privatelink.blob.core.windows.net) вместе с учетной записью. Если у вас есть собственная учетная запись хранения, необходимо создать частную конечную точку для аккаунта хранения. Если вы используете хранилище BLOB-объектов Azure в изолированном сетевом кластере, необходимо создать пользовательский класс хранилища с помощью networkEndpointType: privateEndpoint. В качестве ссылки можно использовать следующий пример манифеста:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: blob-fuse
provisioner: blob.csi.azure.com
parameters:
  skuName: Premium_LRS  # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS
  protocol: fuse2
  networkEndpointType: privateEndpoint
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.

Создание ПВХ с хранилищем BLOB-объектов Azure

В PVC используется объект класса хранилища для динамического выделения Blob-хранилища Azure. Пример манифеста YAML в этом разделе можно использовать для создания PVC размером 5 ГБ с правами доступа ReadWriteMany. Дополнительные сведения о режимах доступа см. в разделе "Режимы доступа Kubernetes PV".

  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
    
  3. Просмотрите состояние ПВХ с kubectl get помощью команды:

    kubectl get pvc azure-blob-storage
    

    Ваши выходные данные должны выглядеть следующим образом, показывая, что PVC находится в состоянии Bound:

    NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
    azure-blob-storage   Bound    pvc-aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb   5Gi        RWX            azureblob-nfs-premium       92m
    

Использование ПВХ в модуле pod для подключения хранилища BLOB-объектов Azure

В следующем YAML создается под, использующий заявку на постоянный том azure-blob-storage для подключения хранилища BLOB-объектов Azure в /mnt/blob путь.

  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. Создайте pod с помощью kubectl apply команды:

    kubectl apply -f blob-nfs-pv.yaml
    
  3. После успешного запуска pod создайте новый файл с именем test.txt с помощью следующей команды:

    kubectl exec mypod -- touch /mnt/blob/test.txt
    
  4. Проверьте правильность подключения диска с помощью следующей команды для перечисления файлов в подключенном каталоге:

    kubectl exec mypod -- ls /mnt/blob
    

    Ваш результат должен походить на следующий пример, в котором приведен test.txt файл, созданный в смонтированном хранилище BLOB-объектов Azure.

    test.txt
    

Использование StatefulSet для управления жизненным циклом тома с помощью хранилища BLOB-объектов Azure

Чтобы том хранилища оставался персистентным для вашей рабочей нагрузки, можно использовать StatefulSet. Это условие облегчает сопоставление существующих томов с новыми pod'ами, которые заменяют те, что вышли из строя. В следующих примерах показано, как настроить StatefulSet для хранилища BLOB-объектов с помощью протокола NFS или Blobfuse.

Замечание

Если вы используете протокол NFS, необходимо добавить удостоверение уровня управления кластером AKS (имя кластера AKS) в роль участника в виртуальной сети и группе безопасности сети.

  1. Создайте файл с именем 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/azurelinux/base/nginx:1.25
              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
    
  2. Создайте StatefulSet с помощью kubectl create команды:

    kubectl create -f azure-blob-nfs-ss.yaml
    

Создайте статический PV с хранилищем BLOB-объектов Azure

В следующих разделах приведены инструкции по созданию статического PV с хранилищем BLOB-объектов Azure. Статический ПВ — это постоянный том, который администратор создает вручную. Этот PV доступен для использования модулями pod в кластере. Чтобы использовать статический PV, создайте ПВХ, который ссылается на PV, а затем создадите модуль pod, который ссылается на ПВХ.

Параметры класса хранилища для статических PV с хранилищем объектов Azure Blob

В следующей таблице представлены параметры, которые можно использовать для задания пользовательского класса хранения для ваших статических запросов на постоянное хранилище в области Blob Azure.

Имя. Значение Доступные значения Обязательно Значение по умолчанию
volumeHandle Укажите значение, которое драйвер может использовать для уникальной идентификации контейнера объектов BLOB в кластере. Рекомендуемый способ создать уникальное значение — объединить глобально уникальное имя учетной записи хранения и имя контейнера: {account-name}_{container-name}
Примечание. #/ символы зарезервированы для внутреннего использования и не могут использоваться в дескрипторе тома.
Да
volumeAttributes.resourceGroup Укажите имя группы ресурсов Azure. myResourceGroup нет Если это пусто, драйвер использует то же имя группы ресурсов, что и текущий кластер.
volumeAttributes.storageAccount Укажите существующее имя учетной записи хранения Azure. storageAccountName Да
volumeAttributes.containerName Укажите существующее имя контейнера. container Да
volumeAttributes.protocol Укажите точку монтирования blobfuse или NFS версии 3. 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. --- --- ---
vnetResourceGroup Укажите группу ресурсов виртуальной сети, где размещена виртуальная сеть. myResourceGroup нет Если ничего не указано, драйвер использует значение vnetResourceGroup, предусмотренное в конфигурационном файле облака Azure.
vnetName Укажите имя виртуальной сети. aksVNet нет Если ничего не указано, драйвер использует значение vnetName, предусмотренное в конфигурационном файле облака Azure.
subnetName Укажите существующее имя подсети узла агента. aksSubnet нет Если это пусто, драйвер обновит все подсети в виртуальной сети кластера.
--- Следующие параметры предназначены только для функции: blobfuse
Проверка подлинности управляемого удостоверения и основного имени службы
--- --- ---
volumeAttributes.AzureStorageAuthType Укажите тип проверки подлинности. Key SAS MSI SPN нет Key
volumeAttributes.AzureStorageIdentityClientID Укажите идентификатор клиента идентификации. нет
volumeAttributes.AzureStorageIdentityResourceID Укажите идентификатор ресурса удостоверения. нет
volumeAttributes.MSIEndpoint Укажите конечную точку MSI. нет
volumeAttributes.AzureStorageSPNClientID Укажите идентификатор клиента служебного объекта Azure. нет
volumeAttributes.AzureStorageSPNTenantID Укажите идентификатор клиента тенанта SPN в Azure. нет
volumeAttributes.AzureStorageAADEndpoint Укажите конечную точку Microsoft Entra. нет
--- Следующие параметры предназначены только для функции: чтение ключа учетной записи blobfuse или маркера SAS из хранилища ключей --- --- ---
volumeAttributes.keyVaultURL Укажите DNS-имя Azure Key Vault. {vault-name}.vault.azure.net нет
volumeAttributes.keyVaultSecretName Укажите имя секрета Azure Key Vault. Существующее название секрета в Azure Key Vault. нет
volumeAttributes.keyVaultSecretVersion Версия секрета Azure Key Vault. Существующая версия нет Если это пусто, драйвер использует текущую версию.

Создайте контейнер для хранилища BLOB

При создании ресурса хранилища BLOB-объектов Azure для использования с AKS можно создать ресурс в группе ресурсов узла. Такой подход позволяет кластеру AKS получать доступ к ресурсу Blob-хранилища и управлять им.

  1. Получите имя группы ресурсов узла кластера AKS с помощью az aks show команды с параметром --query nodeResourceGroup .

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

    Выходные данные команды будут выглядеть примерно так:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Создайте контейнер для хранения BLOB-объектов, выполнив действия, описанные в разделе "Управление хранилищем BLOB-объектов", чтобы авторизовать доступ и создать контейнер.

Подключение тома

В этом разделе описано, как подключить постоянный том с помощью протокола NFS или Blobfuse.

Подключение хранилища Blob с помощью протокола NFS версии 3 не поддерживает аутентификацию с использованием ключа учетной записи. Кластер AKS должен находиться в той же или одноранговой виртуальной сети, что и узел агента. Единственным способом защиты данных в учетной записи хранения является использование виртуальной сети и других параметров безопасности сети. Для получения дополнительной информации о настройке доступа к учетной записи хранения через NFS см. статью «Монтирование Blob-хранилища с использованием протокола Network File System (NFS) 3.0».

В следующем примере показано, как подключить контейнер хранилища Blob как постоянный том с помощью протокола NFS.

  1. Создайте файл с именем pv-blob-nfs.yaml и вставьте следующий YAML. В объекте storageClass измените resourceGroup, storageAccount и containerName.

    Замечание

    volumeHandle значение должно быть уникальным идентификатором тома для каждого идентичного контейнера BLOB-объектов хранилища в кластере. Символ # и / зарезервированы для внутреннего использования и не могут использоваться.

    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
    

    Замечание

    Хотя атрибут емкостиAPI Kubernetes является обязательным, это значение не используется драйвером CSI хранилища BLOB-объектов Azure, так как вы можете гибко записывать данные, пока не достигнете предела емкости учетной записи хранения. Значение атрибута capacity используется только для сопоставления размера между PVs и PVCs. Рекомендуется использовать вымышленное высокое значение. Модуль pod видит подключенный том с вымышленным размером 5 Петабайт.

  2. Создайте PV с помощью команды kubectl create.

    kubectl create -f pv-blob-nfs.yaml
    
  3. Создайте файл с именем pvc-blob-nfs.yaml и вставьте следующий YAML. В разделе volumeNameобновите значение, соответствующее имени PV, созданному на предыдущем шаге.

    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 команды:

    kubectl create -f pvc-blob-nfs.yaml
    

Используйте постоянный том

В следующем YAML-файле создается pod, использующий PV или PVC с именем pvc-blob, созданный ранее, для монтирования хранилища Azure Blob на путь /mnt/blob.

  1. Создайте файл с именем nginx-pod-blob.yaml и вставьте его в следующий манифест YAML. Убедитесь, что claimName соответствует ПВХ, созданному на предыдущем шаге при создании PV для 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. Создайте pod и подключите ПВЦ командой kubectl create.

    kubectl create -f nginx-pod-blob.yaml
    
  3. Создайте интерактивный сеанс оболочки с pod, используя следующую команду kubectl exec, чтобы убедиться, что хранилище BLOB-объектов подключено правильно.

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

    Ваши выходные данные должны выглядеть следующим образом, показывая, что хранилище BLOB-объектов подключено по пути /mnt/blob.

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