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


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

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

В этой статье описывается, как использовать встроенные классы хранилища (CSI) для динамического создания постоянных томов диска и создания пользовательских классов хранилища в AKS, включенных 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 на основе спецификации ПВХ (утверждение постоянного тома).

Динамическое создание постоянных томов диска с помощью встроенного класса хранилища

Класс хранилища используется для определения динамического создания единицы хранилища с постоянным томом. Дополнительные сведения об использовании классов хранилища см. в разделе "Классы хранилища Kubernetes".

В AKS Arc класс хранилища по умолчанию создается по умолчанию и использует CSI для создания томов, поддерживаемых VHDX. Политика восстановления гарантирует, что базовый VHDX удаляется при удалении постоянного тома, используемого им. Класс хранилища также настраивает постоянные тома для расширения; Вам просто нужно изменить утверждение постоянного тома с новым размером.

Чтобы использовать этот класс хранения, создайте ПВХ и соответствующий модуль pod, который ссылается на него и использует его. Заявка на постоянный том (PVC) используется для автоматической подготовки хранилища на основе класса хранения. ПВХ может использовать один из предварительно созданных классов хранения или определяемый пользователем класс хранилища для создания VHDX требуемого размера. При создании определения pod указывается заявка на постоянный том для запроса требуемого хранилища.

Создание пользовательского класса хранилища для дисков

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

Если у вас есть рабочие нагрузки Linux (pod), необходимо создать пользовательский класс хранилища с параметром fsType: ext4. Это требование применяется к Kubernetes версии 1.19 и 1.20 или более поздней версии. В следующем примере показано определение пользовательского класса хранилища с fsType определенным параметром:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: aks-hci-disk-custom
parameters:
  blocksize: "33554432"
  container: SqlStorageContainer
  dynamic: "true"
  group: clustergroup-summertime
  hostname: TESTPATCHING-91.sys-sqlsvr.local
  logicalsectorsize: "4096"
  physicalsectorsize: "4096"
  port: "55000"
  fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true  

Если вы создаете пользовательский класс хранилища, можно указать расположение, в котором вы хотите хранить PV. Если базовая инфраструктура является локальной, это новое расположение может быть томом, который поддерживается высокопроизводительные диски SSD/NVMe или оптимизированный для затрат том, поддерживаемый HDD.

Создание пользовательского класса хранилища — это двухэтапный процесс:

  1. Создайте путь к хранилищу с помощью stack-hci-vm storagepath командлетов для создания, отображения и перечисления путей хранения в локальном кластере Azure. Дополнительные сведения о создании пути к хранилищу см . в разделе "Путь к хранилищу".

    Для $pathэтого создайте путь к хранилищу с именем $storagepathname, например C:\ClusterStorage\test-storagepath:

    az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
    

    Получите идентификатор ресурса пути к хранилищу:

    $storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv 
    
  2. Создайте пользовательский класс хранилища с помощью нового пути к хранилищу.

    1. Создайте файл с именем sc-aks-hci-disk-custom.yaml, а затем скопируйте манифест из следующего файла YAML. Класс хранилища совпадает с классом хранилища по умолчанию, кроме нового container. storage path ID Используйте созданный на предыдущем шаге.container Для group и hostname, запросите класс хранилища по умолчанию, выполнив команду kubectl get storageclass default -o yaml, а затем используйте указанные значения:

      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
       name: aks-hci-disk-custom
      provisioner: disk.csi.akshci.com
      parameters:
       blocksize: "33554432"
       container: <storage path ID>
       dynamic: "true"
       group: <e.g clustergroup-akshci> # same as the default storageclass
       hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass
       logicalsectorsize: "4096"
       physicalsectorsize: "4096"
       port: "55000"
       fsType: ext4 # refer to the note above to determine when to include this parameter
      allowVolumeExpansion: true
      reclaimPolicy: Delete
      volumeBindingMode: Immediate
      
    2. Создайте класс хранилища с помощью команды kubectl apply и укажите файл sc-aks-hci-disk-custom.yaml :

       $ kubectl apply -f sc-aks-hci-disk-custom.yaml
       storageclass.storage.k8s.io/aks-hci-disk-custom created
      

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