Использование драйверов файлов интерфейса хранилища контейнеров (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
Убедитесь, что драйвер SMB развернут. Драйвер SMB CSI устанавливается по умолчанию при создании кластера Kubernetes с помощью портал Azure или
az aksarc create
команды. При создании кластера--disable-smb-driver
Kubernetes необходимо включить драйвер SMB в этом кластереaz aksarc update
с помощью команды:az aksarc update -n $aksclustername -g $resource_group --enable-smb-driver
Создайте секреты Kubernetes для хранения учетных данных, необходимых для доступа к общим ресурсам SMB, выполнив следующую команду:
kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$password --from-literal domain=$domain
Создайте класс хранилища с помощью
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
Убедитесь, что драйвер NFS развернут. Драйвер CSI NFS устанавливается по умолчанию при создании кластера Kubernetes с помощью портал Azure или
az aksarc create
команды. При создании кластера--disable-nfs-driver
Kubernetes необходимо включить драйвер NFS в этом кластереaz aksarc update
с помощью команды:az aksarc update -n $aksclustername -g $resource_group --enable-nfs-driver
Создайте класс хранилища 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