Sdílet prostřednictvím


Vytvoření a použití svazku se službou Azure Files ve službě Azure Kubernetes Service (AKS)

Trvalý svazek představuje část úložiště, která byla zřízena pro použití s pody Kubernetes. Můžete použít trvalý svazek s jedním nebo několika pody a může být dynamicky nebo staticky zřízen. Pokud více podů potřebuje souběžný přístup ke stejnému svazku úložiště, můžete se pomocí služby Soubory Azure připojit pomocí protokolu SMB (Server Message Block). V tomto článku se dozvíte, jak dynamicky vytvořit sdílenou složku Azure pro použití několika pody v clusteru Azure Kubernetes Service (AKS).

V tomto článku se dozvíte, jak:

  • Spolupracujte s dynamickým trvalým svazkem (PV) instalací ovladače rozhraní kontejnerového úložiště (CSI) a dynamickým vytvořením jedné nebo více sdílených složek Azure pro připojení k podu.
  • S statickou pv můžete pracovat tak, že vytvoříte jednu nebo více sdílených složek Azure nebo použijete existující sdílenou složku a připojíte ji k podu.

Další informace o svazcích Kubernetes najdete v tématu Možnosti úložiště pro aplikace v AKS.

Než začnete

  • Potřebujete účet úložiště Azure.
  • Ujistěte se, že máte 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 nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI.
  • Při výběru mezi sdílenými složkami úrovně Standard a Premium je důležité porozumět modelu zřizování a požadavkům očekávaného způsobu použití, který plánujete spustit ve službě Azure Files. Další informace najdete v tématu Volba úrovně výkonu služby Azure Files na základě vzorů využití.

Dynamicky zřiďte svazek

Tato část obsahuje pokyny pro správce clusteru, kteří chtějí zřídit jeden nebo více trvalých svazků, které obsahují podrobnosti o jedné nebo více sdílených složkách ve službě Azure Files. Požadavek na trvalý svazek (PVC) používá objekt třídy úložiště k dynamickému zřizování sdílení souborů Azure Files.

Parametry třídy úložiště pro dynamické trvalé svazky

Následující tabulka obsahuje parametry, které můžete použít k definování vlastní třídy úložiště pro persistentVolumeClaim.

Název Význam Dostupná hodnota Povinný Výchozí hodnota
úroveňPřístupuÚčtu Úroveň přístupu pro účet úložiště Účet úrovně Standard může zvolit Hot nebo Cool, a účet Premium může zvolit pouze Premium. Ne Prázdný. Pro různé typy účtů úložiště použijte výchozí nastavení.
accountQuota Omezuje kvótu pro účet. Maximální kvótu můžete zadat v GB (ve výchozím nastavení 102400 GB). Pokud účet překročí zadanou kvótu, ovladač přeskočí výběr účtu. Ne 102400
povolitVeřejnýPřístupKBlobům Povolí nebo zakáže veřejný přístup ke všem objektům blob nebo kontejnerům pro účet úložiště vytvořený ovladačem. true nebo false Ne false
zakázatPolitikuZachováníMazání Zadejte, zda chcete zakázat politiku uchovávání odstraněných dat pro účet úložiště, který byl vytvořen ovladačem. true nebo false Ne false
název složky Zadejte název složky ve sdílené složce Azure. Název existující složky ve sdílené složce Azure Ne Pokud název složky ve sdílené složce neexistuje, připojení selže.
získatNejnovějšíÚčet Určuje, jestli se má na základě času vytvoření získat nejnovější klíč účtu. Tento ovladač ve výchozím nastavení získá první klíč. true nebo false Ne false
umístění Zadejte oblast pro účet úložiště v Azure. Například eastus. Ne Pokud je prázdný, ovladač používá stejný název umístění jako aktuální cluster AKS.
matchTags Sladí značky, když se ovladač pokusí najít vhodný účet úložiště. true nebo false Ne false
typ síťového koncového bodu Zadejte typ koncového bodu sítě pro účet úložiště vytvořený ovladačem. Pokud privateEndpoint je zadaný, vytvoří se pro účet úložiště privátní koncový bod. V jiných případech se ve výchozím nastavení vytvoří koncový bod služby. "",privateEndpoint Ne ""
protokol Zadejte protokol sdílené složky. smb, nfs Ne smb
Požadovat šifrování infrastruktury Určete, jestli služba použije sekundární vrstvu šifrování s klíči spravovanými platformou pro neaktivní uložená data pro účet úložiště vytvořený ovladačem. true nebo false Ne false
skupina zdrojů Zadejte skupinu prostředků pro disky Azure. Název existující skupiny prostředků Ne Pokud je prázdný, ovladač použije název skupiny prostředků, který je stejný jako u aktuálního clusteru AKS.
vybratZcelaNáhodnýVyhovujícíÚčet Určuje, zda se má náhodně vybrat odpovídající účet. Ve výchozím nastavení ovladač vždy vybere první odpovídající účet v abecedním pořadí (Poznámka: Tento ovladač používá mezipaměť vyhledávání účtů, což vede k nerovnoměrné distribuci vytváření souborů napříč více účty). true nebo false Ne false
server Zadejte adresu serveru účtu úložiště Azure. Existující adresa serveru, například accountname.privatelink.file.core.windows.net. Ne Pokud je prázdný, ovladač používá výchozí accountname.file.core.windows.net nebo jinou adresu účtu suverénního cloudu.
úroveň přístupu ke sdílení Úroveň přístupu pro sdílenou složku Účet pro obecné účely verze 2 si může vybrat mezi TransactionOptimized (výchozí) Hota Cool. Typ účtu služby Premium Storage pouze pro sdílené složky. Ne Prázdný. Pro různé typy účtů úložiště použijte výchozí nastavení.
název sdílení Zadejte název sdílené složky Azure. Název existující nebo nové sdílené složky Azure Ne Pokud je prázdný, ovladač vygeneruje název sdílené složky Azure.
prefix názvu sdílené složky Zadejte předponu názvu sdílené složky Azure vytvořenou ovladačem. Název sdílené složky může obsahovat jenom malá písmena, číslice, pomlčky a délku kratší než 21 znaků. Ne
skuName Typ účtu úložiště Azure Files (alias: storageAccountType) Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS, ,Standard_RAGZRSPremium_LRS,Premium_ZRS Ne Standard_LRS
Minimální velikost sdílené složky pro typ účtu Premium je 100 GB.
Typ účtu ZRS se podporuje v omezených oblastech.
Sdílená složka NFS podporuje pouze typ účtu Premium.
účet úložiště Zadejte název účtu úložiště Azure. názevÚčtuÚložiště -Ne Pokud není zadaný konkrétní název účtu úložiště, ovladač vyhledá vhodný účet úložiště, který odpovídá nastavení účtu ve stejné skupině prostředků. Pokud se nepodaří najít odpovídající účet úložiště, vytvoří nový účet. Pokud je však zadaný název účtu úložiště, účet úložiště už musí existovat.
storageEndpointSuffix Zadejte příponu koncového bodu úložiště Azure. core.windows.net, core.chinacloudapi.cnatd. Ne Pokud je prázdný, ovladač použije výchozí příponu koncového bodu úložiště v závislosti na cloudovém prostředí. Například core.windows.net.
značky Značky jsou vytvořeny v novém účtu úložiště. Formát značky: 'foo=aaa,bar=bbb' Ne ""
--- Následující parametry jsou určené pouze pro protokol SMB. --- ---
ID předplatného Zadejte ID předplatného Azure, ve kterém je vytvořena sdílená složka Azure. ID předplatného Azure Ne Pokud není prázdný, resourceGroup je nutné zadat.
uložitKlíčÚčtu Určete, jestli se má klíč účtu ukládat do tajného kódu Kubernetes. true nebo false
false znamená, že ovladač používá k získání klíče účtu kubelet identitu.
Ne true
tajnýNázev Zadejte název tajného kódu pro uložení klíče účtu. Ne
secretNamespace Zadejte obor názvů tajného kódu pro uložení klíče účtu.

Poznámka:
Pokud secretNamespace není zadaný, tajný klíč se vytvoří ve stejném oboru názvů jako pod.
default kube-system, etc. Ne Jmenný prostor PVC, například csi.storage.k8s.io/pvc/namespace
useDataPlaneAPI Určete, jestli se má použít rozhraní API roviny dat pro vytvoření, odstranění nebo změnu velikosti sdílené složky, což by mohlo vyřešit problém s omezováním rozhraní API SRP, protože rozhraní API roviny dat nemá téměř žádný limit, zatímco při nastavení brány firewall nebo virtuální sítě v účtu úložiště dojde k selhání. true nebo false Ne false
--- Následující parametry jsou určené pouze pro protokol NFS. --- ---
mountPermissions Oprávnění připojené složky. Výchozí hodnota je 0777. Pokud je nastaveno na 0, ovladač neprovádí chmod po připojení. 0777 Ne
rootSquashType Zadejte chování kořenového squashingu ve sdílené složce. Výchozí hodnota je NoRootSquash. AllSquash, , NoRootSquashRootSquash Ne
--- Následující parametry platí jenom pro nastavení virtuální sítě. Například NFS, privátní koncový bod --- ---
politika změny fsGroup Určuje, jak řadič přebírá vlastnictví svazku. Pod securityContext.fsGroupChangePolicy je ignorován. OnRootMismatch (výchozí), Always, None Ne OnRootMismatch
název podsítě Název podsítě Název existující podsítě uzlu agenta Ne Pokud je prázdný, ovladač použije hodnotu v konfiguračním subnetName souboru cloudu Azure.
vnetName Název virtuální sítě Název existující virtuální sítě Ne pokud je prázdný, ovladač aktualizuje všechny podsítě ve virtuální síti clusteru.
vnetResourceGroup Zadejte skupinu prostředků virtuální sítě, ve které je definována virtuální síť. Název existující skupiny prostředků Ne Pokud je prázdný, ovladač použije hodnotu v konfiguračním vnetResourceGroup souboru cloudu Azure.

1 Pokud je účet úložiště vytvořen ovladačem, stačí zadat networkEndpointType: privateEndpoint parametr pouze ve třídě úložiště. Ovladač CSI vytvoří privátní koncový bod a privátní zónu DNS (pojmenovanou privatelink.file.core.windows.net) společně s účtem. Pokud používáte vlastní účet úložiště, musíte pro účet úložiště vytvořit privátní koncový bod . Pokud používáte úložiště Azure Files v izolovaném síťovém clusteru, musíte vytvořit vlastní třídu úložiště s typem networkEndpointType: privateEndpoint. Pro referenci můžete postupovat podle následující ukázky.

---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azurefile-csi
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
  skuName: Premium_LRS  # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS
  networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
  - dir_mode=0777  # modify this permission if you want to enhance the security
  - file_mode=0777
  - mfsymlinks
  - cache=strict  # https://linux.die.net/man/8/mount.cifs
  - nosharesock  # reduce probability of reconnect race
  - actimeo=30  # reduce latency for metadata-heavy workload
  - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks

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

Třídy úložiště definují, jak vytvořit sdílenou složku Azure. Účet úložiště se automaticky vytvoří ve skupině prostředků uzlu pro použití s třídou úložiště pro uložení sdílené složky Azure Files. Vyberte z následujících SKUs redundantního úložiště Azure pro skuName:

  • Standard_LRS: Místně redundantní úložiště úrovně Standard (LRS)
  • Standard_GRS: Standardní geograficky redundantní úložiště (GRS)
  • Standard_ZRS: Standardní zónově redundantní úložiště (ZRS)
  • Standard_RAGRS: Standardní geograficky redundantní úložiště jen pro čtení (RA-GRS)
  • Premium_LRS: Místně redundantní úložiště úrovně Premium (LRS)
  • Premium_ZRS: Zónově redundantní úložiště úrovně Premium (ZRS)

Poznámka:

Minimální sdílená složka úrovně Premium je 100 GB.

Další informace o třídách úložiště Kubernetes pro Azure Files najdete v tématu Třídy úložiště Kubernetes.

  1. Vytvořte soubor s názvem azure-file-sc.yaml a zkopírujte ho v následujícím ukázkovém manifestu. Další informace najdete mountOptionsv části Možnosti připojení .

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: my-azurefile
    provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
    allowVolumeExpansion: true
    mountOptions:
     - dir_mode=0777
     - file_mode=0777
     - uid=0
     - gid=0
     - mfsymlinks
     - cache=strict
     - actimeo=30
     - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    parameters:
      skuName: Premium_LRS
    
  2. Pomocí příkazu vytvořte třídu kubectl apply úložiště.

    kubectl apply -f azure-file-sc.yaml
    

Vytvoření požadavku na trvalý svazek

Požadavek na trvalý svazek (PVC) používá objekt třídy úložiště k dynamickému zřizování sdíleného disku Azure. Pomocí následujícího YAML můžete vytvořit persistentní nárok na svazek o velikosti 100 GB s přístupovým režimem ReadWriteMany. Další informace o režimech přístupu najdete v tématu Persistentní svazek Kubernetes.

  1. Vytvořte soubor s názvem azure-file-pvc.yaml a zkopírujte ho v následujícím jazyce YAML. Ujistěte se, storageClassName že odpovídá třídě úložiště, kterou jste vytvořili v předchozím kroku.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-azurefile
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: my-azurefile
      resources:
        requests:
          storage: 100Gi
    

    Poznámka:

    Pokud pro třídu úložiště používáte SKU Premium_LRS, musí být minimální hodnota pro storage100Gi.

  2. Pomocí příkazu kubectl apply vytvořte požadavek na trvalý svazek.

    kubectl apply -f azure-file-pvc.yaml
    

    Po dokončení se sdílená složka vytvoří. Vytvoří se také tajný klíč Kubernetes, který obsahuje informace o připojení a přihlašovací údaje. Pomocí příkazu můžete kubectl get zobrazit stav PVC:

    kubectl get pvc my-azurefile
    

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

    NAME           STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
    my-azurefile   Bound     pvc-8436e62e-a0d9-11e5-8521-5a8664dc0477   100Gi       RWX            my-azurefile      5m
    

Použití trvalého svazku

Následující YAML vytvoří pod, který používá trvalý požadavek na svazek my-azurefile k připojení sdílené složky Azure Files na cestě /mnt/azure. Pro kontejnery Windows Serveru zadejte mountPath pomocí konvence cesty systému Windows, například D:.

  1. Vytvořte soubor s názvem azure-pvc-files.yamla zkopírujte ho do následujícího YAML. Ujistěte se, že claimName odpovídá PVC, který jste vytvořili v předchozím kroku.

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
        - name: mypod
          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/azure
              name: volume
              readOnly: false
      volumes:
       - name: volume
         persistentVolumeClaim:
           claimName: my-azurefile
    
  2. Vytvořte pod pomocí příkazu kubectl apply.

    kubectl apply -f azure-pvc-files.yaml
    

    Teď máte spuštěný pod se sdílenou složkou Azure Files připojenou v adresáři /mnt/azure . Tuto konfiguraci můžete vidět při zkoumání podu pomocí příkazu kubectl describe. Následující zhuštěný ukázkový výstup ukazuje svazek připojený v kontejneru.

    Containers:
      mypod:
        Container ID:   docker://053bc9c0df72232d755aa040bfba8b533fa696b123876108dec400e364d2523e
        Image:          mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        Image ID:       docker-pullable://nginx@sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
        State:          Running
          Started:      Fri, 01 Mar 2019 23:56:16 +0000
        Ready:          True
        Mounts:
          /mnt/azure from volume (rw)
          /var/run/secrets/kubernetes.io/serviceaccount from default-token-8rv4z (ro)
    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  my-azurefile
        ReadOnly:   false
    [...]
    

Možnosti připojení

Výchozí hodnota fileMode pro Kubernetes verze 1.13.0 a dirMode vyšší je 0777 . Pokud dynamicky vytváříte trvalý svazek s třídou úložiště, můžete zadat možnosti připojení k objektu třídy úložiště. Další informace najdete v tématu Možnosti připojení. Následující příklad nastaví 0777:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: my-azurefile
provisioner: file.csi.azure.com # replace with "kubernetes.io/azure-file" if aks version is less than 1.21
allowVolumeExpansion: true
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=0
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
  - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
parameters:
  skuName: Premium_LRS

Poznámka:

Umístění pro konfiguraci možností připojení (mountOptions) závisí na tom, jestli zřizujete dynamické nebo statické trvalé svazky. Pokud dynamicky zřizujete svazek s třídou úložiště, zadejte možnosti připojení k objektu třídy úložiště (druh: StorageClass). Pokud staticky zřizujete svazek, zadejte možnosti připojení u objektu PersistentVolume (druh: PersistentVolume). Pokud sdílenou složku připojujete jako vložený svazek, zadejte možnosti připojení objektu Pod (druh: Pod).

Použití značek Azure

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

Statické provisionování svazku

Tato část obsahuje pokyny pro správce clusteru, kteří chtějí vytvořit jeden nebo více trvalých svazků, které obsahují podrobnosti o existující sdílené složce Azure, která se má použít s úlohou.

Statické parametry zřizování pro PersistentVolume

Následující tabulka obsahuje parametry, které můžete použít k definování PersistentVolume.

Název Význam Dostupná hodnota Povinný Výchozí hodnota
atributyObjemu.skupinaZdroju Zadejte název skupiny prostředků Azure. MojeSkupinaZdrojů Ne Pokud je prázdný, ovladač použije stejný název skupiny prostředků jako aktuální klastr.
atributyObjemu.účetÚložiště Zadejte název existujícího účtu úložiště Azure. názevÚčtuÚložiště Ano
volumeAttributes.shareName Zadejte název sdílené složky Azure. název sdílení souborů Ano
atributy svazku.název složky Zadejte název složky ve sdílené složce Azure. název složky Ne Pokud název složky ve sdílené složce neexistuje, připojení selže.
volumeAttributes.protokol Zadejte protokol sdílené složky. smb, nfs Ne smb
volumeAttributes.server Zadání adresy serveru účtu úložiště Azure Existující adresa serveru, například accountname.privatelink.file.core.windows.net. Ne Pokud je prázdný, ovladač používá výchozí accountname.file.core.windows.net nebo jinou adresu účtu suverénního cloudu.
--- Následující parametry jsou určené pouze pro protokol SMB. --- --- ---
volumeAttributes.secretName Zadejte tajný název, který ukládá název a klíč účtu úložiště. Ne
volumeAttributes.secretNamespace Zadejte obor názvů tajných kódů. default kube-system, etc. Ne Obor názvů PVC (csi.storage.k8s.io/pvc/namespace)
nodeStageSecretRef.name Zadejte tajný název, který ukládá název a klíč účtu úložiště. Existující tajný název. Ne Pokud je prázdný, ovladač k získání klíče účtu používá identitu kubeletu.
nodeStageSecretRef.namespace Zadejte obor názvů tajných kódů. Jmenný prostor Kubernetes Ne
--- Následující parametry jsou určené pouze pro protokol NFS. --- --- ---
volumeAttributes.fsGroupChangePolicy (atributy objemu.politika změn skupiny FS) Určuje, jak ovladač změní vlastnictví svazku. Pod securityContext.fsGroupChangePolicy je ignorován. OnRootMismatch (výchozí), Always, None Ne OnRootMismatch
volumeAttributes.mountPermissions Zadejte oprávnění připojené složky. Výchozí hodnota je 0777. Ne

Vytvořit sdílení souborů Azure

Než budete moct jako svazek Kubernetes použít sdílenou složku Azure Files, musíte vytvořit účet služby Azure Storage a sdílenou složku.

  1. Získejte název skupiny prostředků pomocí příkazu az aks show s parametrem --query nodeResourceGroup.

    az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
    

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

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Vytvořte účet úložiště pomocí az storage account create příkazu s parametrem --sku . Následující příkaz vytvoří účet úložiště pomocí skladové Standard_LRS položky. Nezapomeňte nahradit následující zástupné symboly:

    • myAKSStorageAccount s názvem účtu úložiště
    • nodeResourceGroupName s názvem skupiny prostředků, ve které jsou uzly clusteru AKS hostované
    • location s názvem oblasti, ve které se má prostředek vytvořit. Měla by to být stejná oblast jako uzly clusteru AKS.
    az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
    
  3. Exportujte připojovací řetězec jako proměnnou prostředí pomocí následujícího příkazu, který použijete k vytvoření sdílené složky.

    export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
    
  4. Vytvořte sdílený adresář pomocí příkazu az storage share create. Nezapomeňte nahradit shareName názvem sdílené složky.

    az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
    
  5. Pomocí následujícího příkazu exportujte klíč účtu úložiště jako proměnnou prostředí.

    STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
    
  6. Pomocí následujícího příkazu zobrazte název a klíč účtu úložiště. Tyto informace zkopírujte, protože tyto hodnoty potřebujete při vytváření svazku Kubernetes.

    echo Storage account key: $STORAGE_KEY
    

Vytvoření tajného kódu Kubernetes

Kubernetes potřebuje přihlašovací údaje pro přístup ke sdílené složce vytvořené v předchozím kroku. Tyto přihlašovací údaje se ukládají do tajného kódu Kubernetes, na který se odkazuje při vytváření podu Kubernetes.

  1. Vytvořte tajný kód pomocí kubectl create secret příkazu. Následující příklad vytvoří tajemství s názvem azure-secret a naplní azurestorageaccountname a azurestorageaccountkey z předchozího kroku. Pokud chcete použít existující účet úložiště Azure, zadejte název a klíč účtu.

    kubectl create secret generic azure-secret --from-literal=azurestorageaccountname=myAKSStorageAccount --from-literal=azurestorageaccountkey=$STORAGE_KEY
    

Připojení sdílené složky jako trvalého svazku

  1. Vytvořte nový soubor s názvem azurefiles-pv.yaml a zkopírujte do něj následující obsah. V části csi aktualizujte resourceGroup, volumeHandle, a shareName. Pro možnosti montování je výchozí hodnota pro fileMode a dirMode0777.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: file.csi.azure.com
      name: azurefile
    spec:
      capacity:
        storage: 5Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      storageClassName: azurefile-csi
      csi:
        driver: file.csi.azure.com
        volumeHandle: "{resource-group-name}#{account-name}#{file-share-name}"  # make sure this volumeid is unique for every identical share in the cluster
        volumeAttributes:
          shareName: aksshare
        nodeStageSecretRef:
          name: azure-secret
          namespace: default
      mountOptions:
        - dir_mode=0777
        - file_mode=0777
        - uid=0
        - gid=0
        - mfsymlinks
        - cache=strict
        - nosharesock
        - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    
  2. Pomocí příkazu kubectl create vytvořte trvalý svazek.

    kubectl create -f azurefiles-pv.yaml
    
  3. Vytvořte nový soubor s názvem azurefiles-mount-options-pvc.yaml a zkopírujte následující obsah.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurefile
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: azurefile-csi
      volumeName: azurefile
      resources:
        requests:
          storage: 5Gi
    
  4. Pomocí příkazu vytvořte PersistentVolumeClaim kubectl apply .

    kubectl apply -f azurefiles-mount-options-pvc.yaml
    
  5. Pomocí příkazu kubectl get ověřte, že váš PersistentVolumeClaim je vytvořen a svázán s PersistentVolume.

    kubectl get pvc azurefile
    

    Výstup příkazu vypadá podobně jako v následujícím příkladu:

    NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    azurefile   Bound    azurefile   5Gi        RWX            azurefile      5s
    
  6. Aktualizujte specifikaci kontejneru, aby odkazovala na PersistentVolumeClaim a váš pod v souboru YAML. Příklad:

    ...
      volumes:
      - name: azure
        persistentVolumeClaim:
          claimName: azurefile
    
  7. Specifikace podu se nedá aktualizovat na místě, proto pod odstraňte pomocí kubectl delete příkazu a znovu vytvořte pomocí kubectl apply příkazu.

    kubectl delete pod mypod
    
    kubectl apply -f azure-files-pod.yaml
    

Připojení souborového podílu jako integrovaného svazku

Poznámka:

Pokud se chcete vyhnout problémům s výkonem, doporučujeme místo vloženého svazku použít trvalý svazek, když ke stejné sdílené složce přistupuje mnoho podů. Vložený svazek má přístup pouze k tajným kódům ve stejném oboru názvů jako pod. Pokud chcete zadat jiný obor názvů tajných kódů, použijte trvalý svazek.

Pokud chcete připojit sdílenou složku Azure Files k podu, nakonfigurujte svazek ve specifikaci kontejneru.

  1. Vytvořte nový soubor s názvem azure-files-pod.yaml a zkopírujte do něj následující obsah. Pokud jste změnili název sdílené složky nebo názvu tajného kódu, aktualizujte soubor shareName a secretName. Můžete také aktualizovat mountPath, což je cesta, kde je sdílená složka připojena v podu. Pro kontejnery Windows Serveru zadejte mountPath pomocí konvence cesty systému Windows, například D:.

    apiVersion: v1
    kind: Pod
    metadata:
      name: mypod
    spec:
      nodeSelector:
        kubernetes.io/os: linux
      containers:
        - image: 'mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine'
          name: mypod
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 250m
              memory: 256Mi
          volumeMounts:
            - name: azure
              mountPath: /mnt/azure
              readOnly: false
      volumes:
        - name: azure
          csi:
            driver: file.csi.azure.com
            volumeAttributes:
              secretName: azure-secret  # required
              shareName: aksshare  # required
              mountOptions: 'dir_mode=0777,file_mode=0777,cache=strict,actimeo=30,nosharesock,nobrl'  # optional
    
  2. Vytvořte pod pomocí příkazu kubectl apply.

    kubectl apply -f azure-files-pod.yaml
    

    Teď máte spuštěný pod se sdílenou složkou Azure Files připojenou v /mnt/azure. Pomocí příkazu můžete ověřit, že je sdílená složka úspěšně kubectl describe připojená.

    kubectl describe pod mypod
    

Osvědčené postupy

Pokud chcete mít s Azure Files co nejlepší zkušenosti, postupujte podle těchto osvědčených postupů:

Sdílené složky SMB

  • Doporučené možnosti připojení pro sdílené složky SMB jsou k dispozici v následujícím příkladu třídy úložiště:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
     name: azurefile-csi
    provisioner: file.csi.azure.com
    allowVolumeExpansion: true
    parameters:
     skuName: Premium_LRS  # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    mountOptions:
     - dir_mode=0777  # modify this permission if you want to enhance the security
     - file_mode=0777 # modify this permission if you want to enhance the security
     - mfsymlinks    # support symbolic links
     - cache=strict  # https://linux.die.net/man/8/mount.cifs
     - nosharesock  # reduces probability of reconnect race
     - actimeo=30  # reduces latency for metadata-heavy workload
     - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    
  • Pokud používáte sdílené soubory úrovně Premium (SSD) a vaše úlohy jsou s velkým množstvím metadat, zaregistrujte se, abyste mohli využít funkci ukládání metadat do mezipaměti ke zlepšení výkonu.

Další informace najdete v Zlepšení výkonu sdílených složek SMB Azure.

Sdílení NFS

  • Doporučené možnosti připojení pro sdílené složky NFS jsou k dispozici v následujícím příkladu třídy úložiště:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azurefile-csi-nfs
    provisioner: file.csi.azure.com
    parameters:
      protocol: nfs
      skuName: Premium_LRS     # available values: Premium_LRS, Premium_ZRS
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - nconnect=4  # improves performance by enabling multiple connections to share
      - noresvport  # improves availability
      - actimeo=30  # reduces latency for metadata-heavy workloads
    
  • Zvyšte velikost čtení dopředu , aby se zlepšila propustnost čtení.

  • Azure Files sice podporuje nastavení nconnect až k maximálnímu nastavení 16, ale doporučujeme nakonfigurovat možnosti připojení optimálním nastavením nconnect=4. V současné době neexistují žádné zisky nad rámec čtyř kanálů pro implementaci nconnect služby Azure Files.

Další informace najdete v tématu Zlepšení výkonu sdílených složek Azure NFS.

Další kroky

Informace o parametrech ovladače CSI služby Azure Files najdete v tématu Parametry ovladače CSI.

Přidružené osvědčené postupy najdete v tématu Osvědčené postupy pro ukládání a zálohování v AKS.