Azure Kubernetes Service'te (AKS) Azure Dosyalar ile birim oluşturma ve kullanma

Kalıcı birim, Kubernetes podlarıyla kullanılmak üzere sağlanan bir depolama parçasını temsil eder. Kalıcı bir birimi bir veya birden çok pod ile kullanabilirsiniz ve bu birim dinamik veya statik olarak sağlanabilir. Birden çok pod aynı depolama birimine eş zamanlı erişime ihtiyaç duyuyorsa, Azure Dosyalar kullanarak Sunucu İleti Bloğu (SMB) protokolunu kullanarak bağlanabilirsiniz. Bu makalede, Bir Azure Kubernetes Service (AKS) kümesinde birden çok pod tarafından kullanılmak üzere dinamik olarak bir Azure dosya paylaşımının nasıl oluşturulacağı gösterilmektedir.

Bu makalede aşağıdaki işlemler hakkında bilgi edinirsiniz:

  • Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü yükleyerek ve bir poda eklemek için dinamik olarak bir veya daha fazla Azure dosya paylaşımı oluşturarak dinamik kalıcı birim (PV) ile çalışın.
  • Bir veya daha fazla Azure dosya paylaşımı oluşturarak statik bir PV ile çalışın veya var olan bir dosya ile pod'a ekleyin.

Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için Depolama seçenekleri.

Başlamadan önce

  • Bir Azure depolama hesabına ihtiyacınız vardır.
  • Azure CLI sürüm 2.0.59 veya üzerinin yüklü ve yapılandırılmış olduğundan emin olun. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
  • Standart ve premium dosya paylaşımları arasında seçim yaparken, Azure Dosyalar üzerinde çalıştırmayı planladığınız beklenen kullanım deseninin sağlama modelini ve gereksinimlerini anlamanız önemlidir. Daha fazla bilgi için bkz. Kullanım desenlerine göre Azure Dosyalar performans katmanı seçme.

Birimi dinamik olarak sağlama

Bu bölüm, Azure Dosyalar bir veya daha fazla paylaşımın ayrıntılarını içeren bir veya daha fazla kalıcı birim sağlamak isteyen küme yöneticileri için rehberlik sağlar. Kalıcı birim talebi (PVC), Azure Dosyalar dosya paylaşımını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır.

Dinamik PersistentVolumes için sınıf parametrelerini Depolama

Aşağıdaki tabloda, PersistentVolumeClaim'iniz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreler yer alır.

Veri Akışı Adı Anlamı Kullanılabilir Değer Zorunlu Default value
accountAccessTier Depolama hesabı için erişim katmanı Standart hesap veya öğesini, Hot Premium hesabı ise yalnızca öğesini seçebilirPremium.Cool Hayır Boş. Farklı depolama hesabı türleri için varsayılan ayarı kullanın.
accountQuota Bir hesabın kotasını sınırlar. GB (varsayılan olarak 102400 GB) cinsinden maksimum kota belirtebilirsiniz. Hesap belirtilen kotayı aşarsa, sürücü hesabı seçmeyi atlar. Hayır 102400
allowBlobPublicAccess Sürücü tarafından oluşturulan depolama hesabı için tüm bloblara veya kapsayıcılara genel erişim izni verme veya erişimi reddetme. true veya false Hayır false
disableDeleteRetentionPolicy Sürücü tarafından oluşturulan depolama hesabı için DeleteRetentionPolicy'nin devre dışı bırakılıp devre dışı bırakılmayacağını belirtin. true veya false Hayır false
enableLargeFileShares Büyük dosya paylaşımları etkin bir depolama hesabı kullanılıp kullanılmayacağını belirtin. Bu bayrak olarak ayarlanırsa true ve büyük dosya paylaşımları etkinleştirilmiş bir depolama hesabı yoksa, büyük dosya paylaşımları etkinleştirilmiş yeni bir depolama hesabı oluşturulur. Premium sku ile oluşturulan depolama hesaplarının seçeneği varsayılan olarak etkinleştirildiğinden bu bayrak Standart sku largeFileShares ile kullanılmalıdır. true veya false Hayır yanlış
Klasöradı Azure dosya paylaşımında klasör adını belirtin. Azure dosya paylaşımında var olan klasör adı. Hayır Dosya paylaşımında klasör adı yoksa bağlama başarısız olur.
getLatestAccount Oluşturma zamanına göre en son hesap anahtarının alınıp alınmayacağını belirler. Bu sürücü varsayılan olarak ilk anahtarı alır. true veya false Hayır false
konum Azure depolama hesabının Azure bölgesini belirtin. Örneğin, eastus. Hayır Sürücü boşsa geçerli AKS kümesiyle aynı konum adını kullanır.
matchTags Sürücü uygun bir depolama hesabı bulmaya çalıştığında etiketleri eşleştirin. true veya false Hayır false
networkEndpointType Sürücü tarafından oluşturulan depolama hesabı için ağ uç noktası türünü belirtin. Belirtilirse privateEndpoint , depolama hesabı için özel bir uç nokta oluşturulur. Diğer durumlarda, varsayılan olarak bir hizmet uç noktası oluşturulur. "",privateEndpoint Hayır ""
Protokolü Dosya paylaşımı protokollerini belirtin. smb, nfs Hayır smb
requireInfraEncryption Hizmetin, sürücü tarafından oluşturulan depolama hesabı için bekleyen veriler için platform tarafından yönetilen anahtarlarla ikincil bir şifreleme katmanı uygulayıp uygulamayacağını belirtin. true veya false Hayır false
resourceGroup Azure Diskleri için kaynak grubunu belirtin. Mevcut kaynak grubu adı Hayır Sürücü boşsa geçerli AKS kümesiyle aynı kaynak grubu adını kullanır.
selectRandomMatchingAccount Eşleşen bir hesabın rastgele seçilip seçileceğini belirler. Varsayılan olarak, sürücü her zaman ilk eşleşen hesabı alfabetik sırada seçer (Not: Bu sürücü hesap arama önbelleğini kullanır ve bu da dosya oluşturma işleminin birden çok hesap arasında eşit olmayan bir şekilde dağıtılmasına neden olur). true veya false Hayır false
sunucu Azure depolama hesabı sunucu adresini belirtin. Var olan sunucu adresi, örneğin accountname.privatelink.file.core.windows.net. Hayır Sürücü boşsa varsayılan accountname.file.core.windows.net veya diğer bağımsız bulut hesabı adresini kullanır.
shareAccessTier Dosya paylaşımı için erişim katmanı Genel amaçlı v2 hesabı (varsayılan), Hotve Coolarasında TransactionOptimized seçim yapabilir. Yalnızca dosya paylaşımları için premium depolama hesabı türü. Hayır Boş. Farklı depolama hesabı türleri için varsayılan ayarı kullanın.
Paylaşımadı Azure dosya paylaşımı adını belirtin. Mevcut veya yeni Azure dosya paylaşımı adı. Hayır Sürücü boşsa bir Azure dosya paylaşımı adı oluşturur.
shareNamePrefix Sürücü tarafından oluşturulan Azure dosya paylaşımı adı ön ekini belirtin. Paylaşım adı yalnızca küçük harf, sayı, kısa çizgi içerebilir ve uzunluk 21 karakterden az olmalıdır. Hayır
skuName Azure Dosyalar depolama hesabı türü (diğer ad: storageAccountType) Standard_LRS, , Standard_ZRSStandard_GRS, Standard_RAGRS, Standard_RAGZRS,Premium_LRS,Premium_ZRS Hayır StandardSSD_LRS
Premium hesap türü için en düşük dosya paylaşımı boyutu 100 GB'tır.
ZRS hesap türü sınırlı bölgelerde desteklenir.
NFS dosya paylaşımı yalnızca Premium hesap türünü destekler.
storageEndpointSuffix Azure depolama uç noktası son ekini belirtin. core.windows.net, core.chinacloudapi.cnvb. Hayır Sürücü boşsa, bulut ortamına göre varsayılan depolama uç noktası sonekini kullanır. Örneğin, core.windows.net.
tags Etiketler yeni depolama hesabında oluşturulur. Etiket biçimi: 'foo=aaa,bar=bbb' Hayır ""
--- Aşağıdaki parametreler yalnızca SMB protokolü içindir --- ---
subscriptionID Azure dosya paylaşımının oluşturulduğu Azure abonelik kimliğini belirtin. Azure abonelik kimliği Hayır Boş değilse sağlanmalıdır resourceGroup .
storeAccountKey Hesap anahtarının Kubernetes gizli dizisine depolanıp depolamayacağını belirtin. true veya false
false , sürücünün hesap anahtarını almak için kubelet kimliğini kullandığı anlamına gelir.
Hayır true
secretName Hesap anahtarını depolamak için gizli dizi adını belirtin. Hayır
secretNamespace Hesap anahtarını depolamak için gizli dizi ad alanını belirtin.

Not:
Belirtilmezse secretNamespace , gizli dizi pod ile aynı ad alanında oluşturulur.
default,kube-system vb. Hayır PVC ad alanı, örneğin csi.storage.k8s.io/pvc/namespace
useDataPlaneAPI Veri düzlemi API'sinin neredeyse hiç sınırı olmadığından, depolama hesabında güvenlik duvarı veya sanal ağ ayarları olduğunda başarısız olacağından SRP API azaltma sorununu çözebilecek dosya paylaşımı oluşturma/silme/yeniden boyutlandırma için veri düzlemi API'sinin kullanılıp kullanılmayacağını belirtin. true veya false Hayır false
--- Aşağıdaki parametreler yalnızca NFS protokolü içindir --- ---
mountPermissions Bağlı klasör izinleri. Varsayılan değer: 0777. olarak ayarlanırsa0, sürücü bağlamadan sonra çalışmaz chmod 0777 Hayır
rootSquashType Paylaşımda kök sıkıştırma davranışını belirtin. Varsayılan değer: NoRootSquash AllSquash, NoRootSquash, RootSquash Hayır
--- Aşağıdaki parametreler yalnızca sanal ağ ayarı içindir. Örneğin, NFS, özel bitiş noktası --- ---
fsGroupChangePolicy Sürücünün birimin sahipliğini nasıl değiştirdiğini gösterir. Pod securityContext.fsGroupChangePolicy yoksayılır. OnRootMismatch (varsayılan), Always, None Hayır OnRootMismatch
subnetName Alt ağ adı Aracı düğümünün mevcut alt ağ adı. Hayır Sürücü boşsa Azure bulut yapılandırma dosyasındaki subnetName değerini kullanır.
vnetName Sanal ağın adı Mevcut sanal ağ adı. Hayır Sürücü boşsa Azure bulut yapılandırma dosyasındaki vnetName değerini kullanır.
vnetResourceGroup Sanal ağın tanımlandığı sanal ağ kaynak grubunu belirtin. Mevcut kaynak grubu adı. Hayır Sürücü boşsa Azure bulut yapılandırma dosyasındaki vnetResourceGroup değerini kullanır.

Depolama sınıfı oluşturma

Depolama sınıfları, Azure dosya paylaşımının nasıl oluşturulacağını tanımlar. Azure Dosyalar dosya paylaşımını tutmak üzere depolama sınıfıyla kullanılmak üzere düğüm kaynak grubunda otomatik olarak bir depolama hesabı oluşturulur. için skuNameaşağıdaki Azure depolama yedekliliği SKU'larını seçin:

  • Standard_LRS: Standart yerel olarak yedekli depolama (LRS)
  • Standard_GRS: Standart coğrafi olarak yedekli depolama (GRS)
  • Standard_ZRS: Standart alanlar arası yedekli depolama (ZRS)
  • Standard_RAGRS: Standart okuma erişimli coğrafi olarak yedekli depolama (RA-GRS)
  • Premium_LRS: Premium yerel olarak yedekli depolama (LRS)
  • Premium_ZRS: pPremium zone yedekli depolama (ZRS)

Not

En düşük premium dosya paylaşımı 100 GB'tır.

Azure Dosyalar için Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz. Kubernetes Depolama Sınıfları.

  1. Adlı azure-file-sc.yaml bir dosya oluşturun ve aşağıdaki örnek bildirimde kopyalayın. hakkında mountOptionsdaha fazla bilgi için Bağlama seçenekleri bölümüne bakın.

    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
    parameters:
      skuName: Premium_LRS
    
  2. komutunu kullanarak depolama sınıfını kubectl apply oluşturun.

    kubectl apply -f azure-file-sc.yaml
    

Kalıcı birim talebi oluşturma

Kalıcı birim talebi (PVC), bir Azure dosya paylaşımını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır. ReadWriteMany erişimiyle 100 GB boyutunda kalıcı bir birim talebi oluşturmak için aşağıdaki YAML'yi kullanabilirsiniz. Erişim modları hakkında daha fazla bilgi için bkz . Kubernetes kalıcı birimi.

  1. adlı azure-file-pvc.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. öğesinin storageClassName önceki adımda oluşturduğunuz depolama sınıfıyla eşleştiğinden emin olun.

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

    Not

    Depolama sınıfınız için SKU kullanıyorsanız Premium_LRS için en düşük değer storage olmalıdır 100Gi.

  2. komutunu kullanarak kubectl apply kalıcı birim talebi oluşturun.

    kubectl apply -f azure-file-pvc.yaml
    

    Tamamlandıktan sonra dosya paylaşımı oluşturulur. Bağlantı bilgilerini ve kimlik bilgilerini içeren bir Kubernetes gizli dizisi de oluşturulur. PVC'nin kubectl get durumunu görüntülemek için komutunu kullanabilirsiniz:

    kubectl get pvc my-azurefile
    

    Komutun çıkışı aşağıdaki örneğe benzer:

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

Kalıcı birimi kullanma

Aşağıdaki YAML, /mnt/azure yolundaki Azure Dosyalar dosya paylaşımını bağlamak için my-azurefile kalıcı birim talebi kullanan bir pod oluşturur. Windows Server kapsayıcıları için, 'D:' gibi Windows yol kuralını kullanarak bir mountPath belirtin.

  1. adlı azure-pvc-files.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. Öğesinin claimName önceki adımda oluşturduğunuz PVC ile eşleştiğinden emin olun.

    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. komutunu kullanarak pod oluşturun kubectl apply .

    kubectl apply -f azure-pvc-files.yaml
    

    Artık Azure Dosyalar dosya paylaşımınızın /mnt/azure dizinine bağlı olduğu çalışan bir podunuz var. Bu yapılandırma, komutunu kullanarak kubectl describe podunuzu incelerken görülebilir. Aşağıdaki daraltılmış örnek çıktı, kapsayıcıya bağlanan birimi gösterir.

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

Bağlama seçenekleri

ve için varsayılan değer, Kubernetes sürüm 1.13.0 ve üzeri için 0777'dir.fileModedirMode Kalıcı birimi bir depolama sınıfıyla dinamik olarak oluşturuyorsanız, depolama sınıfı nesnesinde bağlama seçeneklerini belirtebilirsiniz. Daha fazla bilgi için bkz . Bağlama seçenekleri. Aşağıdaki örnek 0777'yi ayarlar:

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
parameters:
  skuName: Premium_LRS

Azure etiketlerini kullanma

Azure etiketlerini kullanma hakkında daha fazla bilgi için bkz . Azure Kubernetes Service'te (AKS) Azure etiketlerini kullanma.

Birimi statik olarak sağlama

Bu bölüm, bir iş yüküyle kullanmak üzere mevcut bir Azure Dosyalar paylaşımının ayrıntılarını içeren bir veya daha fazla kalıcı birim oluşturmak isteyen küme yöneticileri için rehberlik sağlar.

PersistentVolume için statik sağlama parametreleri

Aşağıdaki tablo, PersistentVolume tanımlamak için kullanabileceğiniz parametreleri içerir.

Veri Akışı Adı Anlamı Kullanılabilir Değer Zorunlu Default value
volumeAttributes.resourceGroup Bir Azure kaynak grubu adı belirtin. myResourceGroup Hayır Sürücü boşsa geçerli kümeyle aynı kaynak grubu adını kullanır.
volumeAttributes.storageAccount Mevcut bir Azure depolama hesabı adı belirtin. storageAccountName Yes
volumeAttributes.shareName Bir Azure dosya paylaşımı adı belirtin. fileShareName Yes
volumeAttributes.folderName Azure dosya paylaşımında bir klasör adı belirtin. Klasöradı Hayır Dosya paylaşımında klasör adı yoksa bağlama başarısız olur.
volumeAttributes.protocol Dosya paylaşımı protokollerini belirtin. smb, nfs Hayır smb
volumeAttributes.server Azure depolama hesabı sunucu adresini belirtme Var olan sunucu adresi, örneğin accountname.privatelink.file.core.windows.net. Hayır Sürücü boşsa varsayılan accountname.file.core.windows.net veya diğer bağımsız bulut hesabı adresini kullanır.
--- Aşağıdaki parametreler yalnızca SMB protokolü içindir --- --- ---
volumeAttributes.secretName Depolama hesabı adını ve anahtarını depolayan bir gizli dizi adı belirtin. Hayır
volumeAttributes.secretNamespace Gizli bir ad alanı belirtin. default,kube-system vb. Hayır PVC ad alanı (csi.storage.k8s.io/pvc/namespace)
nodeStageSecretRef.name Depolama hesabı adını ve anahtarını depolayan bir gizli dizi adı belirtin. Mevcut gizli dizi adı Yes
nodeStageSecretRef.namespace Gizli bir ad alanı belirtin. Kubernetes ad alanı Yes
--- Aşağıdaki parametreler yalnızca NFS protokolü içindir --- --- ---
volumeAttributes.fsGroupChangePolicy Sürücünün birimin sahipliğini nasıl değiştirdiğini gösterir. Pod securityContext.fsGroupChangePolicy yoksayılır. OnRootMismatch (varsayılan), Always, None Hayır OnRootMismatch
volumeAttributes.mountPermissions Bağlı klasör izinlerini belirtin. Varsayılan değer: 0777 Hayır

Azure dosya paylaşımı oluşturma

Azure Dosyalar dosya paylaşımını Kubernetes birimi olarak kullanabilmeniz için önce bir Azure Depolama hesabı ve dosya paylaşımı oluşturmanız gerekir.

  1. parametresiyle --query nodeResourceGroup komutunu kullanarak az aks show kaynak grubu adını alın.

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

    Komutun çıkışı aşağıdaki örneğe benzer:

    MC_myResourceGroup_myAKSCluster_eastus
    
  2. parametresiyle az storage account create--sku komutunu kullanarak bir depolama hesabı oluşturun. Aşağıdaki komut, SKU kullanarak Standard_LRS bir depolama hesabı oluşturur. Aşağıdaki yer tutucuları değiştirdiğinden emin olun:

    • myAKSStorageAccount depolama hesabının adıyla
    • nodeResourceGroupName aks kümesi düğümlerinin barındırılıyor olduğu kaynak grubunun adıyla
    • location içinde kaynağın oluşturulacağı bölgenin adıyla birlikte. AKS küme düğümleri ile aynı bölge olmalıdır.
    az storage account create -n myAKSStorageAccount -g nodeResourceGroupName -l location --sku Standard_LRS
    
  3. Dosya paylaşımını oluşturmak için kullandığınız aşağıdaki komutu kullanarak bağlantı dizesi bir ortam değişkeni olarak dışarı aktarın.

    export AZURE_STORAGE_CONNECTION_STRING=$(az storage account show-connection-string -n storageAccountName -g resourceGroupName -o tsv)
    
  4. komutunu kullanarak dosya paylaşımını az storage share create oluşturun. değerini paylaşım adınız ile değiştirdiğinden shareName emin olun.

    az storage share create -n shareName --connection-string $AZURE_STORAGE_CONNECTION_STRING
    
  5. Aşağıdaki komutu kullanarak depolama hesabı anahtarını ortam değişkeni olarak dışarı aktarın.

    STORAGE_KEY=$(az storage account keys list --resource-group nodeResourceGroupName --account-name myAKSStorageAccount --query "[0].value" -o tsv)
    
  6. Aşağıdaki komutu kullanarak depolama hesabı adını ve anahtarını yankılar. Kubernetes birimini oluştururken bu değerlere ihtiyacınız olduğu için bu bilgileri kopyalayın.

    echo Storage account key: $STORAGE_KEY
    

Kubernetes gizli dizisi oluşturma

Kubernetes'in önceki adımda oluşturulan dosya paylaşımına erişmek için kimlik bilgilerine ihtiyacı vardır. Bu kimlik bilgileri, Kubernetes podunu oluşturduğunuzda başvurulan bir Kubernetes gizli dizisinde depolanır.

  1. komutunu kullanarak gizli diziyi kubectl create secret oluşturun. Aşağıdaki örnek azure-secret adlı bir gizli dizi oluşturur ve önceki adımdaki azurestorageaccountname ve azurestorageaccountkey değerlerini doldurur. Mevcut bir Azure depolama hesabını kullanmak için hesap adını ve anahtarını sağlayın.

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

Dosya paylaşımını kalıcı birim olarak bağlama

  1. adlı azurefiles-pv.yaml yeni bir dosya oluşturun ve aşağıdaki içeriklere kopyalayın. altında csi, , volumeHandleve shareNamegüncelleştirinresourceGroup. Bağlama seçenekleri için ve için varsayılan değer 0777'dir.fileModedirMode

    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: unique-volumeid  # 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
    
  2. komutunu kullanarak kubectl create kalıcı birimi oluşturun.

    kubectl create -f azurefiles-pv.yaml
    
  3. azurefiles-mount-options-pvc.yaml adlı yeni bir dosya oluşturun ve aşağıdaki içeriği kopyalayın.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurefile
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: azurefile-csi
      volumeName: azurefile
      resources:
        requests:
          storage: 5Gi
    
  4. komutunu kullanarak PersistentVolumeClaim'i kubectl apply oluşturun.

    kubectl apply -f azurefiles-mount-options-pvc.yaml
    
  5. komutunu kullanarak PersistentVolumeClaim'inizin oluşturulduğunu ve PersistentVolume'a kubectl get bağlı olduğunu doğrulayın.

    kubectl get pvc azurefile
    

    Komutun çıkışı aşağıdaki örneğe benzer:

    NAME        STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    azurefile   Bound    azurefile   5Gi        RWX            azurefile      5s
    
  6. Kapsayıcı belirtiminizi, PersistentVolumeClaim'inize ve YAML dosyasındaki podunuza başvuracak şekilde güncelleştirin. Örneğin:

    ...
      volumes:
      - name: azure
        persistentVolumeClaim:
          claimName: azurefile
    
  7. Pod belirtimi yerinde güncelleştirilemez, bu nedenle komutunu kullanarak podu kubectl delete silin ve komutunu kullanarak kubectl apply yeniden oluşturun.

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

Dosya paylaşımını satır içi birim olarak bağlama

Not

Performans sorununu önlemek için, aynı dosya paylaşımına çok sayıda pod erişirken satır içi birim yerine kalıcı birim kullanmanızı öneririz. Satır içi birim yalnızca pod ile aynı ad alanında yer alan gizli dizilere erişebilir. Farklı bir gizli ad alanı belirtmek için kalıcı bir birim kullanın.

Azure Dosyalar dosya paylaşımını podunuza bağlamak için kapsayıcı belirtiminde birimi yapılandırırsınız.

  1. adlı azure-files-pod.yaml yeni bir dosya oluşturun ve aşağıdaki içeriklere kopyalayın. Dosya paylaşımının veya gizli dizi adının adını değiştirdiyseniz ve secretName'yi güncelleştirinshareName. Dosya paylaşımının pod'a mountPathbağlandığı yol olan öğesini de güncelleştirebilirsiniz. Windows Server kapsayıcıları için, 'D:' gibi Windows yol kuralını kullanarak bir mountPath belirtin.
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'  # optional
  1. komutunu kullanarak pod oluşturun kubectl apply .

    kubectl apply -f azure-files-pod.yaml
    

    Artık /mnt/azure konumunda bağlı Azure Dosyalar dosya paylaşımına sahip çalışan bir pod'nuz var. komutunu kullanarak paylaşımın başarıyla bağlandığını kubectl describe doğrulayabilirsiniz.

    kubectl describe pod mypod
    

Sonraki adımlar

Azure Dosyalar CSI sürücü parametreleri için bkz. CSI sürücü parametreleri.

İlişkili en iyi yöntemler için bkz . AKS'de depolama ve yedeklemeler için en iyi yöntemler.