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).

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

  1. 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"
    
  2. 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

  1. 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",
          ...
        }
      ],
      ...
    }
    
  2. 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ån creationToken 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
    
  3. Skapa den beständiga volymen med kommandot kubectl apply :

    kubectl apply -f pv-nfs.yaml
    
  4. 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

  1. Skapa en fil med namnet pvc-nfs.yaml och kopiera i följande YAML. Det här manifestet skapar en PVC med namnet pvc-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
    
  2. Skapa det beständiga volymanspråket kubectl apply med kommandot :

    kubectl apply -f pvc-nfs.yaml
    
  3. Kontrollera att Status för det beständiga volymanspråket är Bundetkubectl describe med hjälp av kommandot :

    kubectl describe pvc pvc-nfs
    

Montera med en podd

  1. Skapa en fil med namnet nginx-nfs.yaml och kopiera i följande YAML. Det här manifestet definierar en nginx 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
    
  2. Skapa podden med kubectl apply kommandot :

    kubectl apply -f nginx-nfs.yaml
    
  3. Kontrollera att podden körs med hjälp kubectl describe av kommandot :

    kubectl describe pod nginx-nfs
    
  4. Kontrollera att volymen har monterats på podden med hjälp kubectl exec av för att ansluta till podden och använd df -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.

  1. 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
    
  2. 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.

  1. Skapa en fil med namnet backend-secret.yaml och kopiera i följande YAML. Client ID Ändra och clientSecret till rätt värden för din miljö.

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-tbc-anf-secret
    type: Opaque
    stringData:
      clientID: abcde356-bf8e-fake-c111-abcde35613aa
      clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
    
  2. Skapa en fil med namnet backend-anf.yaml och kopiera i följande YAML. subscriptionIDÄndra värdena , tenantID, locationoch serviceLevel till rätt värden för din miljö. subscriptionID Använd för den Azure-prenumeration där Azure NetApp Files är aktiverat. tenantIDHämta , clientIDoch clientSecret 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 den serviceLevel 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: 12abc678-4774-fake-a1b2-a7abcde39312
      tenantID: a7abcde3-edc1-fake-b111-a7abcde356cf
      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.

  3. 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
    
  4. 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.

  1. 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"
    
  2. Skapa lagringsklassen kubectl apply med kommandot :

    kubectl apply -f anf-storageclass.yaml
    

    Kommandots utdata liknar följande exempel:

    storageclass/azure-netapp-files created
    
  3. 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.

  1. 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
    
  2. 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
    
  3. 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.

  1. 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
    
  2. 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/mnt/data. Du kan bekräfta genom att kontrollera händelseloggarna för podden med hjälp av kubectl 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: