Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure NetApp Files поддерживает тома с помощью NFS (NFSv3 или NFSv4.1), SMB или двойного протокола (NFSv3 и SMB или NFSv4.1 и SMB).
- В этой статье описаны сведения о подготовке томов NFS статически или динамически.
- Сведения о подготовке томов SMB статически или динамически см. в статье "Подготовка томов SMB Для SMB Azure NetApp Files" для Служба Azure Kubernetes.
- Сведения о подготовке томов с двумя протоколами статически см. в статье "Подготовка томов двух протоколов Azure NetApp Files для Служба Azure Kubernetes
Статическая настройка для приложений, использующих тома NFS
В этом разделе описывается, как создать том NFS в Azure NetApp Files и предоставить том статическим образом Kubernetes. В нем также описывается использование тома с контейнерным приложением.
Создание тома NFS
Определите переменные для последующего использования. Замените myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, vnetid и anfSubnetID соответствующим значением из учетной записи и среды. Файловый путь должен быть уникальным в пределах всех учетных записей ANF.
RESOURCE_GROUP="myresourcegroup" LOCATION="mylocation" ANF_ACCOUNT_NAME="myaccountname" POOL_NAME="mypool1" SERVICE_LEVEL="premium" # Valid values are Standard, Premium, and Ultra UNIQUE_FILE_PATH="myfilepath" VOLUME_SIZE_GIB="myvolsize" VOLUME_NAME="myvolname" VNET_ID="vnetId" SUBNET_ID="anfSubnetId"Создайте том с помощью
az netappfiles volume createкоманды. Дополнительные сведения см. в статье "Создание тома NFS для Azure NetApp Files".az netappfiles volume create \ --resource-group $RESOURCE_GROUP \ --location $LOCATION \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --name "$VOLUME_NAME" \ --service-level $SERVICE_LEVEL \ --vnet $VNET_ID \ --subnet $SUBNET_ID \ --usage-threshold $VOLUME_SIZE_GIB \ --file-path $UNIQUE_FILE_PATH \ --protocol-types NFSv3
Создание постоянного тома
Список сведений о томе с помощью
az netappfiles volume showкоманды. Замените переменные соответствующими значениями из учетной записи и среды Azure NetApp Files, если они не определены на предыдущем шаге.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSONНиже приведен пример приведенной выше команды, выполняемой с реальными значениями.
{ ... "creationToken": "myfilepath2", ... "mountTargets": [ { ... "ipAddress": "10.0.0.4", ... } ], ... }Создайте файл
pv-nfs.yamlи скопируйте в него следующий код YAML. Убедитесь, что сервер соответствует выходному IP-адресу из шага 1, а путь соответствует выходным данным вышеcreationToken. Емкость также должна соответствовать размеру тома из приведенного выше шага.apiVersion: v1 kind: PersistentVolume metadata: name: pv-nfs spec: capacity: storage: 100Gi accessModes: - ReadWriteMany mountOptions: - vers=3 nfs: server: 10.0.0.4 path: /myfilepath2Создайте постоянный том с помощью
kubectl applyкоманды:kubectl apply -f pv-nfs.yamlУбедитесь, что состояние постоянного тома доступно с помощью
kubectl describeкоманды:kubectl describe pv pv-nfs
Создание заявки на доступ к постоянному тому
Создайте файл
pvc-nfs.yamlи скопируйте в него следующий код YAML. Этот манифест создает ПВХ с именемpvc-nfs100Gi хранилища иReadWriteManyрежима доступа, соответствующего созданному ПС.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100GiСоздайте утверждение постоянного тома
kubectl applyс помощью команды:kubectl apply -f pvc-nfs.yamlУбедитесь, что состояние утверждения постоянного тома привязано с помощью
kubectl describeкоманды:kubectl describe pvc pvc-nfs
Подключение с помощью модуля pod
Создайте файл
nginx-nfs.yamlи скопируйте в него следующий код YAML. Этот манифест определяетnginxмодуль pod, использующий утверждение постоянного тома.kind: Pod apiVersion: v1 metadata: name: nginx-nfs spec: containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: nginx-nfs command: - "/bin/sh" - "-c" - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done volumeMounts: - name: disk01 mountPath: /mnt/azure volumes: - name: disk01 persistentVolumeClaim: claimName: pvc-nfsСоздайте pod с помощью
kubectl applyкоманды:kubectl apply -f nginx-nfs.yamlУбедитесь, что модуль pod запущен с помощью
kubectl describeкоманды:kubectl describe pod nginx-nfsУбедитесь, что том подключен к модулем pod с помощью
kubectl execподключения к модулем pod, а затем используйтеdf -hдля проверки подключения тома.kubectl exec -it nginx-nfs -- sh/ # df -h Filesystem Size Used Avail Use% Mounted on ... 10.0.0.4:/myfilepath2 100T 384K 100T 1% /mnt/azure ...
Динамическое настройка для приложений, использующих тома NFS
Astra Trident может использоваться для динамической подготовки файлов NFS или SMB в Azure NetApp Files. Динамически подготовленные тома SMB поддерживаются только рабочими узлами Windows.
В этом разделе описывается, как использовать Astra Trident для динамического создания тома NFS в Azure NetApp Files и автоматического подключения его к контейнеризованному приложению.
Установка Astra Trident
Для динамической подготовки томов NFS необходимо установить Astra Trident. Astra Trident — это динамическое средство подготовки хранилища NetApp, предназначенное для Kubernetes. Упрощение использования хранилища для приложений Kubernetes с помощью стандартного драйвера CSI (CSI) интерфейса хранилища контейнеров Astra Trident. Astra Trident развертывается в кластерах Kubernetes в качестве модулей pod и предоставляет службы динамического оркестрации хранилища для рабочих нагрузок Kubernetes.
Trident можно установить с помощью оператора Trident (вручную или с помощью Helm) или tridentctl. Дополнительные сведения об этих методах установки и их работе см. в руководстве по установке Astra Trident.
Установка Astra Trident с помощью Helm
Helm необходимо установить на рабочей станции, чтобы установить Astra Trident с помощью этого метода. Другие методы установки Astra Trident см. в руководстве по установке Astra Trident.
Чтобы установить Astra Trident с помощью Helm для кластера с только рабочими узлами Linux, выполните следующие команды:
helm repo add netapp-trident https://netapp.github.io/trident-helm-chart helm install trident netapp-trident/trident-operator --version 23.04.0 --create-namespace --namespace tridentВыходные данные команды будут выглядеть примерно так:
NAME: trident LAST DEPLOYED: Fri May 5 13:55:36 2023 NAMESPACE: trident STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI storage provisioner for Kubernetes. Your release is named 'trident' and is installed into the 'trident' namespace. Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster. To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases. You may find all Trident releases and source code online at https://github.com/NetApp/trident. To learn more about the release, try: $ helm status trident $ helm get all tridentЧтобы подтвердить успешное установку Astra Trident, выполните следующую
kubectl describeкоманду:kubectl describe torc tridentВыходные данные команды будут выглядеть примерно так:
Name: trident Namespace: Labels: app.kubernetes.io/managed-by=Helm Annotations: meta.helm.sh/release-name: trident meta.helm.sh/release-namespace: trident API Version: trident.netapp.io/v1 Kind: TridentOrchestrator Metadata: ... Spec: IPv6: false Autosupport Image: docker.io/netapp/trident-autosupport:23.04 Autosupport Proxy: <nil> Disable Audit Log: true Enable Force Detach: false Http Request Timeout: 90s Image Pull Policy: IfNotPresent k8sTimeout: 0 Kubelet Dir: <nil> Log Format: text Log Layers: <nil> Log Workflows: <nil> Namespace: trident Probe Port: 17546 Silence Autosupport: false Trident Image: docker.io/netapp/trident:23.04.0 Windows: false Status: Current Installation Params: IPv6: false Autosupport Hostname: Autosupport Image: docker.io/netapp/trident-autosupport:23.04 Autosupport Proxy: Autosupport Serial Number: Debug: false Disable Audit Log: true Enable Force Detach: false Http Request Timeout: 90s Image Pull Policy: IfNotPresent Image Pull Secrets: Image Registry: k8sTimeout: 30 Kubelet Dir: /var/lib/kubelet Log Format: text Log Layers: Log Level: info Log Workflows: Probe Port: 17546 Silence Autosupport: false Trident Image: docker.io/netapp/trident:23.04.0 Message: Trident installed Namespace: trident Status: Installed Version: v23.04.0 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Installing 2m59s trident-operator.netapp.io Installing Trident Normal Installed 2m31s trident-operator.netapp.io Trident installed
Создание серверной части
Чтобы указать Astra Trident на подписку Azure NetApp Files и место для создания томов, создается серверная часть. На этом шаге требуются сведения о учетной записи, созданной на предыдущем шаге.
Создайте файл
backend-secret.yamlи скопируйте в него следующий код YAML. Измените иclientSecretизмените правильныеClient IDзначения для вашей среды.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pUСоздайте файл
backend-anf.yamlи скопируйте в него следующий код YAML. ИзменитеsubscriptionID,tenantIDlocationиserviceLevelна правильные значения для вашей среды. Используйте подпискуsubscriptionIDAzure, в которой включена служба Azure NetApp Files.tenantIDclientIDПолучите иclientSecretиз регистрации приложения в идентификаторе Microsoft Entra с достаточными разрешениями для службы Azure NetApp Files. Регистрация приложения включает роль владельца или участника, предопределенную Azure. Расположение должно быть расположением Azure, которое содержит по крайней мере одну делегированную подсеть, созданную на предыдущем шаге. ОнserviceLevelдолжен соответствовать настроеннойserviceLevelдля пула емкости в настройке Azure NetApp Files для рабочих нагрузок AKS.apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-anf spec: version: 1 storageDriverName: azure-netapp-files subscriptionID: aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e tenantID: aaaabbbb-0000-cccc-1111-dddd2222eeee location: eastus serviceLevel: Premium credentials: name: backend-tbc-anf-secretДополнительные сведения о серверных службах см. в разделе "Параметры конфигурации серверной части Azure NetApp Files" и примеры.
Примените секрет и серверную часть с помощью
kubectl applyкоманды. Сначала примените секрет:kubectl apply -f backend-secret.yaml -n tridentВыходные данные команды будут выглядеть примерно так:
secret/backend-tbc-anf-secret createdПримените серверную часть:
kubectl apply -f backend-anf.yaml -n tridentВыходные данные команды будут выглядеть примерно так:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf createdУбедитесь, что серверная часть создана с помощью
kubectl getкоманды:kubectl get tridentbackends -n tridentВыходные данные команды будут выглядеть примерно так:
NAME BACKEND BACKEND UUID tbe-kfrdh backend-tbc-anf 8da4e926-9dd4-4a40-8d6a-375aab28c566
Создание класса хранения
Класс хранения используется для определения того, как единица хранения создается динамически с помощью постоянного тома. Для использования томов Azure NetApp Files необходимо создать класс хранения.
Создайте файл
anf-storageclass.yamlи скопируйте в него следующий код YAML:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azure-netapp-files provisioner: csi.trident.netapp.io parameters: backendType: "azure-netapp-files" fsType: "nfs"Создайте класс хранилища с помощью
kubectl applyкоманды:kubectl apply -f anf-storageclass.yamlВыходные данные команды будут выглядеть примерно так:
storageclass/azure-netapp-files createdkubectl getВыполните команду, чтобы просмотреть состояние класса хранилища:kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE azure-netapp-files csi.trident.netapp.io Delete Immediate false
Создание ПВХ
Утверждение постоянного тома (PVC) — это запрос к хранилищу со стороны пользователя. При создании утверждения постоянного тома Astra Trident автоматически создает том Azure NetApp Files и делает его доступным для рабочих нагрузок Kubernetes для использования.
Создайте файл
anf-pvc.yamlи скопируйте в него следующий код YAML. В этом примере требуется объем 1-ТиБ с доступом ReadWriteMany.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Ti storageClassName: azure-netapp-filesСоздайте утверждение постоянного тома
kubectl applyс помощью команды:kubectl apply -f anf-pvc.yamlВыходные данные команды будут выглядеть примерно так:
persistentvolumeclaim/anf-pvc createdЧтобы просмотреть сведения о утверждении
kubectl getпостоянного тома, выполните команду:kubectl get pvcВыходные данные команды будут выглядеть примерно так:
kubectl get pvc -n trident NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE anf-pvc Bound pvc-bffa315d-3f44-4770-86eb-c922f567a075 1Ti RWO azure-netapp-files 62s
Использование постоянного тома
После создания ПВХ Астра Тридент создает постоянный объем. Модуль pod можно подключить и получить доступ к тому Azure NetApp Files.
Следующий манифест можно использовать для определения модуля POD NGINX, который подключает том Azure NetApp Files, созданный на предыдущем шаге. В этом примере том монтируется в /mnt/data.
Создайте файл
anf-nginx-pod.yamlи скопируйте в него следующий код YAML:kind: Pod apiVersion: v1 metadata: name: nginx-pod spec: containers: - name: nginx image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/data" name: volume volumes: - name: volume persistentVolumeClaim: claimName: anf-pvcСоздайте pod с помощью
kubectl applyкоманды:kubectl apply -f anf-nginx-pod.yamlВыходные данные команды будут выглядеть примерно так:
pod/nginx-pod createdKubernetes создал модуль pod с подключенным томом и доступным в контейнере
nginx/mnt/data. Вы можете подтвердить, проверив журналы событий для pod с помощьюkubectl describeкоманды:kubectl describe pod nginx-podВыходные данные команды будут выглядеть примерно так:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: anf-pvc ReadOnly: false default-token-k7952: Type: Secret (a volume populated by a Secret) SecretName: default-token-k7952 Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 15s default-scheduler Successfully assigned trident/nginx-pod to brameshb-non-root-test Normal SuccessfulAttachVolume 15s attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-bffa315d-3f44-4770-86eb-c922f567a075" Normal Pulled 12s kubelet Container image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" already present on machine Normal Created 11s kubelet Created container nginx Normal Started 10s kubelet Started container nginx
Следующие шаги
Astra Trident поддерживает множество функций в Azure NetApp Files. Дополнительные сведения см. в разделе: