Etablera Azure NetApp Files NFS-volymer för Azure Kubernetes Service
När du har konfigurerat Azure NetApp Files för Azure Kubernetes Service kan du etablera Azure NetApp Files-volymer för Azure Kubernetes Service.
Azure NetApp Files stöder volymer med NFS (NFSv3 eller NFSv4.1), SMB eller dubbla protokoll (NFSv3 och SMB eller NFSv4.1 och SMB).
- Den här artikeln beskriver information om etablering av NFS-volymer statiskt eller dynamiskt.
- Information om hur du etablerar SMB-volymer statiskt eller dynamiskt finns i Etablera Azure NetApp Files SMB-volymer för Azure Kubernetes Service.
- Information om hur du etablerar volymer med dubbla protokoll statiskt finns i Etablera Azure NetApp Files-volymer med dubbla protokoll för Azure Kubernetes Service
Konfigurera statiskt för program som använder NFS-volymer
I det här avsnittet beskrivs hur du skapar en NFS-volym på Azure NetApp Files och exponerar volymen statiskt för Kubernetes. Den beskriver också hur du använder volymen med ett containerbaserat program.
Skapa en NFS-volym
Definiera variabler för senare användning. Ersätt myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, vnetid och anfSubnetID med ett lämpligt värde från ditt konto och din miljö. Filsökvägen måste vara unik inom alla ANF-konton.
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"
Skapa en volym med kommandot
az netappfiles volume create
. Mer information finns i Skapa en NFS-volym för 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
Skapa den beständiga volymen
Visa en lista med information om volymen med hjälp av
az netappfiles volume show
kommandot . Ersätt variablerna med lämpliga värden från ditt Azure NetApp Files-konto och din miljö om de inte har definierats i ett tidigare steg.az netappfiles volume show \ --resource-group $RESOURCE_GROUP \ --account-name $ANF_ACCOUNT_NAME \ --pool-name $POOL_NAME \ --volume-name "$VOLUME_NAME -o JSON
Följande utdata är ett exempel på kommandot ovan som körs med verkliga värden.
{ ... "creationToken": "myfilepath2", ... "mountTargets": [ { ... "ipAddress": "10.0.0.4", ... } ], ... }
Skapa en fil med namnet
pv-nfs.yaml
och kopiera i följande YAML. Kontrollera att servern matchar utdata-IP-adressen från steg 1 och sökvägen matchar utdata fråncreationToken
ovan. Kapaciteten måste också matcha volymstorleken från steget ovan.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
Skapa den beständiga volymen med kommandot
kubectl apply
:kubectl apply -f pv-nfs.yaml
Kontrollera att statusen för den beständiga volymen är Tillgänglig med hjälp
kubectl describe
av kommandot :kubectl describe pv pv-nfs
Skapa ett beständigt volymanspråk
Skapa en fil med namnet
pvc-nfs.yaml
och kopiera i följande YAML. Det här manifestet skapar en PVC med namnetpvc-nfs
för lagrings- och åtkomstläget 100Gi,ReadWriteMany
som matchar den PV som du skapade.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nfs spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 100Gi
Skapa det beständiga volymanspråket
kubectl apply
med kommandot :kubectl apply -f pvc-nfs.yaml
Kontrollera att Status för det beständiga volymanspråket är Bundet
kubectl describe
med hjälp av kommandot :kubectl describe pvc pvc-nfs
Montera med en podd
Skapa en fil med namnet
nginx-nfs.yaml
och kopiera i följande YAML. Det här manifestet definierar ennginx
podd som använder det beständiga volymanspråket.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
Skapa podden med
kubectl apply
kommandot :kubectl apply -f nginx-nfs.yaml
Kontrollera att podden körs med hjälp
kubectl describe
av kommandot :kubectl describe pod nginx-nfs
Kontrollera att volymen har monterats på podden med hjälp
kubectl exec
av för att ansluta till podden och använddf -h
sedan för att kontrollera om volymen är monterad.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 ...
Konfigurera dynamiskt för program som använder NFS-volymer
Astra Trident kan användas för att dynamiskt etablera NFS- eller SMB-filer på Azure NetApp Files. Dynamiskt etablerade SMB-volymer stöds endast med Windows-arbetsnoder.
I det här avsnittet beskrivs hur du använder Astra Trident för att dynamiskt skapa en NFS-volym på Azure NetApp Files och automatiskt montera den i ett containerbaserat program.
Installera Astra Trident
För att dynamiskt etablera NFS-volymer måste du installera Astra Trident. Astra Trident är NetApps dynamiska lagringsetabler som är specialbyggd för Kubernetes. Förenkla förbrukningen av lagring för Kubernetes-program med hjälp av Astra Tridents CSI-drivrutin (Container Storage Interface) av branschstandard. Astra Trident distribuerar på Kubernetes-kluster som poddar och tillhandahåller dynamiska lagringsorkestreringstjänster för dina Kubernetes-arbetsbelastningar.
Trident kan installeras med Trident-operatorn (manuellt eller med Helm) eller tridentctl
. Mer information om dessa installationsmetoder och hur de fungerar finns i Installationsguiden för Astra Trident.
Installera Astra Trident med Helm
Helm måste installeras på din arbetsstation för att installera Astra Trident med den här metoden. För andra metoder för att installera Astra Trident, se Astra Trident Install Guide.
Om du vill installera Astra Trident med Helm för ett kluster med endast Linux-arbetsnoder kör du följande kommandon:
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
Kommandots utdata liknar följande exempel:
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
Kontrollera att Astra Trident har installerats genom att köra följande
kubectl describe
kommando:kubectl describe torc trident
Kommandots utdata liknar följande exempel:
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
Skapa en serverdel
För att instruera Astra Trident om Azure NetApp Files-prenumerationen och var den behöver skapa volymer skapas en serverdel. Det här steget kräver information om kontot som skapades i ett tidigare steg.
Skapa en fil med namnet
backend-secret.yaml
och kopiera i följande YAML.Client ID
Ändra ochclientSecret
till rätt värden för din miljö.apiVersion: v1 kind: Secret metadata: name: backend-tbc-anf-secret type: Opaque stringData: clientID: 00001111-aaaa-2222-bbbb-3333cccc4444 clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
Skapa en fil med namnet
backend-anf.yaml
och kopiera i följande YAML.subscriptionID
Ändra värdena ,tenantID
,location
ochserviceLevel
till rätt värden för din miljö.subscriptionID
Använd för den Azure-prenumeration där Azure NetApp Files är aktiverat.tenantID
Hämta ,clientID
ochclientSecret
från en programregistrering i Microsoft Entra-ID med tillräcklig behörighet för Azure NetApp Files-tjänsten. Programregistreringen innehåller rollen Ägare eller Deltagare som fördefinierades av Azure. Platsen måste vara en Azure-plats som innehåller minst ett delegerat undernät som skapades i ett tidigare steg.serviceLevel
Måste matcha denserviceLevel
konfigurerade för kapacitetspoolen i Konfigurera Azure NetApp Files för AKS-arbetsbelastningar.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
Mer information om serverdelar finns i Konfigurationsalternativ och exempel för Serverdelen i Azure NetApp Files.
Använd hemligheten och serverdelen med kommandot
kubectl apply
. Använd först hemligheten:kubectl apply -f backend-secret.yaml -n trident
Kommandots utdata liknar följande exempel:
secret/backend-tbc-anf-secret created
Använd serverdelen:
kubectl apply -f backend-anf.yaml -n trident
Kommandots utdata liknar följande exempel:
tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
Bekräfta att serverdelen skapades med hjälp
kubectl get
av kommandot :kubectl get tridentbackends -n trident
Kommandots utdata liknar följande exempel:
NAME BACKEND BACKEND UUID tbe-kfrdh backend-tbc-anf 8da4e926-9dd4-4a40-8d6a-375aab28c566
Skapa en lagringsklass
En lagringsklass används för att definiera hur en lagringsenhet skapas dynamiskt med en beständig volym. Om du vill använda Azure NetApp Files-volymer måste en lagringsklass skapas.
Skapa en fil med namnet
anf-storageclass.yaml
och kopiera i följande 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"
Skapa lagringsklassen
kubectl apply
med kommandot :kubectl apply -f anf-storageclass.yaml
Kommandots utdata liknar följande exempel:
storageclass/azure-netapp-files created
kubectl get
Kör kommandot för att visa status för lagringsklassen:kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE azure-netapp-files csi.trident.netapp.io Delete Immediate false
Skapa en PVC
Ett beständiga volymanspråk (PVC) är en begäran om lagring av en användare. När ett beständiga volymanspråk skapas skapar Astra Trident automatiskt en Azure NetApp Files-volym och gör den tillgänglig för Kubernetes-arbetsbelastningar att använda.
Skapa en fil med namnet
anf-pvc.yaml
och kopiera i följande YAML. I det här exemplet behövs en 1-TiB-volym med ReadWriteMany-åtkomst.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: anf-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 1Ti storageClassName: azure-netapp-files
Skapa det beständiga volymanspråket
kubectl apply
med kommandot :kubectl apply -f anf-pvc.yaml
Kommandots utdata liknar följande exempel:
persistentvolumeclaim/anf-pvc created
Om du vill visa information om det beständiga volymanspråket kör du
kubectl get
kommandot:kubectl get pvc
Kommandots utdata liknar följande exempel:
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
Använd den beständiga volymen
När PVC har skapats skapar Astra Trident den beständiga volymen. En podd kan snurras upp för att montera och komma åt Azure NetApp Files-volymen.
Följande manifest kan användas för att definiera en NGINX-podd som monterar Azure NetApp Files-volymen som skapades i föregående steg. I det här exemplet monteras volymen på /mnt/data
.
Skapa en fil med namnet
anf-nginx-pod.yaml
och kopiera i följande 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
Skapa podden med
kubectl apply
kommandot :kubectl apply -f anf-nginx-pod.yaml
Kommandots utdata liknar följande exempel:
pod/nginx-pod created
Kubernetes har skapat en podd med volymen monterad och tillgänglig i containern
nginx
på/mnt/data
. Du kan bekräfta genom att kontrollera händelseloggarna för podden med hjälp avkubectl describe
kommandot:kubectl describe pod nginx-pod
Kommandots utdata liknar följande exempel:
[...] 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
Nästa steg
Astra Trident har stöd för många funktioner med Azure NetApp Files. Mer information finns i:
Azure Kubernetes Service