Aprowizuj woluminy NFS usługi Azure NetApp Files dla usługi Azure Kubernetes Service
Po skonfigurowaniu usługi Azure NetApp Files dla usługi Azure Kubernetes Service można aprowizować woluminy usługi Azure NetApp Files dla usługi Azure Kubernetes Service.
Usługa Azure NetApp Files obsługuje woluminy przy użyciu systemu plików NFS (NFSv3 lub NFSv4.1), SMB lub podwójnego protokołu (NFSv3 i SMB lub NFSv4.1 i SMB).
- W tym artykule opisano szczegółowe informacje dotyczące statycznej lub dynamicznej aprowizacji woluminów NFS.
- Aby uzyskać informacje na temat statycznego lub dynamicznego aprowizowania woluminów SMB, zobacz Aprowizowanie woluminów SMB usługi Azure NetApp Files dla usługi Azure Kubernetes Service.
- Aby uzyskać informacje na temat statycznego aprowizowania woluminów z dwoma protokołami, zobacz Aprowizowanie woluminów podwójnych usługi Azure NetApp Files dla usługi Azure Kubernetes Service
Statyczne konfigurowanie dla aplikacji korzystających z woluminów NFS
W tej sekcji opisano sposób tworzenia woluminu NFS w usłudze Azure NetApp Files i uwidaczniania woluminu statycznie na platformie Kubernetes. W tym artykule opisano również sposób używania woluminu z konteneryzowaną aplikacją.
Tworzenie woluminu NFS
Zdefiniuj zmienne dla późniejszego użycia. Zastąp ciąg myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, vnetid i anfSubnetID odpowiednią wartością z konta i środowiska. Ścieżka pliku musi być unikatowa we wszystkich kontach 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"
Utwórz wolumin przy użyciu
az netappfiles volume create
polecenia . Aby uzyskać więcej informacji, zobacz Tworzenie woluminu NFS dla usługi 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
Tworzenie woluminu trwałego
Wyświetl szczegóły woluminu przy użyciu
az netappfiles volume show
polecenia . Zastąp zmienne odpowiednimi wartościami z konta i środowiska usługi Azure NetApp Files, jeśli nie zostały zdefiniowane w poprzednim kroku.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
Poniższe dane wyjściowe to przykład powyższego polecenia wykonanego z rzeczywistymi wartościami.
{ ... "creationToken": "myfilepath2", ... "mountTargets": [ { ... "ipAddress": "10.0.0.4", ... } ], ... }
Utwórz plik o nazwie
pv-nfs.yaml
i skopiuj go w następującym języku YAML. Upewnij się, że serwer jest zgodny z wyjściowym adresem IP z kroku 1, a ścieżka jest zgodna z danymi wyjściowymi zcreationToken
powyższych. Pojemność musi być również zgodna z rozmiarem woluminu z powyższego kroku.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
Utwórz wolumin trwały przy użyciu
kubectl apply
polecenia :kubectl apply -f pv-nfs.yaml
Sprawdź, czy stan woluminu trwałego jest dostępny za pomocą
kubectl describe
polecenia :kubectl describe pv pv-nfs
Tworzenie trwałego oświadczenia woluminu
Utwórz plik o nazwie
pvc-nfs.yaml
i skopiuj go w następującym języku YAML. Ten manifest tworzy pvc o nazwiepvc-nfs
dla magazynu 100Gi iReadWriteMany
trybu dostępu, pasując do utworzonego pv.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100Gi
Utwórz oświadczenie trwałego woluminu
kubectl apply
przy użyciu polecenia :kubectl apply -f pvc-nfs.yaml
Sprawdź, czy stan oświadczenia trwałego woluminu ma wartość Powiązana przy użyciu
kubectl describe
polecenia :kubectl describe pvc pvc-nfs
Instalowanie za pomocą zasobnika
Utwórz plik o nazwie
nginx-nfs.yaml
i skopiuj go w następującym języku YAML. Ten manifest definiujenginx
zasobnik, który używa trwałego oświadczenia woluminu.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
Utwórz zasobnik przy użyciu
kubectl apply
polecenia :kubectl apply -f nginx-nfs.yaml
Sprawdź, czy zasobnik jest uruchomiony przy użyciu
kubectl describe
polecenia :kubectl describe pod nginx-nfs
Sprawdź, czy wolumin został zainstalowany na zasobniku przy użyciu polecenia
kubectl exec
, aby nawiązać połączenie z zasobnikem, a następnie sprawdźdf -h
, czy wolumin jest zainstalowany.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 ...
Dynamiczne konfigurowanie dla aplikacji korzystających z woluminów NFS
Narzędzie Astra Trident może służyć do dynamicznej aprowizacji plików NFS lub SMB w usłudze Azure NetApp Files. Dynamiczne aprowizowane woluminy SMB są obsługiwane tylko w przypadku węzłów procesu roboczego systemu Windows.
W tej sekcji opisano sposób używania narzędzia Astra Trident do dynamicznego tworzenia woluminu NFS w usłudze Azure NetApp Files i automatycznego instalowania go w konteneryzowanej aplikacji.
Instalowanie narzędzia Astra Trident
Aby dynamicznie aprowizować woluminy NFS, należy zainstalować aplikację Astra Trident. Astra Trident jest dynamicznym aprowizatorem magazynu netApp, który został specjalnie utworzony dla platformy Kubernetes. Uprość zużycie magazynu dla aplikacji Kubernetes przy użyciu standardowego sterownika interfejsu CSI (Container Storage Interface) firmy Astra Trident. Usługa Astra Trident wdraża w klastrach Kubernetes jako zasobniki i udostępnia dynamiczne usługi orkiestracji magazynu dla obciążeń Kubernetes.
Trident można zainstalować przy użyciu operatora Trident (ręcznie lub przy użyciu narzędzia Helm) lub tridentctl
. Aby dowiedzieć się więcej o tych metodach instalacji i sposobie ich działania, zobacz Astra Trident Install Guide (Przewodnik instalacji narzędzia Astra Trident).
Instalowanie narzędzia Astra Trident przy użyciu narzędzia Helm
Program Helm musi być zainstalowany na stacji roboczej, aby zainstalować narzędzie Astra Trident przy użyciu tej metody. Aby zapoznać się z innymi metodami instalowania narzędzia Astra Trident, zobacz Astra Trident Install Guide (Przewodnik instalacji narzędzia Astra Trident).
Aby zainstalować narzędzie Astra Trident przy użyciu programu Helm dla klastra z tylko węzłami roboczymi systemu Linux, uruchom następujące polecenia:
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
Dane wyjściowe polecenia przypominają następujący przykład:
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
Aby potwierdzić, że aplikacja Astra Trident została pomyślnie zainstalowana, uruchom następujące
kubectl describe
polecenie:kubectl describe torc trident
Dane wyjściowe polecenia przypominają następujący przykład:
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
Tworzenie zaplecza
Aby poinstruować Astra Trident o subskrypcji usługi Azure NetApp Files i miejscu, w którym musi utworzyć woluminy, zostanie utworzone zaplecze. Ten krok wymaga szczegółowych informacji o koncie utworzonym w poprzednim kroku.
Utwórz plik o nazwie
backend-secret.yaml
i skopiuj go w następującym języku YAML. Zmień wartościClient ID
iclientSecret
na poprawne dla danego środowiska.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: abcde356-bf8e-fake-c111-abcde35613aa clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Utwórz plik o nazwie
backend-anf.yaml
i skopiuj go w następującym języku YAML. Zmień wartościsubscriptionID
, ,location
tenantID
iserviceLevel
na poprawne dla danego środowiska.subscriptionID
Użyj elementu dla subskrypcji platformy Azure, w której włączono usługę Azure NetApp Files.tenantID
Uzyskaj identyfikator ,clientID
iclientSecret
z rejestracji aplikacji w usłudze Microsoft Entra ID z wystarczającymi uprawnieniami dla usługi Azure NetApp Files. Rejestracja aplikacji obejmuje rolę Właściciel lub Współautor wstępnie zdefiniowaną przez platformę Azure. Lokalizacja musi być lokalizacją platformy Azure zawierającą co najmniej jedną delegowana podsieć utworzoną w poprzednim kroku. ElementserviceLevel
musi być zgodny ze skonfigurowanymserviceLevel
dla puli pojemności w temacie Konfigurowanie obciążeń usługi Azure NetApp Files dla usługi AKS.apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: backend-tbc-anf spec: version: 1 storageDriverName: azure-netapp-files subscriptionID: 12abc678-4774-fake-a1b2-a7abcde39312 tenantID: a7abcde3-edc1-fake-b111-a7abcde356cf location: eastus serviceLevel: Premium credentials: name: backend-tbc-anf-secret
Aby uzyskać więcej informacji na temat zapleczy, zobacz Opcje konfiguracji zaplecza i przykłady usługi Azure NetApp Files.
Zastosuj wpis tajny i zaplecze przy użyciu
kubectl apply
polecenia . Najpierw zastosuj wpis tajny:kubectl apply -f backend-secret.yaml -n trident
Dane wyjściowe polecenia przypominają następujący przykład:
secret/backend-tbc-anf-secret created
Zastosuj zaplecze:
kubectl apply -f backend-anf.yaml -n trident
Dane wyjściowe polecenia przypominają następujący przykład:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Upewnij się, że zaplecze zostało utworzone przy użyciu
kubectl get
polecenia :kubectl get tridentbackends -n trident
Dane wyjściowe polecenia przypominają następujący przykład:
NAME BACKEND BACKEND UUID tbe-kfrdh backend-tbc-anf 8da4e926-9dd4-4a40-8d6a-375aab28c566
Tworzenie klasy magazynu
Klasa magazynu służy do definiowania sposobu dynamicznego tworzenia jednostki magazynu przy użyciu woluminu trwałego. Aby korzystać z woluminów usługi Azure NetApp Files, należy utworzyć klasę magazynu.
Utwórz plik o nazwie
anf-storageclass.yaml
i skopiuj go w następującym pliku 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"
Utwórz klasę magazynu przy użyciu
kubectl apply
polecenia :kubectl apply -f anf-storageclass.yaml
Dane wyjściowe polecenia przypominają następujący przykład:
storageclass/azure-netapp-files created
Uruchom polecenie ,
kubectl get
aby wyświetlić stan klasy magazynu:kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE azure-netapp-files csi.trident.netapp.io Delete Immediate false
Tworzenie pcv
Oświadczenie trwałego woluminu (PVC) jest żądaniem magazynu przez użytkownika. Po utworzeniu trwałego oświadczenia woluminu usługa Astra Trident automatycznie tworzy wolumin usługi Azure NetApp Files i udostępnia go dla obciążeń Kubernetes do użycia.
Utwórz plik o nazwie
anf-pvc.yaml
i skopiuj go w następującym języku YAML. W tym przykładzie wymagany jest wolumin 1-TiB z dostępem ReadWriteMany.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Ti storageClassName: azure-netapp-files
Utwórz oświadczenie trwałego woluminu za
kubectl apply
pomocą polecenia :kubectl apply -f anf-pvc.yaml
Dane wyjściowe polecenia przypominają następujący przykład:
persistentvolumeclaim/anf-pvc created
Aby wyświetlić informacje o trwałym oświadczeniu woluminu, uruchom
kubectl get
polecenie:kubectl get pvc
Dane wyjściowe polecenia przypominają następujący przykład:
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
Używanie woluminu trwałego
Po utworzeniu pvc Astra Trident tworzy wolumin trwały. Zasobnik można połączyć w celu zainstalowania i uzyskania dostępu do woluminu usługi Azure NetApp Files.
Poniższy manifest może służyć do definiowania zasobnika NGINX, który instaluje wolumin usługi Azure NetApp Files utworzony w poprzednim kroku. W tym przykładzie wolumin jest instalowany pod adresem /mnt/data
.
Utwórz plik o nazwie
anf-nginx-pod.yaml
i skopiuj go w następującym pliku 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
Utwórz zasobnik przy użyciu
kubectl apply
polecenia :kubectl apply -f anf-nginx-pod.yaml
Dane wyjściowe polecenia przypominają następujący przykład:
pod/nginx-pod created
Platforma Kubernetes utworzyła zasobnik z zainstalowanym woluminem i dostępnym w kontenerze
nginx
pod adresem/mnt/data
. Możesz potwierdzić, sprawdzając dzienniki zdarzeń zasobnika przy użyciukubectl describe
polecenia :kubectl describe pod nginx-pod
Dane wyjściowe polecenia przypominają następujący przykład:
[...] 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
Następne kroki
Aplikacja Astra Trident obsługuje wiele funkcji w usłudze Azure NetApp Files. Aby uzyskać więcej informacji, zobacz:
Azure Kubernetes Service