Zřízení svazků Azure NetApp Files na Azure Kubernetes Service

Trvalý svazek představuje část úložiště, která byla zřízena pro použití s pody Kubernetes. Trvalý svazek může používat jeden nebo více podů a je možné ho dynamicky nebo staticky zřizovat. V tomto článku se dozvíte, jak vytvořit Azure NetApp Files svazky, které budou používat pody v clusteru Azure Kubernetes Service (AKS).

Azure NetApp Files je vysoce výkonná služba úložiště souborů s měřením dat na podnikové úrovni, která běží v Azure. Uživatelé Kubernetes mají dvě možnosti použití svazků Azure NetApp Files pro úlohy Kubernetes:

  • Statické vytváření Azure NetApp Files svazků V tomto scénáři je vytváření svazků pro AKS externí. Svazky se vytvářejí pomocí Azure CLI nebo z Azure Portal a pak se pro Kubernetes zveřejňují vytvořením PersistentVolume. Staticky vytvořené Azure NetApp Files svazky mají řadu omezení (například nemožnost rozšíření, nutnost přetěžování atd.). Staticky vytvořené svazky se ve většině případů použití nedoporučují.
  • Vytváření Azure NetApp Files svazků na vyžádání a orchestrace prostřednictvím Kubernetes Tato metoda představuje upřednostňovaný způsob, jak vytvořit více svazků přímo prostřednictvím Kubernetes, a to pomocí Astra Trident. Astra Trident je orchestrátor dynamického úložiště kompatibilní s CSI, který pomáhá nativně zřizovat svazky prostřednictvím Kubernetes.

Použití ovladače CSI k přímému využívání Azure NetApp Files svazků z úloh AKS je doporučenou konfigurací pro většinu případů použití. Tento požadavek se splní pomocí Astra Trident, opensourcového orchestrátoru dynamického úložiště pro Kubernetes. Astra Trident je orchestrátor úložiště na podnikové úrovni vytvořený pro Kubernetes a plně podporovaný platformou NetApp. Zjednodušuje přístup k úložišti z clusterů Kubernetes tím, že automatizuje zřizování úložiště.

Pomocí ovladače CSI (Container Storage Interface) od společnosti Astra Trident pro Azure NetApp Files můžete abstrahovat podkladové podrobnosti a vytvářet, rozšiřovat a vytvářet svazky na vyžádání. Navíc použití Astra Trident umožňuje používat Astra Control Service postavenou na Astra Trident. Pomocí služby Astra Control Service můžete zálohovat, obnovovat, přesouvat a spravovat životní cyklus aplikačních dat vašich úloh AKS napříč clustery v rámci oblastí Azure a napříč oblastmi Azure tak, aby splňovaly vaše požadavky na provozní kontinuitu a kontinuitu služeb.

Než začnete

Při použití Azure NetApp Files platí následující aspekty:

  • Váš cluster AKS musí být v oblasti, která podporuje Azure NetApp Files.
  • Nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.0.59 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.
  • Po počátečním nasazení clusteru AKS můžete Azure NetApp Files svazky zřídit staticky nebo dynamicky.
  • Pokud chcete s Azure NetApp Files používat dynamické zřizování, nainstalujte a nakonfigurujte Astra Trident verze 19.07 nebo vyšší.

Konfigurace Azure NetApp Files

  1. Spuštěním následujícího příkazu zaregistrujte poskytovatele prostředků Microsoft.NetApp :

    az provider register --namespace Microsoft.NetApp --wait
    

    Poznámka

    Dokončení této operace může trvat několik minut.

  2. Když vytvoříte účet Azure NetApp pro použití se službou AKS, můžete tento účet vytvořit v existující skupině prostředků nebo vytvořit novou ve stejné oblasti jako cluster AKS. Následující příkaz vytvoří účet myaccount1 ve skupině prostředků myResourceGroup a oblasti eastus :

    az netappfiles account create \
        --resource-group myResourceGroup \
        --location eastus \
        --account-name myaccount1
    
  3. Vytvořte nový fond kapacity pomocí příkazu az netappfiles pool create. Následující příklad vytvoří nový fond kapacity mypool1 s velikostí 4 TB a úrovní služeb Premium :

    az netappfiles pool create \
        --resource-group myResourceGroup \
        --location eastus \
        --account-name myaccount1 \
        --pool-name mypool1 \
        --size 4 \
        --service-level Premium
    
  4. Vytvořte podsíť pro delegování Azure NetApp Files pomocí příkazu az network vnet subnet create. Zadejte skupinu prostředků hostující existující virtuální síť pro váš cluster AKS.

    Poznámka

    Tato podsíť musí být ve stejné virtuální síti jako váš cluster AKS.

    RESOURCE_GROUP=myResourceGroup
    VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
    VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
    SUBNET_NAME=MyNetAppSubnet
    az network vnet subnet create \
        --resource-group $RESOURCE_GROUP \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --delegations "Microsoft.NetApp/volumes" \
        --address-prefixes 10.0.0.0/28
    

    Svazky je možné zřizovat staticky nebo dynamicky. Obě možnosti jsou podrobněji popsány v dalších částech.

Statické zřízení svazků Azure NetApp Files

  1. Vytvořte svazek pomocí příkazu az netappfiles volume create . Aktualizujte RESOURCE_GROUP, LOCATION( ANF_ACCOUNT_NAME název účtu Azure NetApp), POOL_NAMEa SERVICE_LEVEL správnými hodnotami.

    RESOURCE_GROUP=myResourceGroup
    LOCATION=eastus
    ANF_ACCOUNT_NAME=myaccount1
    POOL_NAME=mypool1
    SERVICE_LEVEL=Premium
    VNET_NAME=$(az network vnet list --resource-group $RESOURCE_GROUP --query [].name -o tsv)
    VNET_ID=$(az network vnet show --resource-group $RESOURCE_GROUP --name $VNET_NAME --query "id" -o tsv)
    SUBNET_NAME=MyNetAppSubnet
    SUBNET_ID=$(az network vnet subnet show --resource-group $RESOURCE_GROUP --vnet-name $VNET_NAME --name $SUBNET_NAME --query "id" -o tsv)
    VOLUME_SIZE_GiB=100 # 100 GiB
    UNIQUE_FILE_PATH="myfilepath2" # Note that file path needs to be unique within all ANF Accounts
    
    az netappfiles volume create \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --name "myvol1" \
        --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. Výpis podrobností o svazku pomocí příkazu az netappfiles volume show

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

    Následující výstup se podobá výstupu předchozího příkazu:

    {
      ...
      "creationToken": "myfilepath2",
      ...
      "mountTargets": [
        {
          ...
          "ipAddress": "10.0.0.4",
          ...
        }
      ],
      ...
    }
    
  2. pv-nfs.yaml Vytvořte definující trvalý svazek zkopírováním následujícího manifestu. Nahraďte path za creationToken a serverza ipAddress z předchozí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. Vytvořte trvalý svazek pomocí příkazu kubectl apply :

    kubectl apply -f pv-nfs.yaml
    
  4. Pomocí příkazu kubectl describe ověřte, že stav persistentvolume je k dispozici:

    kubectl describe pv pv-nfs
    

Vytvoření deklarace identity trvalého svazku

  1. pvc-nfs.yaml Vytvořte definici PersistentVolume zkopírováním následujícího manifestu:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 1Gi
    
  2. K vytvoření deklarace identity trvalého svazku použijte příkaz kubectl apply :

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

    kubectl describe pvc pvc-nfs
    

Připojení pomocí podu

  1. Pomocí následujícího manifestu nginx-nfs.yaml vytvořte definující pod, který používá deklaraci identity trvalého 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í příkazu kubectl apply :

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

    kubectl describe pod nginx-nfs
    
  4. Pomocí kubectl exec pro připojení k podu ověřte, že je váš svazek připojený k podu a pak pomocí příkazu df -h zkontrolujte, 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é zřizování svazků Azure NetApp Files

Instalace a konfigurace Astra Trident

Pokud chcete dynamicky zřizovat svazky, musíte nainstalovat Astra Trident. Astra Trident je nástroj pro zřizování dynamického úložiště v NetApp, který je určený pro Kubernetes. Zjednodušte využití úložiště pro aplikace Kubernetes pomocí standardního ovladače rozhraní kontejneru (CSI) Astra Trident. Astra Trident se nasazuje do clusterů Kubernetes jako pody a poskytuje dynamické služby orchestrace úložiště pro úlohy Kubernetes.

Než budete pokračovat k další části, musíte:

  1. Nainstalujte Astra Trident. Trident se dá nainstalovat pomocí operátoru Trident (ručně nebo pomocí Helmu) nebo tridentctl. Pokyny uvedené dále v tomto článku vysvětlují, jak lze Astra Trident nainstalovat pomocí operátoru . Další informace o těchto metodách instalace a o tom, jak fungují, najdete v průvodci instalací.

  2. Vytvořte back-end. Pokud chcete instruovat Astra Trident o předplatném Azure NetApp Files a o tom, 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.

Instalace Astra Trident pomocí operátoru

Tato část vás provede instalací Astra Trident pomocí operátoru .

  1. Stáhněte si Astra Trident z jejího úložiště GitHub. Vyberte si z požadované verze a stáhněte balíček instalačního programu.

    wget https://github.com/NetApp/trident/releases/download/v21.07.1/trident-installer-21.07.1.tar.gz
    tar xzvf trident-installer-21.07.1.tar.gz
    
  2. Spuštěním příkazu [kubectl create][kubectl-create] vytvořte obor názvů trident :

    kubectl create ns trident
    

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

    namespace/trident created
    
  3. Spuštěním příkazu kubectl apply nasaďte operátor Trident pomocí souboru bundle:

    kubectl apply -f trident-installer/deploy/bundle.yaml -n trident
    

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

    serviceaccount/trident-operator created
    clusterrole.rbac.authorization.k8s.io/trident-operator created
    clusterrolebinding.rbac.authorization.k8s.io/trident-operator created
    deployment.apps/trident-operator created
    podsecuritypolicy.policy/tridentoperatorpods created
    
  4. Spuštěním následujícího příkazu vytvořte TridentOrchestrator a nainstalujte Astra Trident.

    kubectl apply -f trident-installer/deploy/crds/tridentorchestrator_cr.yaml
    

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

    tridentorchestrator.trident.netapp.io/trident created 
    

    Operátor se instaluje pomocí parametrů uvedených ve specifikaci TridentOrchestrator . Informace o konfiguračních parametrech a ukázkových back-endech najdete v průvodci instalací tridentu a průvodci back-endem.

  5. Pokud chcete ověřit úspěšnou instalaci Astra Trident, spusťte následující příkaz kubectl describe :

    kubectl describe torc trident
    

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

    Name:         trident
    Namespace:
    Labels:       <none>
    Annotations:  <none>
    API Version:  trident.netapp.io/v1
    Kind:         TridentOrchestrator
    ...
    Spec:
      Debug:      true
      Namespace:  trident
    Status:
      Current Installation Params:
        IPv6:                       false
        Autosupport Hostname:
        Autosupport Image:          netapp/trident-autosupport:21.01
        Autosupport Proxy:
        Autosupport Serial Number:
        Debug:                      true
        Enable Node Prep:           false
        Image Pull Secrets:
        Image Registry:
        k8sTimeout:           30
        Kubelet Dir:          /var/lib/kubelet
        Log Format:           text
        Silence Autosupport:  false
        Trident Image:        netapp/trident:21.07.1
      Message:                Trident installed
      Namespace:              trident
      Status:                 Installed
      Version:                v21.07.1
    Events:
      Type    Reason      Age   From                        Message
      ----    ------      ----  ----                        -------
      Normal  Installing  74s   trident-operator.netapp.io  Installing Trident
      Normal  Installed   67s   trident-operator.netapp.io  Trident installed
    

Vytvoření back-endu

  1. Před vytvořením back-endu je potřeba provést aktualizaci backend-anf.yaml tak, aby obsahoval podrobnosti o Azure NetApp Files předplatném, například:

    • subscriptionIDpro předplatné Azure, kde se Azure NetApp Files povolí.
    • tenantID, clientIDa clientSecret z registrace aplikace v Azure Active Directory (AD) s dostatečnými oprávněními pro službu Azure NetApp Files. Registrace aplikace zahrnuje Owner roli nebo Contributor , která je předdefinovaná v Azure.
    • Umístění Azure, které obsahuje alespoň jednu delegovanou podsíť.

    Kromě toho se můžete rozhodnout poskytovat jinou úroveň služby. Azure NetApp Files poskytuje tři úrovně služeb: Standard, Premium a Ultra.

  2. Po instalaci Astra Trident spuštěním následujícího příkazu vytvořte back-end, který odkazuje na vaše předplatné Azure NetApp Files.

    kubectl apply -f trident-installer/sample-input/backends-samples/azure-netapp-files/backend-anf.yaml -n trident
    

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

    secret/backend-tbc-anf-secret created
    tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
    

Vytvoření třídy StorageClass

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

  1. Vytvořte soubor s názvem anf-storageclass.yaml a zkopírujte ho v následujícím manifestu:

    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. Vytvořte třídu úložiště pomocí příkazu kubectl apply :

    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 příkazu kubectl get 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                  3s
    

Vytvoření trvalé deklarace identity svazku

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

  1. Vytvořte soubor s názvem anf-pvc.yaml a zkopírujte následující manifest. V tomto příkladu se vytvoří 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 kubectl apply vytvořte deklaraci trvalého svazku:

    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, spusťte příkaz kubectl get :

    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 je možné pod roztáčit, aby se přístup k Azure NetApp Files svazku. Následující manifest lze použít k definování podu NGINX, který připojí Azure NetApp Files svazek 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 následující manifest:

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-pod
    spec:
      containers:
      - name: nginx
        image: mcr.microsoft.com/oss/nginx/nginx:latest1.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í příkazu kubectl apply :

    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 se svazkem připojeným a přístupným v kontejneru nginx na adrese /mnt/data. To můžete ověřit kontrolou protokolů událostí podu pomocí příkazu kubectl describe :

    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
    

Použití značek Azure

Další podrobnosti o používání značek Azure najdete v tématu Použití značek Azure v Azure Kubernetes Service (AKS).

Další kroky

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