Sdílet prostřednictvím


Zřízení svazků NFS služby Azure NetApp Files pro službu Azure Kubernetes Service

Po konfiguraci služby Azure NetApp Files pro službu Azure Kubernetes Service můžete zřídit svazky Azure NetApp Files pro službu Azure Kubernetes Service.

Azure NetApp Files podporuje svazky používající systém souborů NFS (NFSv3 nebo NFSv4.1), SMB nebo duální protokol (NFSv3 a SMB nebo NFSv4.1 a SMB).

Staticky konfigurujte pro aplikace, které používají svazky NFS.

Tato část popisuje, jak vytvořit svazek NFS ve službě Azure NetApp Files a zpřístupnit svazek staticky pro Kubernetes. Popisuje také, jak používat svazek s kontejnerizovanou aplikací.

Vytvoření svazku NFS

  1. Definujte proměnné pro pozdější použití. Nahraďte myresourcegroup, mylocation, myaccountname, mypool1, premium, myfilepath, myvolsize, myvolname, vnetid a anfSubnetID příslušnou hodnotou z vašeho účtu a prostředí. Cesta k souboru musí být jedinečná ve všech účtech 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"
    
  2. Vytvořte svazek pomocí az netappfiles volume create příkazu. Další informace najdete v tématu Vytvoření svazku NFS pro 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
    

Vytvoření trvalého svazku

  1. Vypíše podrobnosti o svazku pomocí az netappfiles volume show příkazu. Nahraďte proměnné příslušnými hodnotami z vašeho účtu a prostředí Azure NetApp Files, pokud nejsou definovány v předchozím kroku.

    az netappfiles volume show \
        --resource-group $RESOURCE_GROUP \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --volume-name "$VOLUME_NAME -o JSON
    

    Následující výstup je příkladem výše uvedeného příkazu spuštěného se skutečnými hodnotami.

    {
      ...
      "creationToken": "myfilepath2",
      ...
      "mountTargets": [
        {
          ...
          "ipAddress": "10.0.0.4",
          ...
        }
      ],
      ...
    }
    
  2. Vytvořte soubor s názvem pv-nfs.yaml a zkopírujte ho v následujícím jazyce YAML. Ujistěte se, že server odpovídá výstupní IP adrese z kroku 1 a cesta odpovídá výstupu výše creationToken . Kapacita musí také odpovídat velikosti svazku z výše uvedeného 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
    
  3. Pomocí příkazu vytvořte trvalý svazek kubectl apply :

    kubectl apply -f pv-nfs.yaml
    
  4. Pomocí příkazu ověřte, že je trvalý svazek dostupnýkubectl describe:

    kubectl describe pv pv-nfs
    

Vytvoření deklarace trvalého svazku

  1. Vytvořte soubor s názvem pvc-nfs.yaml a zkopírujte ho v následujícím jazyce YAML. Tento manifest vytvoří PVC pojmenovaný pvc-nfs pro 100Gi úložiště a ReadWriteMany režim přístupu odpovídající PV, který jste vytvořili.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. Pomocí příkazu vytvořte trvalou deklaraci identity svazku kubectl apply :

    kubectl apply -f pvc-nfs.yaml
    
  3. Pomocí příkazu ověřte, že je stav trvalé deklarace identity svazku kubectl describe svázaný:

    kubectl describe pvc pvc-nfs
    

Připojení s podem

  1. Vytvořte soubor s názvem nginx-nfs.yaml a zkopírujte ho v následujícím jazyce YAML. Tento manifest definuje nginx pod, který používá trvalou deklaraci identity svazku.

    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. Vytvořte pod pomocí kubectl apply příkazu:

    kubectl apply -f nginx-nfs.yaml
    
  3. Pomocí příkazu ověřte, že je pod spuštěnýkubectl describe:

    kubectl describe pod nginx-nfs
    
  4. Ověřte, že je svazek připojený k podu pomocí připojení kubectl exec k podu, a pak pomocí df -h kontroly, jestli je svazek připojený.

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

Dynamická konfigurace pro aplikace, které používají svazky NFS

Astra Trident se dá použít k dynamickému zřizování souborů NFS nebo SMB ve službě Azure NetApp Files. Dynamicky zřízené svazky SMB jsou podporovány pouze u pracovních uzlů Windows.

Tato část popisuje, jak pomocí Astra Trident dynamicky vytvořit svazek NFS ve službě Azure NetApp Files a automaticky ho připojit ke kontejnerizované aplikaci.

Instalace Astra Trident

Pokud chcete dynamicky zřizovat svazky NFS, musíte nainstalovat Astra Trident. Astra Trident je dynamická zřizovací služba úložiště NetApp, která je pro Kubernetes vytvořená účelově. Zjednodušte spotřebu úložiště pro aplikace Kubernetes pomocí standardního ovladače rozhraní CSI (Container Storage Interface) Astra Trident. Astra Trident se nasazuje v clusterech Kubernetes jako pody a poskytuje dynamické služby orchestrace úložiště pro úlohy Kubernetes.

Trident lze nainstalovat pomocí operátoru Trident (ručně nebo pomocí Helmu) nebo tridentctl. Další informace o těchto metodách instalace a jejich fungování najdete v průvodci instalací Astra Trident.

Instalace Astra Tridentu pomocí Nástroje Helm

Helm musí být nainstalován na pracovní stanici, aby bylo možné pomocí této metody nainstalovat Astra Trident. Další metody instalace Astra Trident naleznete v průvodci instalací Astra Trident.

  1. Pokud chcete nainstalovat Astra Trident pomocí Helmu pro cluster s pouze linuxovými pracovními uzly, spusťte následující příkazy:

    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
    

    Výstup příkazu se podobá následujícímu příkladu:

    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. Pokud chcete ověřit, že se Astra Trident úspěšně nainstaloval, spusťte následující kubectl describe příkaz:

    kubectl describe torc trident
    

    Výstup příkazu se podobá následujícímu příkladu:

    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
    

Vytvoření back-endu

Pokud chcete Astra Trident instruovat o předplatném Azure NetApp Files a kde potřebuje vytvářet svazky, vytvoří se back-end. Tento krok vyžaduje podrobnosti o účtu vytvořeném v předchozím kroku.

  1. Vytvořte soubor s názvem backend-secret.yaml a zkopírujte ho v následujícím jazyce YAML. Client ID Změňte hodnoty a clientSecret správné hodnoty pro vaše prostředí.

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-tbc-anf-secret
    type: Opaque
    stringData:
      clientID: 00001111-aaaa-2222-bbbb-3333cccc4444
      clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
    
  2. Vytvořte soubor s názvem backend-anf.yaml a zkopírujte ho v následujícím jazyce YAML. Změňte hodnotu subscriptionID, locationtenantIDa serviceLevel na správné hodnoty pro vaše prostředí. subscriptionID Použijte předplatné Azure, ve kterém je povolená služba Azure NetApp Files. tenantIDZískejte , clientIDa clientSecret z registrace aplikace v Microsoft Entra ID s dostatečnými oprávněními pro službu Azure NetApp Files. Registrace aplikace zahrnuje roli Vlastník nebo Přispěvatel předdefinovaná v Azure. Umístění musí být umístění Azure, které obsahuje aspoň jednu delegovanou podsíť vytvořenou v předchozím kroku. Musí serviceLevel se shodovat s serviceLevel nakonfigurovaným fondem kapacity v části Konfigurace služby Azure NetApp Files pro úlohy 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
    

    Další informace o back-endech najdete v tématu Možnosti a příklady konfigurace back-endu služby Azure NetApp Files.

  3. Použijte tajný klíč a back-end pomocí kubectl apply příkazu. Nejprve použijte tajný kód:

    kubectl apply -f backend-secret.yaml -n trident
    

    Výstup příkazu se podobá následujícímu příkladu:

    secret/backend-tbc-anf-secret created
    

    Použijte back-end:

    kubectl apply -f backend-anf.yaml -n trident
    

    Výstup příkazu se podobá následujícímu příkladu:

    tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
    
  4. Pomocí příkazu ověřte, že se back-end vytvořil kubectl get :

     kubectl get tridentbackends -n trident
    

    Výstup příkazu se podobá následujícímu příkladu:

    NAME        BACKEND               BACKEND UUID
    tbe-kfrdh   backend-tbc-anf   8da4e926-9dd4-4a40-8d6a-375aab28c566
    

Vytvoření třídy úložiště

Třída úložiště slouží k definování dynamického vytvoření jednotky úložiště s trvalým svazkem. Aby bylo možné využívat svazky Azure NetApp Files, musí se vytvořit třída úložiště.

  1. Vytvořte soubor s názvem anf-storageclass.yaml a zkopírujte ho v následujícím jazyce 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. Pomocí příkazu vytvořte třídu kubectl apply úložiště:

    kubectl apply -f anf-storageclass.yaml
    

    Výstup příkazu se podobá následujícímu příkladu:

    storageclass/azure-netapp-files created
    
  3. Spuštěním kubectl get příkazu zobrazte stav třídy úložiště:

    kubectl get sc
    NAME                 PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    azure-netapp-files   csi.trident.netapp.io   Delete          Immediate           false                  
    

Vytvoření PVC

Trvalá deklarace identity svazku (PVC) je žádost o úložiště uživatelem. Po vytvoření trvalé deklarace identity svazku vytvoří Astra Trident automaticky svazek Azure NetApp Files a zpřístupní ho pro úlohy Kubernetes, které budou využívat.

  1. Vytvořte soubor s názvem anf-pvc.yaml a zkopírujte ho v následujícím jazyce YAML. V tomto příkladu je potřeba svazek 1 TiB s přístupem ReadWriteMany.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: anf-pvc
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 1Ti
      storageClassName: azure-netapp-files
    
  2. Pomocí příkazu vytvořte trvalou deklaraci identity svazku kubectl apply :

    kubectl apply -f anf-pvc.yaml
    

    Výstup příkazu se podobá následujícímu příkladu:

    persistentvolumeclaim/anf-pvc created
    
  3. Pokud chcete zobrazit informace o trvalé deklaraci identity svazku kubectl get , spusťte příkaz:

    kubectl get pvc
    

    Výstup příkazu se podobá následujícímu příkladu:

    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
    

Použití trvalého svazku

Po vytvoření PVC vytvoří Astra Trident trvalý svazek. Pod se dá připojit ke svazku Azure NetApp Files a získat k němu přístup.

Následující manifest se dá použít k definování podu NGINX, který připojí svazek Azure NetApp Files vytvořený v předchozím kroku. V tomto příkladu je svazek připojen na /mnt/dataadrese .

  1. Vytvořte soubor s názvem anf-nginx-pod.yaml a zkopírujte ho v následujícím jazyce 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. Vytvořte pod pomocí kubectl apply příkazu:

    kubectl apply -f anf-nginx-pod.yaml
    

    Výstup příkazu se podobá následujícímu příkladu:

    pod/nginx-pod created
    

    Kubernetes vytvořil pod s připojeným svazkem a přístupným v kontejneru nginx na adrese /mnt/data. Kontrolu protokolů událostí pro pod můžete ověřit pomocí kubectl describe příkazu:

    kubectl describe pod nginx-pod
    

    Výstup příkazu se podobá následujícímu příkladu:

    [...]
    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
    

Další kroky

Astra Trident podporuje mnoho funkcí v Azure NetApp Files. Další informace naleznete v tématu: