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


Использование драйверов файлов интерфейса хранилища контейнеров (CSI) в AKS с поддержкой Azure Arc

> применимо к: AKS на Azure Local 22H2, AKS на Windows Server, AKS на Azure Local, версия 23H2

В этой статье описывается, как использовать драйверы интерфейса хранилища контейнеров (CSI) для файлов для подключения блока сообщений сервера (SMB) или NFS, если нескольким узлам требуется одновременный доступ к одному и тому хранилища в AKS, включенному Azure Arc.

Обзор CSI в AKS Arc

Интерфейс хранилища контейнеров (CSI) — это стандарт для предоставления систем хранения произвольных блоков и файлов для контейнерных рабочих нагрузок в Kubernetes. С помощью CSI AKS, включенного Arc, может записывать, развертывать и итерировать подключаемые модули для предоставления новых систем хранения. Использование CSI также может улучшить существующие в Kubernetes без необходимости касаться основного кода Kubernetes, а затем ждать циклов выпуска.

Драйверы CSI дисков и файлов, используемые AKS Arc, являются драйверами, совместимыми со спецификациями CSI.

Поддержка драйвера хранилища CSI в AKS Arc позволяет использовать:

  • Диски AKS Arc, которые можно использовать для создания ресурса DataDisk Kubernetes. Они подключены как ReadWriteOnce, поэтому они доступны только для одного модуля pod одновременно. Для томов хранилища, к которым можно получить доступ одновременно с несколькими модулями pod, используйте файлы AKS Arc.

  • Файлы AKS Arc, которые можно использовать для подключения общего ресурса SMB или NFS к модулям pod. Они подключены как ReadWriteMany, поэтому вы можете совместно использовать данные между несколькими узлами и модулями pod. Они также можно установить как ReadWriteOnce на основе спецификации ПВХ (утверждение постоянного тома).

Использование постоянных томов файлов с помощью драйверов CSI ReadWriteMany

Если нескольким узлам требуется одновременный доступ к тем же томам хранилища в AKS Arc, можно использовать драйверы CSI для подключения файлов SMB или NFS как ReadWriteMany. Необходимо заранее подготовить общие папки SMB или NFS.

Использование драйверов SMB

  1. Убедитесь, что драйвер SMB развернут. Драйвер SMB CSI устанавливается по умолчанию при создании кластера Kubernetes с помощью портал Azure или az aksarc create команды. При создании кластера --disable-smb-driverKubernetes необходимо включить драйвер SMB в этом кластере az aksarc update с помощью команды:

    az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
    
  1. Создайте секреты Kubernetes для хранения учетных данных, необходимых для доступа к общим ресурсам SMB, выполнив следующую команду:

    kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
    
  2. Создайте класс хранилища с помощью kubectl нового класса хранилища SMB со следующим манифестом:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: smb-csi
    provisioner: smb.csi.akshci.com
    parameters:
       source: \\smb-server\share
       csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
       csi.storage.k8s.io/node-stage-secret-namespace: "default"
    reclaimPolicy: Retain  # only Retain is supported
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=1001
      - gid=1001
    

Использование драйверов NFS

  1. Убедитесь, что драйвер NFS развернут. Драйвер CSI NFS устанавливается по умолчанию при создании кластера Kubernetes с помощью портал Azure или az aksarc create команды. При создании кластера --disable-nfs-driverKubernetes необходимо включить драйвер NFS в этом кластере az aksarc update с помощью команды:

    az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
    
  1. Создайте класс хранилища NFS с помощью следующего манифеста:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: nfs-csi
    provisioner: nfs.csi.akshci.com
    parameters:
      server: nfs-server.default.svc.cluster.local # NFS server endpoint
      share: / # NFS share path
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    mountOptions:
      - hard
      - nfsvers=4.1
    

Удаление драйверов SMB или NFS

Используйте следующие команды Azure CLI для удаления драйверов SMB или NFS:

az aksarc update -n $aksclustername -g $resource_group --disable-smb-driver
az aksarc update -n $aksclustername -g $resource_group --disable-nfs-driver

Следующие шаги