Udostępnij za pośrednictwem


Tworzenie i używanie woluminu z usługą Azure Files w usłudze Azure Kubernetes Service (AKS)

Wolumin trwały reprezentuje element magazynu, który został aprowizowany do użycia z zasobnikami Kubernetes. Można użyć woluminu trwałego z jednym lub wieloma zasobnikami i może być dynamicznie lub statycznie aprowizowany. Jeśli wiele zasobników wymaga współbieżnego dostępu do tego samego woluminu magazynu, możesz użyć usługi Azure Files do nawiązania połączenia przy użyciu protokołu bloku komunikatów serwera (SMB). W tym artykule pokazano, jak dynamicznie utworzyć udział plików platformy Azure do użycia przez wiele zasobników w klastrze usługi Azure Kubernetes Service (AKS).

W tym artykule pokazano, w jaki sposób wykonać następujące czynności:

  • Współpracuj z dynamicznym woluminem trwałym (PV), instalując sterownik interfejsu magazynu kontenerów (CSI) i dynamicznie tworząc co najmniej jeden udział plików platformy Azure w celu dołączenia do zasobnika.
  • Pracuj ze statycznym serwerem pv, tworząc co najmniej jeden udział plików platformy Azure lub używając istniejącego i dołączając go do zasobnika.

Aby uzyskać więcej informacji na temat woluminów Kubernetes, zobacz Opcje magazynu dla aplikacji w usłudze AKS.

Zanim rozpoczniesz

Dynamiczne aprowizowania woluminu

Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą aprowizować co najmniej jeden wolumin trwały zawierający szczegóły co najmniej jednego udziału w usłudze Azure Files. Trwałe oświadczenie woluminu (PVC) używa obiektu klasy magazynu do dynamicznego aprowizowania udziału plików usługi Azure Files.

Parametry klasy magazynu dla dynamicznych trwałychvolumes

Poniższa tabela zawiera parametry, których można użyć do zdefiniowania niestandardowej klasy magazynu dla elementu PersistentVolumeClaim.

Nazwisko Znaczenie Dostępna wartość Obowiązkowy Domyślna wartość
accountAccessTier Warstwa dostępu dla konta magazynu Konto standardowe może wybrać Hot lub Cool, a konto Premium może wybrać tylko pozycję Premium. Nie. Pusty. Użyj ustawienia domyślnego dla różnych typów kont magazynu.
accountQuota Ogranicza limit przydziału dla konta. Możesz określić maksymalny limit przydziału w GB (domyślnie 102400 GB). Jeśli konto przekroczy określony limit przydziału, sterownik pomija wybranie konta. Nie. 102400
allowBlobPublicAccess Zezwalaj lub nie zezwalaj na publiczny dostęp do wszystkich obiektów blob lub kontenerów dla konta magazynu utworzonego przez sterownik. true lub false Nie. false
disableDeleteRetentionPolicy Określ, czy wyłączyć funkcję DeleteRetentionPolicy dla konta magazynu utworzonego przez sterownik. true lub false Nie. false
enableLargeFileShares Określ, czy używać konta magazynu z włączonymi dużymi udziałami plików, czy nie. Jeśli ta flaga jest ustawiona na true i konto magazynu z włączonymi dużymi udziałami plików nie istnieje, zostanie utworzone nowe konto magazynu z włączonymi dużymi udziałami plików. Ta flaga powinna być używana z jednostki SKU w warstwie Standardowa, ponieważ konta magazynu utworzone przy użyciu jednostki SKU Premium mają largeFileShares domyślnie włączoną opcję. true lub false Nie. fałsz
folderName Określ nazwę folderu w udziale plików platformy Azure. Istniejąca nazwa folderu w udziale plików platformy Azure. Nie. Jeśli nazwa folderu nie istnieje w udziale plików, instalacja zakończy się niepowodzeniem.
getLatestAccount Określa, czy pobrać najnowszy klucz konta na podstawie czasu utworzenia. Ten sterownik domyślnie pobiera pierwszy klucz. true lub false Nie. false
lokalizacja Określ region świadczenia usługi Azure Storage. Na przykład eastus. Nie. Jeśli jest pusty, sterownik używa tej samej nazwy lokalizacji co bieżący klaster usługi AKS.
matchTags Dopasuj tagi, gdy sterownik próbuje znaleźć odpowiednie konto magazynu. true lub false Nie. false
networkEndpointType Określ typ punktu końcowego sieci dla konta magazynu utworzonego przez sterownik. Jeśli privateEndpoint zostanie określony, dla konta magazynu zostanie utworzony prywatny punkt końcowy. W innych przypadkach punkt końcowy usługi jest tworzony domyślnie. "",privateEndpoint Nie. ""
protokół Określ protokół udziału plików. smb, nfs Nie. smb
requireInfraEncryption Określ, czy usługa stosuje dodatkową warstwę szyfrowania z kluczami zarządzanymi przez platformę dla danych magazynowanych dla konta magazynu utworzonego przez sterownik. true lub false Nie. false
resourceGroup Określ grupę zasobów dla dysków platformy Azure. Nazwa istniejącej grupy zasobów Nie. Jeśli jest pusty, sterownik używa tej samej nazwy grupy zasobów co bieżący klaster usługi AKS.
selectRandomMatchingAccount Określa, czy losowo wybrać zgodne konto. Domyślnie sterownik zawsze wybiera pierwsze zgodne konto w kolejności alfabetycznej (Uwaga: ten sterownik używa pamięci podręcznej wyszukiwania kont, co powoduje nierównomierną dystrybucję tworzenia plików na wielu kontach). true lub false Nie. false
serwer Określ adres serwera konta usługi Azure Storage. Istniejący adres serwera, na przykład accountname.privatelink.file.core.windows.net. Nie. Jeśli jest pusty, sterownik używa domyślnego accountname.file.core.windows.net lub innego adresu konta suwerennej chmury.
shareAccessTier Warstwa dostępu dla udziału plików Konto ogólnego przeznaczenia w wersji 2 może wybierać między TransactionOptimized (ustawieniem domyślnym), Hoti Cool. Typ konta usługi Premium Storage tylko dla udziałów plików. Nie. Pusty. Użyj ustawienia domyślnego dla różnych typów kont magazynu.
shareName Określ nazwę udziału plików platformy Azure. Istniejąca lub nowa nazwa udziału plików platformy Azure. Nie. Jeśli jest pusty, sterownik generuje nazwę udziału plików platformy Azure.
shareNamePrefix Określ prefiks nazwy udziału plików platformy Azure utworzony przez sterownik. Nazwa udziału może zawierać tylko małe litery, cyfry, łączniki i długość powinna być mniejsza niż 21 znaków. Nie.
skuName Typ konta magazynu usługi Azure Files (alias: storageAccountType) Standard_LRS, Standard_ZRSStandard_GRS, Standard_RAGRS, Standard_RAGZRSPremium_LRSPremium_ZRS Nie. StandardSSD_LRS
Minimalny rozmiar udziału plików dla typu konta Premium wynosi 100 GB.
Typ konta magazynu ZRS jest obsługiwany w ograniczonych regionach.
Udział plików NFS obsługuje tylko typ konta Premium.
storageAccount Określ nazwę konta usługi Azure Storage. storageAccountName -Nie Jeśli określona nazwa konta magazynu nie zostanie podana, sterownik wyszuka odpowiednie konto magazynu zgodne z ustawieniami konta w tej samej grupie zasobów. Jeśli nie uda się znaleźć pasującego konta magazynu, zostanie utworzone nowe. Jeśli jednak zostanie określona nazwa konta magazynu, konto magazynu musi już istnieć.
storageEndpointSuffix Określ sufiks punktu końcowego usługi Azure Storage. core.windows.net, core.chinacloudapi.cn, itp. Nie. Jeśli jest pusty, sterownik używa domyślnego sufiksu punktu końcowego magazynu zgodnie ze środowiskiem chmury. Na przykład core.windows.net.
tags Tagi są tworzone na nowym koncie magazynu. Format tagu: "foo=aaa,bar=bbb" Nie. ""
--- Następujące parametry dotyczą tylko protokołu SMB --- ---
identyfikator subskrypcji Określ identyfikator subskrypcji platformy Azure, w którym jest tworzony udział plików platformy Azure. Identyfikator subskrypcji Azure Nie. Jeśli nie jest pusty, resourceGroup należy podać.
storeAccountKey Określ, czy klucz konta ma być przechowywany w kluczu tajnym platformy Kubernetes. true lub false
false oznacza, że sterownik używa tożsamości kubelet do pobrania klucza konta.
Nie. true
secretName Określ nazwę wpisu tajnego do przechowywania klucza konta. Nie.
secretNamespace Określ przestrzeń nazw wpisu tajnego do przechowywania klucza konta.

Uwaga:
Jeśli secretNamespace nie zostanie określony, wpis tajny zostanie utworzony w tej samej przestrzeni nazw co zasobnik.
default,kube-system itp. Nie. Przestrzeń nazw PVC, na przykład csi.storage.k8s.io/pvc/namespace
useDataPlaneAPI Określ, czy używać interfejsu API płaszczyzny danych do tworzenia/usuwania/zmiany rozmiaru udziału plików, co może rozwiązać problem z ograniczaniem przepływności interfejsu API protokołu SRP, ponieważ interfejs API płaszczyzny danych nie ma prawie żadnego limitu, podczas gdy w przypadku ustawienia zapory lub sieci wirtualnej na koncie magazynu zakończy się niepowodzeniem. true lub false Nie. false
--- Następujące parametry dotyczą tylko protokołu NFS --- ---
mountPermissions Zainstalowane uprawnienia folderu. Wartość domyślna to 0777. Jeśli ustawiono 0wartość , sterownik nie wykonuje operacji chmod po zainstalowaniu 0777 Nie.
rootSquashType Określ zachowanie ściągania katalogu głównego w udziale. Wartość domyślna to NoRootSquash. AllSquash, , NoRootSquashRootSquash Nie.
--- Następujące parametry dotyczą tylko ustawień sieci wirtualnej. Na przykład NFS, prywatny punkt końcowy --- ---
fsGroupChangePolicy Wskazuje, jak sterownik zmienia własność woluminu. Zasobnik securityContext.fsGroupChangePolicy jest ignorowany. OnRootMismatch (ustawienie domyślne), Always, None Nie. OnRootMismatch
subnetName Nazwa podsieci Istniejąca nazwa podsieci węzła agenta. Nie. Jeśli jest pusty, sterownik używa subnetName wartości w pliku konfiguracji chmury platformy Azure.
vnetName Nazwa sieci wirtualnej Istniejąca nazwa sieci wirtualnej. Nie. Jeśli jest pusty, sterownik używa vnetName wartości w pliku konfiguracji chmury platformy Azure.
vnetResourceGroup Określ grupę zasobów sieci wirtualnej, w której zdefiniowano sieć wirtualną. Istniejąca nazwa grupy zasobów. Nie. Jeśli jest pusty, sterownik używa vnetResourceGroup wartości w pliku konfiguracji chmury platformy Azure.

Tworzenie klasy magazynu

Klasy magazynu definiują sposób tworzenia udziału plików platformy Azure. Konto magazynu jest tworzone automatycznie w grupie zasobów węzła do użycia z klasą magazynu do przechowywania udziału plików usługi Azure Files. Wybierz następujące jednostki SKU nadmiarowości magazynu platformy Azure dla programu skuName:

  • Standard_LRS: Magazyn lokalnie nadmiarowy (LRS) w warstwie Standardowa
  • Standard_GRS: Magazyn geograficznie nadmiarowy w warstwie Standardowa (GRS)
  • Standard_ZRS: Magazyn strefowo nadmiarowy w warstwie Standardowa (ZRS)
  • Standard_RAGRS: magazyn geograficznie nadmiarowy z dostępem do odczytu (RA-GRS)
  • Premium_LRS: Magazyn lokalnie nadmiarowy w warstwie Premium (LRS)
  • Premium_ZRS: Magazyn strefowo nadmiarowy w warstwie Premium (ZRS)

Uwaga

Minimalny udział plików w warstwie Premium wynosi 100 GB.

Aby uzyskać więcej informacji na temat klas magazynu kubernetes dla usługi Azure Files, zobacz Klasy magazynu Kubernetes.

  1. Utwórz plik o nazwie azure-file-sc.yaml i skopiuj w poniższym przykładowym manifeście. Aby uzyskać więcej informacji na temat mountOptionsprogramu , zobacz sekcję Opcje instalacji.

    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. Utwórz klasę magazynu przy użyciu kubectl apply polecenia .

    kubectl apply -f azure-file-sc.yaml
    

Tworzenie trwałego oświadczenia woluminu

Trwałe oświadczenie woluminu (PVC) używa obiektu klasy magazynu do dynamicznego aprowizowania udziału plików platformy Azure. Poniższy kod YAML umożliwia utworzenie trwałego oświadczenia woluminu o rozmiarze 100 GB z dostępem ReadWriteMany . Aby uzyskać więcej informacji na temat trybów dostępu, zobacz Kubernetes trwały wolumin.

  1. Utwórz plik o nazwie azure-file-pvc.yaml i skopiuj go w następującym języku YAML. Upewnij się, że klasa storageClassName magazynu utworzona w poprzednim kroku jest zgodna z klasą magazynu.

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

    Uwaga

    Jeśli używasz Premium_LRS jednostki SKU dla klasy magazynu, minimalną wartością storage musi być 100Gi.

  2. Utwórz oświadczenie trwałego woluminu kubectl apply przy użyciu polecenia .

    kubectl apply -f azure-file-pvc.yaml
    

    Po zakończeniu udział plików zostanie utworzony. Zostanie również utworzony wpis tajny kubernetes zawierający informacje o połączeniu i poświadczenia. Możesz użyć kubectl get polecenia , aby wyświetlić stan PCV:

    kubectl get pvc my-azurefile
    

    Dane wyjściowe polecenia przypominają następujący przykład:

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

Używanie woluminu trwałego

Poniższy kod YAML tworzy zasobnik, który używa trwałego oświadczenia woluminu my-azurefile do zainstalowania udziału plików usługi Azure Files w ścieżce /mnt/azure . W przypadku kontenerów systemu Windows Server określ konwencję mountPath ścieżki systemu Windows, taką jak "D:".

  1. Utwórz plik o nazwie azure-pvc-files.yamli skopiuj go w następującym pliku YAML. Upewnij się, że element claimName jest zgodny z elementem PVC utworzonym w poprzednim 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. Utwórz zasobnik przy użyciu kubectl apply polecenia .

    kubectl apply -f azure-pvc-files.yaml
    

    Masz teraz uruchomiony zasobnik z udziałem plików usługi Azure Files zainstalowanym w katalogu /mnt/azure . Tę konfigurację można zobaczyć podczas inspekcji zasobnika przy użyciu kubectl describe polecenia . Następujące skrócone przykładowe dane wyjściowe pokazują wolumin zainstalowany w kontenerze.

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

Mount options (Opcje instalacji)

Wartość domyślna elementu fileMode i dirMode to 0777 dla platformy Kubernetes w wersji 1.13.0 lub nowszej. Jeśli dynamicznie tworzysz wolumin trwały za pomocą klasy magazynu, możesz określić opcje instalacji w obiekcie klasy magazynu. Aby uzyskać więcej informacji, zobacz Opcje instalacji. W poniższym przykładzie ustawiono wartość 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

Korzystanie z tagów platformy Azure

Aby uzyskać więcej informacji na temat używania tagów platformy Azure, zobacz Używanie tagów platformy Azure w usłudze Azure Kubernetes Service (AKS).

Statyczna aprowizacja woluminu

Ta sekcja zawiera wskazówki dla administratorów klastra, którzy chcą utworzyć co najmniej jeden wolumin trwały zawierający szczegóły istniejącego udziału usługi Azure Files do użycia z obciążeniem.

Statyczne parametry aprowizacji dla elementu PersistentVolume

Poniższa tabela zawiera parametry, których można użyć do zdefiniowania elementu PersistentVolume.

Nazwisko Znaczenie Dostępna wartość Obowiązkowy Domyślna wartość
volumeAttributes.resourceGroup Określ nazwę grupy zasobów platformy Azure. myResourceGroup Nie. Jeśli jest pusty, sterownik używa tej samej nazwy grupy zasobów co bieżący klaster.
volumeAttributes.storageAccount Określ istniejącą nazwę konta usługi Azure Storage. storageAccountName Tak
volumeAttributes.shareName Określ nazwę udziału plików platformy Azure. fileShareName Tak
volumeAttributes.folderName Określ nazwę folderu w udziale plików platformy Azure. folderName Nie. Jeśli nazwa folderu nie istnieje w udziale plików, instalacja zakończy się niepowodzeniem.
volumeAttributes.protocol Określ protokół udziału plików. smb, nfs Nie. smb
volumeAttributes.server Określanie adresu serwera konta usługi Azure Storage Istniejący adres serwera, na przykład accountname.privatelink.file.core.windows.net. Nie. Jeśli jest pusty, sterownik używa domyślnego accountname.file.core.windows.net lub innego adresu konta suwerennej chmury.
--- Następujące parametry dotyczą tylko protokołu SMB --- --- ---
volumeAttributes.secretName Określ nazwę wpisu tajnego, która przechowuje nazwę i klucz konta magazynu. Nie.
volumeAttributes.secretNamespace Określ przestrzeń nazw wpisu tajnego. default,kube-system itp. Nie. Przestrzeń nazw PVC (csi.storage.k8s.io/pvc/namespace)
nodeStageSecretRef.name Określ nazwę wpisu tajnego, która przechowuje nazwę i klucz konta magazynu. Istniejąca nazwa wpisu tajnego. Nie. Jeśli jest pusty, sterownik używa tożsamości kubelet do pobrania klucza konta.
nodeStageSecretRef.namespace Określ przestrzeń nazw wpisu tajnego. Przestrzeń nazw platformy Kubernetes Nie.
--- Następujące parametry dotyczą tylko protokołu NFS --- --- ---
volumeAttributes.fsGroupChangePolicy Wskazuje, jak sterownik zmienia własność woluminu. Zasobnik securityContext.fsGroupChangePolicy jest ignorowany. OnRootMismatch (ustawienie domyślne), Always, None Nie. OnRootMismatch
volumeAttributes.mountPermissions Określ zainstalowane uprawnienia folderu. Wartość domyślna to 0777. Nie.

Tworzenie udziału plików platformy Azure

Aby można było użyć udziału plików usługi Azure Files jako woluminu Kubernetes, musisz utworzyć konto usługi Azure Storage i udział plików.

  1. Pobierz nazwę grupy zasobów przy użyciu az aks show polecenia z parametrem --query nodeResourceGroup .

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

    Dane wyjściowe polecenia przypominają następujący przykład:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. Utwórz konto magazynu przy użyciu az storage account create polecenia z parametrem --sku . Następujące polecenie tworzy konto magazynu przy użyciu Standard_LRS jednostki SKU. Pamiętaj, aby zastąpić następujące symbole zastępcze:

    • myAKSStorageAccount z nazwą konta magazynu
    • nodeResourceGroupName z nazwą grupy zasobów, w której znajdują się węzły klastra usługi AKS
    • location z nazwą regionu, w którym ma zostać utworzony zasób. Powinien on być tym samym regionem co węzły klastra usługi AKS.
    az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
    
  3. Wyeksportuj parametry połączenia jako zmienną środowiskową przy użyciu następującego polecenia, które służy do tworzenia udziału plików.

    export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
    
  4. Utwórz udział plików przy użyciu az storage share create polecenia . Pamiętaj, aby zastąpić shareName ciąg nazwą udziału.

    az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
    
  5. Wyeksportuj klucz konta magazynu jako zmienną środowiskową przy użyciu następującego polecenia.

    STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
    
  6. Echo nazwy i klucza konta magazynu przy użyciu następującego polecenia. Skopiuj te informacje, ponieważ te wartości są potrzebne podczas tworzenia woluminu Kubernetes.

    echo Storage account key: $STORAGE_KEY
    

Tworzenie wpisu tajnego platformy Kubernetes

Platforma Kubernetes potrzebuje poświadczeń, aby uzyskać dostęp do udziału plików utworzonego w poprzednim kroku. Te poświadczenia są przechowywane w wpisie tajnym kubernetes, do którego odwołuje się podczas tworzenia zasobnika Kubernetes.

  1. Utwórz wpis tajny przy użyciu kubectl create secret polecenia . Poniższy przykład tworzy wpis tajny o nazwie azure-secret i wypełnia nazwę azurestorageaccountname i azurestorageaccountkey z poprzedniego kroku. Aby użyć istniejącego konta usługi Azure Storage, podaj nazwę konta i klucz.

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

Instalowanie udziału plików jako woluminu trwałego

  1. Utwórz nowy plik o nazwie azurefiles-pv.yaml i skopiuj w poniższej zawartości. W obszarze csi, zaktualizuj volumeHandleresourceGroup, i shareName. W przypadku opcji instalacji wartość domyślna i fileMode dirMode to 0777.

    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:
          resourceGroup: resourceGroupName  # optional, only set this when storage account is not in the same resource group as node
          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. Utwórz wolumin trwały przy użyciu kubectl create polecenia .

    kubectl create -f azurefiles-pv.yaml
    
  3. Utwórz nowy plik o nazwie azurefiles-mount-options-pvc.yaml i skopiuj następującą zawartość.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurefile
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: azurefile-csi
      volumeName: azurefile
      resources:
        requests:
          storage: 5Gi
    
  4. Utwórz element PersistentVolumeClaim przy użyciu kubectl apply polecenia .

    kubectl apply -f azurefiles-mount-options-pvc.yaml
    
  5. Sprawdź, czy element PersistentVolumeClaim został utworzony i powiązany z elementem kubectl get PersistentVolume przy użyciu polecenia .

    kubectl get pvc azurefile
    

    Dane wyjściowe polecenia przypominają następujący przykład:

    NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    azurefile   Bound    azurefile   5Gi        RWX            azurefile      5s
    
  6. Zaktualizuj specyfikację kontenera, aby odwołać się do elementu PersistentVolumeClaim i zasobnika w pliku YAML. Na przykład:

    ...
      volumes:
      - name: azure
        persistentVolumeClaim:
          claimName: azurefile
    
  7. Nie można zaktualizować specyfikacji zasobnika, dlatego usuń zasobnik przy użyciu kubectl delete polecenia i utwórz go ponownie za pomocą kubectl apply polecenia .

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

Instalowanie udziału plików jako woluminu wbudowanego

Uwaga

Aby uniknąć problemu z wydajnością, zalecamy użycie woluminu trwałego zamiast woluminu wbudowanego, gdy wiele zasobników uzyskuje dostęp do tego samego udziału plików. Wolumin wbudowany może uzyskiwać dostęp tylko do wpisów tajnych w tej samej przestrzeni nazw co zasobnik. Aby określić inną przestrzeń nazw wpisów tajnych, użyj woluminu trwałego.

Aby zainstalować udział plików usługi Azure Files w zasobniku, należy skonfigurować wolumin w specyfikacji kontenera.

  1. Utwórz nowy plik o nazwie azure-files-pod.yaml i skopiuj w poniższej zawartości. Jeśli zmieniono nazwę udziału plików lub nazwę wpisu tajnego, zaktualizuj elementy shareName i secretName. Można również zaktualizować element mountPath, czyli ścieżkę, w której znajduje się udział Pliki zainstalowany w zasobniku. W przypadku kontenerów systemu Windows Server określ konwencję mountPath ścieżki systemu Windows, taką jak "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
  1. Utwórz zasobnik przy użyciu kubectl apply polecenia .

    kubectl apply -f azure-files-pod.yaml
    

    Masz teraz uruchomiony zasobnik z udziałem plików usługi Azure Files zainstalowanym w folderze /mnt/azure. Możesz sprawdzić, czy udział został pomyślnie zainstalowany przy użyciu kubectl describe polecenia .

    kubectl describe pod mypod
    

Następne kroki

Aby uzyskać informacje o parametrach sterownika CSI usługi Azure Files, zobacz parametry sterownika CSI.

Aby uzyskać informacje o skojarzonych najlepszych rozwiązaniach, zobacz Najlepsze rozwiązania dotyczące magazynu i tworzenia kopii zapasowych w usłudze AKS.