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


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

> Область применения: AKS в Azure Stack HCI 22H2, AKS в Windows Server, AKS в Azure Stack HCI 23H2

В этой статье описывается, как использовать встроенные классы хранения контейнеров (CSI) для динамического создания постоянных томов диска и пользовательских классов хранения в AKS, включенных Arc.

Общие сведения о CSI в AKS с поддержкой Arc

Container Storage Interface (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 на основе спецификации PVC (утверждение постоянного тома).

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

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

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

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

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

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

Если у вас есть рабочие нагрузки 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. Если базовой инфраструктурой является Azure Stack HCI, это новое расположение может быть томом, который поддерживается высокопроизводительные диски SSD/NVMe, или оптимизированным для затрат томом, поддерживаемым жесткими дисками.

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

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

    Для $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
      

Дальнейшие действия