Aracılığıyla paylaş


Azure depolama CSI sürücüsü ve hacim sağlama

Azure Blob depolama Kapsayıcı Depolama Arabirimi (CSI) sürücüsü, Azure Blob depolama yaşam döngüsünü yönetmek için Azure Kubernetes Service (AKS) tarafından kullanılan CSI belirtimi uyumlu bir sürücüdür. CSI, Kubernetes'te konteynerleştirilmiş iş yüklerine rastgele blok ve dosya depolama sistemlerini sunan bir standarttır.

AKS, CSI'yi benimseyerek ve kullanarak artık Kubernetes'te yeni depolama sistemlerini kullanıma sunma veya mevcut depolama sistemlerini iyileştirme amacıyla eklentiler yazabilir, dağıtabilir ve yineleyebilir. AKS'de CSI sürücülerinin kullanılması, çekirdek Kubernetes koduna dokunmaktan ve yayın döngülerini beklemekten kaçınıyor.

Azure Blob depolamayı bir kapsayıcıya veya poda dosya sistemi olarak bağladığınızda, blob depolamayı çok büyük miktarlarda yapılandırılmamış veri çalıştıran birçok uygulamayla kullanmanıza olanak tanır. Örneğin:

  • Günlük dosyası verileri
  • Görüntüler, belgeler ve video veya ses akışı
  • Olağanüstü durum kurtarma verileri

Uygulamalar, BlobFuse veya Ağ Dosya Sistemi (NFS) 3.0 protokollerini kullanarak Azure Blob depolamada depolanan verilere erişiyor. Azure Blob depolama CSI sürücüsünün kullanıma sunulmasından önce tek seçenek, AKS üzerinde çalışan uygulamanızdan Blob depolamaya erişmek için desteklenmeyen bir sürücüyü el ile yüklemekti. AKS'de Azure Blob depolama CSI sürücüsü etkinleştirildiğinde iki yerleşik depolama sınıfı vardır:

  • azureblob-fuse-premium
  • azureblob-nfs-premium

AKS kümesini CSI sürücüleri desteği ile oluşturmak için AKS'te CSI sürücüleri konusuna bakın. NFS protokolünün kullanıldığı Azure depolama türlerinin her biri arasındaki erişim farklılıkları hakkında daha fazla bilgi edinmek için bkz. NFS ile Azure Dosyalar, Blob Depolama ve Azure NetApp Files erişimini karşılaştırma.

Azure Diskler Kapsayıcı Depolama Arabirimi (CSI) sürücüsü, Azure Disk'in yaşam döngüsünü yönetmek için Azure Kubernetes Service (AKS) tarafından kullanılan CSI belirtimi uyumlu bir sürücüdür.

CSI, Kubernetes'te konteynerleştirilmiş iş yüklerine rastgele blok ve dosya depolama sistemlerini sunan bir standarttır. AKS, CSI'yi benimseyerek ve kullanarak artık Kubernetes'te yeni depolama sistemlerini kullanıma sunma veya mevcut depolama sistemlerini iyileştirme amacıyla eklentiler yazabilir, dağıtabilir ve yineleyebilir. AKS'de CSI sürücülerinin kullanılması, çekirdek Kubernetes koduna dokunmaktan ve yayın döngülerini beklemekten kaçınıyor. CSI sürücü desteğine sahip bir AKS kümesi oluşturmak için bkz. AKS'de CSI sürücüsünü etkinleştirme.

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

Uyarı

Ağaç içi sürücüler , çekirdek Kubernetes kodunun parçası olan geçerli depolama sürücülerine ve eklentiler olan yeni CSI sürücülerine karşılık gelir.

Azure Dosyalar Kapsayıcı Depolama Arabirimi (CSI) sürücüsü, Azure Kubernetes Service (AKS) tarafından Azure dosya paylaşımlarının yaşam döngüsünü yönetmek için kullanılan CSI belirtimi uyumlu bir sürücüdür. CSI, Kubernetes'te konteynerleştirilmiş iş yüklerine rastgele blok ve dosya depolama sistemlerini sunan bir standarttır.

AKS, CSI'yi benimseyerek ve kullanarak artık Kubernetes'te yeni depolama sistemlerini kullanıma sunma veya mevcut depolama sistemlerini iyileştirme amacıyla eklentiler yazabilir, dağıtabilir ve yineleyebilir. AKS'de CSI sürücülerinin kullanılması, çekirdek Kubernetes koduna dokunmaktan ve yayın döngülerini beklemekten kaçınıyor.

CSI sürücüleri desteğine sahip bir AKS kümesi oluşturmak için bkz. AKS'de CSI sürücülerini etkinleştirme.

Uyarı

Ağaç içi sürücüler , çekirdek Kubernetes kodunun parçası olan geçerli depolama sürücülerine ve eklentiler olan yeni CSI sürücülerine karşılık gelir.

Azure CSI sürücü özellikleri

Azure Blob depolama CSI sürücüsü aşağıdaki özellikleri destekler:

  • BlobFuse
  • NFS 3.0 protokolü

Ağaç içi sürücü özelliklerine ek olarak, Azure Disk CSI sürücüsü aşağıdaki özellikleri destekler:

  • Eşzamanlı disk ekleme ve ayırma sırasında performans iyileştirmeleri

    • Ağaç içi sürücüler diskleri seri olarak ekler veya ayırırken, CSI sürücüleri diskleri toplu olarak ekler veya ayırır. Bir düğüme bağlı birden çok disk olduğunda önemli bir gelişme olur.
  • Premium SSD v1 ve v2 desteklenir.

    • PremiumV2_LRSyalnızca önbelleğe alma modunu destekler None
  • Alanlar arası yedekli depolama (ZRS) disk desteği

    • Premium_ZRS, StandardSSD_ZRS disk türleri desteklenir. ZRS diski, disk biriminin belirli bir düğümle aynı bölgede olması kısıtlaması olmaksızın bölge veya bölge dışı bir düğümde zamanlanabilir. Hangi bölgelerin desteklendiği de dahil olmak üzere daha fazla bilgi için bkz. Yönetilen diskler için alanlar arası yedekli depolama.
  • Hacim anlık görüntüsü

  • Hacim klonlama

  • Disk kalıcı birimini kapalı kalma süresi olmadan yeniden boyutlandırma

Uyarı

Kullanılan VM SKU'sunun bağlı olarak, Azure Disk CSI sürücüsünün düğüm başına birim sınırı olabilir. Bazı güçlü VM'ler için (örneğin, 16 çekirdek), düğüm başına sınır 64 birimdir. VM SKU'su başına sınırı belirlemek için, sunulan her VM SKU'su için En fazla veri diski sütununu gözden geçirin. Sunulan VM SKU'larının listesi ve bunların ilgili ayrıntılı kapasite sınırları için bkz . Genel amaçlı sanal makine boyutları.

Önkoşullar

  • Azure CLI sürüm 2.42 veya üzeri yüklü ve yapılandırılmış olmalıdır. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme. Azure CLI aks-preview uzantısını yüklediyseniz, öğesini çağırarak az extension update --name aks-previewuzantıyı en son sürüme güncelleştirdiğinizden emin olun.

  • Kümenizden Azure Blob depolamaya erişmek için CSI Blob Depolama açık kaynak sürücüsünü daha önce yüklediyseniz açık kaynak sürücüyü temizlemek için aşağıdaki adımları gerçekleştirin.

  • AKS kümesi Denetim düzlemi kimliğiniz (AKS kümenizin adı) sanal ağ ve ağ güvenlik grubundaki Katkıda Bulunan rolüne eklenir.

  • BlobFuse bağlama kullanırken [Azure Data Lake Storage 2. Nesil hesabını][azure-datalake-storage-account] (ADLS) desteklemek için aşağıdaki eylemleri gerçekleştirin:

    • Dinamik sağlamada sürücüyü kullanarak bir ADLS hesabı oluşturmak için depolama sınıfı parametrelerinde belirtin isHnsEnabled: "true" .
    • Statik ayırma işlemi sırasında bir ADLS hesabına BlobFuse erişimini etkinleştirmek için kalıcı birimde montaj seçeneğini --use-adls=true olarak belirtin.
    • Hiyerarşik Ad Alanı ile bir depolama hesabını etkinleştirecekseniz, mevcut kalıcı birimler (PV) --use-adls=true bağlama seçeneğiyle yeniden bağlanmalıdır.
  • Varsayılan olarak BlobFuse önbelleği dizinde /mnt bulunur. Sanal makine (VM) SKU'su geçici bir disk sağlıyorsa, /mnt dizin geçici diske bağlanır. VM SKU'su geçici bir disk sağlamazsa, /mnt dizini işletim sistemi diskine bağlanır. --tmp-path= bağlama seçeneği, farklı bir önbellek dizini belirtmek için ayarlanabilir.

Uyarı

Açık kaynak sürücüsünün yüklenmesi sırasında blobfuse-proxy etkin değilse, açık kaynak sürücünün kaldırılması mevcut blobfuse bağlamalarını kesintiye uğratır. Ancak, NFS bağlamaları etkilenmez.

  • Azure Disk CSI sürücüsünün etkinleştirildiği bir AKS kümeniz olmalıdır. CSI sürücüsü, Kubernetes sürüm 1.21 veya üzerini çalıştıran AKS kümelerinde varsayılan olarak etkindir.

  • Azure CLI sürüm 2.37.0 veya üzeri yüklenir ve yapılandırılır. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

  • Komut kubectl satırı aracı yüklenir ve AKS kümenize bağlanacak şekilde yapılandırılır.

  • Azure Disk CSI sürücüsünü (disk.csi.azure.com ) kullanacak şekilde yapılandırılmış bir depolama sınıfı.

  • Azure Disk CSI sürücüsünün düğüm başına birim sınırı vardır. Birim sayısı, düğüm/düğüm havuzunun boyutuna göre değişir. Düğüm başına ayrılabilecek birim sayısını belirlemek için kubectl get komutunu çalıştırın:

    kubectl get CSINode <nodename> -o yaml
    

    Düğüm başına birim sınırı iş yükünüz için bir sorunsa, CSI sürücüleri yerine kalıcı birimler için Azure Container Storage'ı kullanmayı göz önünde bulundurun.

Genel gereksinimler:

  • Azure Dosyalar CSI sürücüsünün etkinleştirildiği bir AKS kümeniz olmalıdır. Azure Dosyalar CSI sürücüsü, Kubernetes sürüm 1.21 veya üzerini çalıştıran AKS kümelerinde varsayılan olarak etkindir.

  • Azure CLI sürüm 2.37.0 veya üzeri yüklenir ve yapılandırılır. Sürümünüzü denetlemek için komutunu çalıştırın az --version. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.

  • Komut kubectl satırı aracı yüklenir ve AKS kümenize bağlanacak şekilde yapılandırılır.

  • Azure Dosyalar CSI sürücüsünü (file.csi.azure.com ) kullanacak şekilde yapılandırılmış bir depolama sınıfı.

  • 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 Kullanım desenlerine göre Azure Dosyalar performans katmanı seçme konusuna bakın.

Ağ Dosya Paylaşımı (NFS) gereksinimleri:

  • AKS kümesi Denetim düzlemi kimliğiniz (AKS küme adınız) VNet ve NetworkSecurityGroup'taKatkıda Bulunan rolüne eklenir.

  • AKS kümenizin hizmet sorumlusu veya yönetilen hizmet kimliği (MSI), depolama hesabına Katkıda Bulunan rolüne eklenmelidir.

Yönetilen Kimlik gereksinimleri:

  • Depolama hesabında kullanıcı tarafından atanan Kubelet kimliğineStorage File Data SMB MI Admin rolünün verildiğine emin olun. Kendi depolama hesabınızı kullanıyorsanız, bu depolama hesabında kullanıcı tarafından atanan Kubelet kimliğine rol atamanız Storage File Data SMB MI Admin gerekir.

  • CSI sürücüsü depolama hesabını oluşturursa, rolü depolama hesabının bulunduğu kaynak grubuna verin Storage File Data SMB MI Admin .

  • Varsayılan yerleşik kullanıcı-atamalı Kubelet kimliğini kullanırsanız, yönetilen düğüm kaynak grubunda zaten gerekli Storage File Data SMB MI Admin role sahiptir.

Uyarı

Azure Dosya CSI sürücüsü yalnızca anahtar tabanlı (NTLM v2) kimlik doğrulaması kullanarak SMB dosya paylaşımlarının bağlanmasına izin verir ve bu nedenle Azure Dosya paylaşımı ayarlarının en yüksek güvenlik profilini desteklemez. Öte yandan, NFS dosya paylaşımlarını bağlamak için anahtar tabanlı kimlik doğrulaması gerekmez.

Yeni veya mevcut aks kümesinde CSI sürücüsünü etkinleştirme

Azure CLI kullanarak, kümedeki podlar tarafından kullanılmak üzere kalıcı bir birim yapılandırmadan önce yeni veya mevcut bir AKS kümesinde Blob depolama CSI sürücüsünü etkinleştirebilirsiniz.

  1. Sürücüyü yeni bir kümede etkinleştirmek için aşağıdaki örnekte gösterildiği gibi parametresini --enable-blob-driver komutuna ekleyinaz aks create:

    az aks create \
        --enable-blob-driver \
        --name myAKSCluster \
        --resource-group myResourceGroup \
        --generate-ssh-keys
    
  2. Sürücüyü mevcut bir kümede etkinleştirmek için aşağıdaki örnekte gösterildiği gibi parametresini --enable-blob-driver komutuna ekleyinaz aks update:

    az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
    

Yüklü bir açık kaynak Blob CSI sürücüsü olmadığını onaylamanız istenir. Onayladıktan sonra bu eylemin tamamlanması birkaç dakika sürebilir. İşlem tamamlandıktan sonra çıkışta kümenizde sürücüyü etkinleştirme durumunu görmeniz gerekir. Aşağıdaki örnek, önceki komutun sonuçlarını gösteren bölüme benzer:

"storageProfile": {
  "blobCsiDriver": {
    "enabled": true
  },
  ...
}

Mevcut AKS kümesinde CSI sürücüsünü devre dışı bırakma

Azure CLI'yı kullanarak, kümeden kalıcı birimi kaldırdıktan sonra var olan bir AKS kümesinde Blob depolama CSI sürücüsünü devre dışı bırakabilirsiniz.

  1. Var olan bir kümede sürücüyü devre dışı bırakmak için aşağıdaki örnekte gösterildiği gibi parametresini --disable-blob-driver komutuna ekleyinaz aks update:

    az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
    

Depolama için kalıcı birim kullanma

Kubernetes, bir veya daha fazla poda depolama kaynağı olarak kalıcı hacim (PV) atar. PV'leri Kubernetes aracılığıyla dinamik olarak veya bir yönetici olarak statik şekilde sağlayabilirsiniz.

Aynı depolama birimine birden çok pod için eşzamanlı erişim gerekiyorsa, NFS veya BlobFuse kullanarak bağlanmak için Azure Blob depolamayı kullanabilirsiniz. Bu makalede, AKS kümesinde birden çok pod tarafından kullanılmak üzere dinamik olarak bir Azure Blob depolama kapsayıcısı oluşturma adımları gösterilmektedir.

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

Bu makalede, AKS kümesindeki tek bir pod tarafından kullanılmak üzere Azure diskli bir PV'nin nasıl dinamik olarak oluşturulacağı gösterilmektedir.

Birden çok pod aynı depolama birimine eş zamanlı erişime ihtiyaç duyuyorsa, Sunucu İleti Bloğu (SMB) veya Ağ Dosya Sistemi (NFS) kullanarak bağlanmak için Azure Dosyalar'ı kullanabilirsiniz. Bu makalede, AKS kümesindeki birden çok pod tarafından kullanılmak üzere dinamik olarak bir Azure Dosyalar paylaşımının nasıl oluşturulacağı gösterilmektedir.

Dinamik olarak sağlanan birim: Kubernetes'in depolama kaynaklarını otomatik olarak oluşturmasını ve yönetmesini istiyorsanız bu yaklaşımı kullanın. İsteğe bağlı ölçeklendirmeye ihtiyacınız olan, kod olarak altyapıyı tercih ettiğiniz ve el ile yapılandırma adımlarını en aza indirmek istediğiniz senaryolar için idealdir.

Statik olarak sağlanan birim: Kullanmak istediğiniz bir Azure Blob depolama hesabınız veya kapsayıcınız varsa bu yöntemi seçin. Depolama kurulumu, erişim ve yaşam döngüsü üzerinde daha fazla denetim sağlar ve mevcut kaynaklara bağlanmanız veya depolamayı birden çok kümede veya iş yükünde yeniden kullanmanız gerektiğinde uygundur.

Bu bölüm, bir iş yükü tarafından kullanılmak üzere Blob depolama 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), bir Azure Blob depolama kapsayıcısını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır.

Sağlanan depolama sınıfıyla Azure Blob depolama kullanarak kalıcı birim sağlamak için şu adımları izleyin:

  1. StorageClass Aşağıdaki YAML'yi adlı blob-fuse-sc.yamlbir dosyaya kaydederek bildirimi oluşturun:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: blob-fuse
    provisioner: blob.csi.azure.com
    parameters:
      skuName: Premium_LRS  # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS
      protocol: fuse2
      networkEndpointType: privateEndpoint
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - -o allow_other
      - --file-cache-timeout-in-seconds=120
      - --use-attr-cache=true
      - --cancel-list-on-mount-seconds=10  # prevent billing charges on mounting
      - -o attr_timeout=120
      - -o entry_timeout=120
      - -o negative_timeout=120
      - --log-level=LOG_WARNING  # LOG_WARNING, LOG_INFO, LOG_DEBUG
      - --cache-size-mb=1000  # Default will be 80% of available memory, eviction will happen beyond specified value.
    
  2. Kümenizde depolama sınıfını oluşturmak için, StorageClass'yi aşağıdaki komutu çalıştırarak uygulayın:

    kubectl apply -f blob-fuse-sc.yaml
    

Yerleşik depolama sınıfını kullanarak PVC oluşturma

Depolama sınıfı, Azure Blob depolama kapsayıcısını nasıl oluşturulduğunu tanımlamak için kullanılır. Azure Blob depolama kapsayıcısını tutmak üzere depolama sınıfıyla kullanılmak üzere düğüm kaynak grubunda otomatik olarak bir depolama hesabı oluşturulur. skuName için aşağıdaki Azure depolama yedekliliği SKU'larından birini seçin:

Uyarı

AKS kümesindeki düğüm kaynak grubu altındaki herhangi bir kaynağı değiştirmek desteklenmeyen bir eylemdir ve küme işlemi hatalarına neden olur. Daha fazla bilgi için bkz. AKS ile neden iki kaynak grubu oluşturulur?

  • Standard_LRS: Standart yerel olarak yedekli depolama
  • Premium_LRS: Premium yerel olarak yedekli depolama
  • Standard_ZRS: Standart alanlar arası yedekli depolama
  • Premium_ZRS: Premium alanlar arası yedekli depolama
  • Standard_GRS: Standart coğrafi olarak yedekli depolama
  • Standard_RAGRS: Standart okuma erişimli coğrafi olarak yedekli depolama

AKS'de depolama CSI sürücülerini kullandığınızda, Azure Blob CSI depolama sürücüsünü kullanan iki başka yerleşik bileşen daha bulunmaktadır.

Her iki depolama sınıfındaki geri kazanım ilkesi, ilgili PV silindiğinde temel alınan Azure Blob depolamanın silinmesini sağlar. Depolama sınıfları ayrıca parametre true olarak ayarlandığından kapsayıcıyı set allowVolumeExpansion varsayılan olarak genişletilebilir olacak şekilde yapılandırır.

Uyarı

Kalıcı birimlerin küçültülmesi desteklenmez.

Depolama sınıflarını görmek için kubectl get sc komutunu kullanın. Aşağıdaki örnekte AKS kümesinde azureblob-fuse-premium kullanılabilen ve azureblob-nfs-premium depolama sınıfları gösterilmektedir:

NAME                     PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
azureblob-fuse-premium   blob.csi.azure.com   Delete          Immediate           true                   23h
azureblob-nfs-premium    blob.csi.azure.com   Delete          Immediate           true                   23h

Bu depolama sınıflarını kullanmak için, bunlara başvuran ve kullanan bir PVC ve ilgili pod oluşturun. Pvc, depolama sınıfına göre depolamayı otomatik olarak ayırmak için kullanılır. Yerleşik depolama sınıflarından birini veya özel bir depolama sınıfını kullanarak PVC oluşturabilirsiniz. Bu PVC, belirtilen SKU'nuz, boyutunuz ve protokolünüzü içeren bir Azure Blob depolama kapsayıcısı oluşturur. Pod tanımı oluşturduğunuzda, istenen depolama alanını talep etmek için PVC kullanılır.

PVC, bir Azure Blob depolama kapsayıcısını dinamik olarak sağlamak için depolama sınıfı nesnesini kullanır. Aşağıdaki YAML, yerleşik depolama sınıfını kullanarak ReadWriteMany erişimine sahip 5 GB PVC oluşturmak için kullanılabilir. Erişim modları hakkında daha fazla bilgi için Kubernetes kalıcı birim belgelerine bakın.

  1. adlı blob-nfs-pvc.yaml bir dosya oluşturun ve aşağıdaki YAML'yi kopyalayın:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azure-blob-storage
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: azureblob-nfs-premium
      resources:
        requests:
          storage: 5Gi
    
  2. kubectl create komutuyla PVC oluşturun:

    kubectl create -f blob-nfs-pvc.yaml
    

İşlem tamamlandıktan sonra Blob depolama kapsayıcısı oluşturulur. PVC'nin durumunu görüntülemek için kubectl get komutunu kullanabilirsiniz:

kubectl get pvc azure-blob-storage

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

NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                AGE
azure-blob-storage   Bound    pvc-b88e36c5-c518-4d38-a5ee-337a7dda0a68   5Gi        RWX            azureblob-nfs-premium       92m

PVC'yi monte etme

Aşağıdaki YAML, PVC azure-blob-storage'yi /mnt/blob yolunda Azure Blob depolamayı bağlamak için kullanan bir pod oluşturur.

  1. adlı blob-nfs-pvbir dosya oluşturun ve aşağıdaki YAML'yi kopyalayın. talepAdı'nın önceki adımda oluşturulan 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.17.3-alpine
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 250m
            memory: 256Mi
        volumeMounts:
        - mountPath: "/mnt/blob"
          name: volume
          readOnly: false
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-blob-storage
    
  2. kubectl apply komutuyla pod oluşturun:

    kubectl apply -f blob-nfs-pv.yaml
    
  3. Pod çalışır durumda olduğunda, adlı test.txtyeni bir dosya oluşturmak için aşağıdaki komutu çalıştırın.

    kubectl exec mypod -- touch /mnt/blob/test.txt
    
  4. Diskin doğru şekilde bağlandığını doğrulamak için aşağıdaki komutu çalıştırın ve çıktıda dosyayı gördüğünüzden test.txt emin olun:

    kubectl exec mypod -- ls /mnt/blob
    

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

    test.txt
    

Azure Blob özel depolama sınıfı oluşturma

Varsayılan depolama sınıfları en yaygın senaryolara uygundur, ancak tümüne uygun değildir. Bazı durumlarda kendi depolama sınıfınızı kendi parametrelerinizle özelleştirmek isteyebilirsiniz. Bu bölümde, ilki NFS protokolunu, ikincisi BlobFuse kullanan iki örnek sağlarız.

Bu örnekte, aşağıdaki bildirim NFS protokolunu kullanarak bir Blob depolama kapsayıcısı bağlamayı yapılandırır. Bu özelliği tags parametresini eklemek için kullanın.

  1. adlı blob-nfs-sc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimi yapıştırın:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azureblob-nfs-premium
    provisioner: blob.csi.azure.com
    parameters:
      protocol: nfs
      tags: environment=Development
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - nconnect=4
    
  2. kubectl apply komutuyla depolama sınıfını oluşturun:

    kubectl apply -f blob-nfs-sc.yaml
    

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

    storageclass.storage.k8s.io/blob-nfs-premium created
    

NFS veya BlobFuse PV'yi Bağlama

Bu bölümde, NFS protokolunu veya BlobFuse'u kullanarak PV'yi bağlarsınız.

NFS v3 protokolunu kullanarak Blob depolamayı bağlamak, hesap anahtarı kullanılarak kimlik doğrulaması yapmaz. AKS kümenizin aracı düğümüyle aynı veya eşlenmiş sanal ağda bulunması gerekir. Depolama hesabınızdaki verilerin güvenliğini sağlamanın tek yolu sanal ağ ve diğer ağ güvenlik ayarlarını kullanmaktır. Depolama hesabınıza NFS erişimini ayarlama hakkında daha fazla bilgi için bkz. Ağ Dosya Sistemi (NFS) 3.0 protokolunu kullanarak Blob Depolamayı Bağlama.

Aşağıdaki örnekte, NFS protokolü kullanılarak blob depolama kapsayıcısının kalıcı birim olarak nasıl bağlanacağı gösterilmektedir.

  1. adlı pv-blob-nfs.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. storageClass altında, resourceGroup, storageAccount ve containerName güncelleştirin.

    Uyarı

    volumeHandle YAML'nizdeki değer, kümedeki her özdeş depolama blob kapsayıcısı için benzersiz bir volumeID olmalıdır.

    # ve / karakterleri iç kullanım için ayrılmıştır ve kullanılamaz.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: blob.csi.azure.com
      name: pv-blob
    spec:
      capacity:
        storage: 1Pi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain  # If set as "Delete" container would be removed after pvc deletion
      storageClassName: azureblob-nfs-premium
      mountOptions:
        - nconnect=4
      csi:
        driver: blob.csi.azure.com
        # make sure volumeid is unique for every identical storage blob container in the cluster
        # character `#` and `/` are reserved for internal use and cannot be used in volumehandle
        volumeHandle: account-name_container-name
        volumeAttributes:
          resourceGroup: resourceGroupName
          storageAccount: storageAccountName
          containerName: containerName
          protocol: nfs
    

    Uyarı

    Kubernetes APIkapasite özniteliği zorunlu olsa da, depolama hesabınızın kapasite sınırına ulaşana kadar esnek bir şekilde veri yazabileceğiniz için bu değer Azure Blob depolama CSI sürücüsü tarafından kullanılmaz. özniteliğinin capacity değeri yalnızca PV'ler ve PVC'ler arasında boyut eşleştirmesi için kullanılır. Kurgusal bir yüksek değer kullanmanızı öneririz. Pod, kurgusal boyutu 5 Petabayt olan takılı bir birim görür.

  2. Daha önce oluşturulan YAML dosyasına başvuran kubectl create komutunu kullanarak kalıcı birimi oluşturmak için aşağıdaki komutu çalıştırın:

    kubectl create -f pv-blob-nfs.yaml
    
  3. pvc-blob-nfs.yaml PersistentVolumeClaim ile bir dosya oluşturun. Örneğin:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-blob
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      volumeName: pv-blob
      storageClassName: azureblob-nfs-premium
    
  4. Daha önce oluşturulan YAML dosyasına başvuran kubectl create komutunu kullanarak kalıcı birim talebi oluşturmak için aşağıdaki komutu çalıştırın:

    kubectl create -f pvc-blob-nfs.yaml
    

Pod oluşturma

Aşağıdaki YAML, daha önce oluşturulan pvc-blob adlı PV veya PVC'yi kullanarak Azure Blob depolamayı /mnt/blob yoluna bağlamak için bir pod oluşturur.

  1. adlı nginx-pod-blob.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. NFS veya BlobFuse için bir PV oluştururken claimName değerinin önceki adımda oluşturulan PVC ile eşleştiğinden emin olun.

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-blob
    spec:
      nodeSelector:
        "kubernetes.io/os": linux
      containers:
        - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine
          name: nginx-blob
          volumeMounts:
            - name: blob01
              mountPath: "/mnt/blob"
              readOnly: false
      volumes:
        - name: blob01
          persistentVolumeClaim:
            claimName: pvc-blob
    
  2. Kubectl create komutunu kullanarak pod oluşturmak ve PVC'yi bağlamak için aşağıdaki komutu çalıştırın:

    kubectl create -f nginx-pod-blob.yaml
    
  3. Pod ile etkileşimli bir kabuk oturumu oluşturarak Blob depolamanın bağlanıp bağlanmadığını doğrulamak için aşağıdaki komutu çalıştırın:

    kubectl exec -it nginx-blob -- df -h
    

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

    Filesystem      Size  Used Avail Use% Mounted on
    ...
    blobfuse         14G   41M   13G   1% /mnt/blob
    ...
    

StatefulSet oluştur

İş yükünüzün pod yeniden başlatmaları veya değiştirmeleri arasında depolama hacmini koruduğundan emin olmak için StatefulSet kullanın. StatefulSets, kalıcı depolamayı podlarla ilişkilendirme işlemini basitleştirerek başarısız olanları değiştirmek için oluşturulan yeni podların aynı depolama birimlerine otomatik olarak erişmesini sağlar. Aşağıdaki örneklerde BlobFuse veya NFS protokolü kullanılarak Blob depolama için StatefulSet'in nasıl ayarlanacağı gösterilmektedir.

  1. adlı azure-blob-nfs-ss.yaml bir dosya oluşturun ve aşağıdaki YAML'de kopyalayın.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: statefulset-blob-nfs
      labels:
        app: nginx
    spec:
      serviceName: statefulset-blob-nfs
      replicas: 1
      template:
        metadata:
          labels:
            app: nginx
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
            - name: statefulset-blob-nfs
              image: mcr.microsoft.com/azurelinux/base/nginx:1.25
              volumeMounts:
                - name: persistent-storage
                  mountPath: /mnt/blob
      updateStrategy:
        type: RollingUpdate
      selector:
        matchLabels:
          app: nginx
      volumeClaimTemplates:
        - metadata:
            name: persistent-storage
          spec:
            storageClassName: azureblob-nfs-premium
            accessModes: ["ReadWriteMany"]
            resources:
              requests:
                storage: 100Gi
    
  2. kubectl create komutunu kullanarak StatefulSet'i oluşturun.

    kubectl create -f azure-blob-nfs-ss.yaml
    

Dinamik PVC depolama sınıfı parametreleri

Aşağıdaki tablo, dinamik PVC'niz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreleri içerir.

İsim Description Example Mandatory Varsayılan değer
skuName Bir Azure depolama hesabı türü belirtin (diğer ad: storageAccountType). Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS Hayı Standard_LRS
location Bir Azure konumu belirtin. eastus Hayı Boşsa, sürücü geçerli kümeyle aynı konum adını kullanır.
resourceGroup Bir Azure kaynak grubu adı belirtin. myResourceGroup Hayı Boşsa, sürücü geçerli kümeyle aynı kaynak grubu adını kullanır.
storageAccount Bir Azure depolama hesabı adı belirtin. storageAccountName Hayı Belirli bir depolama hesabı adı sağlanmadığında, sürücü aynı kaynak grubundaki hesap ayarlarıyla eşleşen uygun bir depolama hesabı arar. Eşleşen bir depolama hesabı bulamazsa yeni bir depolama hesabı oluşturur. Ancak, bir depolama hesabı adı belirtilirse, depolama hesabının zaten mevcut olması gerekir.
networkEndpointType 1 Sürücü tarafından oluşturulan depolama hesabı için ağ uç noktası türünü belirtin. privateEndpoint belirtilirse, depolama hesabı için bir özel uç nokta oluşturulur. Diğer durumlarda, NFS protokolü için bir hizmet uç noktası oluşturulur. privateEndpoint Hayı AKS kümesi için, AKS kümesinin adını sanal ağı barındıran kaynak grubundaki Katkıda Bulunan rolüne ekleyin.
protocol BlobFuse bağlantı noktasını veya NFSv3 bağlantı noktasını belirtin. fuse, nfs Hayı fuse
containerName Varolan kapsayıcı (dizin) adını belirtin. container Hayı Eğer boşsa, sürücü BlobFuse için pvc-fuse ile veya NFS v3 için pvc-nfs ile başlayan yeni bir kapsayıcı adı oluşturur.
konteynerAdÖneki Sürücü tarafından oluşturulan Azure depolama dizini ön eklerini belirtin. benim Hayı Yalnızca küçük harf, sayı, kısa çizgi içerebilir ve uzunluk 21 karakterden az olmalıdır.
server Azure depolama hesabının etki alanı adını belirtin. Mevcut depolama hesabı DNS etki alanı adı, örneğin <storage-account>.blob.core.windows.net. Hayı Sürücü boşsa varsayılan <storage-account>.blob.core.windows.net veya diğer bağımsız bulut depolama hesabı DNS etki alanı adını kullanır.
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,false Hayı false
storageEndpointSuffix Azure depolama uç noktası son ekini belirtin. core.windows.net Hayı Sürücü boşsa, bulut ortamına göre varsayılan depolama uç noktası sonekini kullanır.
tags [Etiketler][az-tags] yeni depolama hesabında oluşturulur. Etiket biçimi: 'foo=aaa,bar=bbb' Hayı ""
matchTags Sürücü uygun bir depolama hesabı bulmaya çalıştığında etiketleri eşleştirin. true,false Hayı false

1 Depolama hesabı sürücü tarafından oluşturulduysa, yalnızca depolama sınıfında parametre belirtmeniz networkEndpointType: privateEndpoint gerekir. CSI sürücüsü, özel uç noktayı ve özel DNS bölgesini (adlı privatelink.blob.core.windows.net) hesapla birlikte oluşturur. Kendi depolama hesabınızı getirirseniz depolama hesabı için özel uç nokta oluşturmanız gerekir. Azure Blob depolamayı ağdan yalıtılmış bir kümede kullanıyorsanız ile networkEndpointType: privateEndpointözel bir depolama sınıfı oluşturmanız gerekir.

Statik PV sağlama parametreleri

Aşağıdaki tablo, statik PV'nizi tanımlamak için kullanabileceğiniz parametreleri içerir.

İsim Description Example Mandatory Varsayılan değer
volumeHandle Sürücünün kümedeki depolama blob kapsayıcısını benzersiz olarak tanımlamak için kullanabileceği bir değer belirtin. Benzersiz bir değer oluşturmanın önerilen bir yolu, genel olarak benzersiz depolama hesabı adıyla kapsayıcı adını birleştirmektir: {account-name}_{container-name}.

# ve / karakterleri iç kullanım için ayrılmıştır ve birim tutamacında kullanılamaz.
Yes
volumeAttributes.resourceGroup Azure kaynak grubu adını belirtin. myResourceGroup Hayı 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.containerName Mevcut kapsayıcı adını belirtin. container Yes
volumeAttributes.protocol BlobFuse veya NFS v3 bağlamasını belirtin. fuse, nfs Hayı fuse

Yerleşik depolama sınıflarını kullanarak Azure Disk VM'leri oluşturma

Depolama sınıfı, bir depolama biriminin pv ile dinamik olarak nasıl oluşturulduğunu tanımlamak için kullanılır. Kubernetes depolama sınıfları hakkında daha fazla bilgi için bkz. Kubernetes depolama sınıfları.

AKS üzerinde Azure Disk CSI sürücüsünü kullandığınızda, Azure Disk CSI depolama sürücüsünü kullanan iki yerleşik StorageClasses daha vardır. Diğer CSI depolama sınıfları, ağaç içi varsayılan depolama sınıflarıyla birlikte kümeyle birlikte oluşturulur.

  • managed-csi: Yerel olarak yedekli depolama (LRS) ile Azure Standart SSD kullanarak yönetilen diskler oluşturur. Aks kümeleri için Kubernetes sürüm 1.29 birden çok kullanılabilirlik alanına dağıtıldığında, bu depolama sınıfı yönetilen diskleri sağlamak için Azure Standart SSD alanlar arası yedekli depolama (ZRS) kullanır.

  • managed-csi-premium: Azure Premium LRS kullanarak yönetilen diskler sağlar. Kubernetes sürüm 1.29'undan başlayarak, birden çok kullanılabilirlik alanına yayılan AKS kümeleri için bu depolama sınıfı yönetilen diskler oluşturmak için otomatik olarak Azure Premium ZRS kullanır.

Kubernetes sürüm 1.29'dan başlayarak, Azure Kubernetes Service (AKS) kümelerini birden çok kullanılabilirlik alanına dağıttığınızda AKS artık yerleşik depolama sınıflarında yönetilen diskler oluşturmak için alanlar arası yedekli depolama (ZRS) kullanıyor.

  • ZRS, seçtiğiniz bölgedeki birden çok Azure kullanılabilirlik alanı arasında Azure yönetilen disklerinizin eşzamanlı replikasyonunu sağlar. Bu yedeklilik stratejisi, uygulamalarınızın dayanıklılığını artırır ve verilerinizi veri merkezi hatalarına karşı korur.

  • Ancak, alanlar arası yedekli depolamanın (ZRS) yerel olarak yedekli depolamaya (LRS) kıyasla daha yüksek bir maliyetle geldiğini unutmayın. Maliyet iyileştirme öncelikliyse, LRS SKU adı parametresiyle yeni bir depolama sınıfı oluşturabilir ve bunu kalıcı birim talebinizde kullanabilirsiniz.

Veri kaybı riski nedeniyle PVC'nin boyutunu küçültme desteklenmez. komutunu kullanarak mevcut bir depolama sınıfını kubectl edit sc düzenleyebilir veya kendi özel depolama sınıfınızı oluşturabilirsiniz. Örneğin, 4 TiB boyutunda bir disk kullanmak istiyorsanız, [disk önbelleği 4 TiB ve daha büyük diskler için desteklenmediğinden][disk-host-cache-setting] tanımlayan cachingmode: None bir depolama sınıfı oluşturmanız gerekir. Depolama sınıfları ve kendi depolama sınıfınızı oluşturma hakkında daha fazla bilgi için bkz . AKS'deki uygulamalar için depolama seçenekleri.

Her iki depolama sınıfının geri alma ilkesi, ilgili PV silindiğinde altta yatan Azure Disklerinin silinmesini sağlar. Depolama sınıfları ayrıca PV'leri genişletilebilir olacak şekilde yapılandırabilir. Pvc'yi yeni boyutla düzenlemeniz yeterlidir.

Bu depolama sınıflarını kullanmak için, bu sınıflara referans veren ve kullanan ilgili bir PVC ve pod oluşturun. Pvc, depolama sınıfına göre depolamayı otomatik olarak sağlamak için kullanılır. PVC, istenen SKU ve boyut için Azure tarafından yönetilen bir disk oluşturmak için önceden oluşturulmuş depolama sınıflarından birini veya kullanıcı tanımlı bir depolama sınıfını kullanabilir. Pod tanımı oluşturduğunuzda, istenen depolama alanını talep etmek için PVC kullanılır.

Uyarı

Kalıcı birim talepleri GiB cinsinden belirtildiği halde, Azure'da yönetilen diskler belirli bir boyut için SKU'ya göre faturalandırılır. Bu SKU'lar S4 veya P4 diskleri için 32GiB ile S80 veya P80 diskler için 32TiB arasında değişir (önizlemede). Premium yönetilen diskin aktarım hızı ve IOPS performansı hem SKU'ya hem de AKS kümesindeki düğümlerin örnek boyutuna bağlıdır. Daha fazla bilgi için bkz . Yönetilen disklerin fiyatlandırması ve performansı.

komutunu kullanarak önceden oluşturulmuş depolama sınıflarını kubectl get sc görebilirsiniz. Aşağıdaki örnekte, AKS kümesinde kullanılabilen önceden oluşturulmuş depolama sınıfları gösterilmektedir:

kubectl get sc

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

NAME                PROVISIONER                AGE
default (default)   disk.csi.azure.com         1h
managed-csi         disk.csi.azure.com         1h

PVC, depolama sınıfına göre depolamayı otomatik olarak sağlar. Bu durumda PVC, standart veya premium Azure yönetilen diski oluşturmak için önceden oluşturulmuş depolama sınıflarından birini kullanabilir.

  1. adlı azure-pvc.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Talep, azure-managed-disk erişimine sahip, 5 GB boyutunda, adlı ReadWriteOnce bir disk talep eder. Managed-csi depolama sınıfı, depolama sınıfı olarak belirtilir.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
        name: azure-managed-disk
    spec:
      accessModes:
      - ReadWriteOnce
      storageClassName: managed-csi
      resources:
        requests:
          storage: 5Gi
    

    Tavsiye

    Premium depolama kullanan bir disk oluşturmak için managed-csistorageClassName: managed-csi-premiumkullanın.

  2. komutunu kullanarak kubectl apply kalıcı birim talebi oluşturun ve azure-pvc.yaml dosyanızı belirtin.

    kubectl apply -f azure-pvc.yaml
    

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

    persistentvolumeclaim/azure-managed-disk created
    

Pod'a PVC uygulama

Kalıcı birim talebi oluşturduktan sonra, durumunun Pendingolduğunu doğrulamanız gerekir. Durum, pod tarafından kullanılmaya hazır olduğunu gösterir.

  1. komutunu kullanarak kubectl describe pvc PVC'nin durumunu doğrulayın.

    kubectl describe pvc azure-managed-disk
    

    Komutun çıktısı aşağıdaki sıkıştırılmış örneğe benzer:

    Name:            azure-managed-disk
    Namespace:       default
    StorageClass:    managed-csi
    Status:          Pending
    [...]
    
  2. adlı azure-pvc-disk.yaml bir dosya oluşturun ve aşağıdaki bildirimde kopyalayın. Bu bildirim, Azure Diskini azure-managed-disk yolunda bağlamak için /mnt/azure adlı kalıcı birim talebini kullanan temel bir NGINX podu oluşturur. Windows Server kapsayıcıları için, mountPath gibi Windows yol kuralını kullanarak bir belirtin.

    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: azure-managed-disk
    
  3. Pod'u oluşturmak için kubectl apply komutunu kullanın.

    kubectl apply -f azure-pvc-disk.yaml
    

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

    pod/mypod created
    
  4. Artık /mnt/azure dizininde Azure Diski bağlı olan çalışan bir podunuz var. komutunu kullanarak kubectl describe pod yapılandırmasını denetleyin.

    kubectl describe pod mypod
    

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

    [...]
    Volumes:
      volume:
        Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
        ClaimName:  azure-managed-disk
        ReadOnly:   false
       default-token-smm2n:
        Type:        Secret (a volume populated by a Secret)
        SecretName:  default-token-smm2n
        Optional:    false
    [...]
     Events:
      Type    Reason                 Age   From                               Message
      ----    ------                 ----  ----                               -------
      Normal  Scheduled              2m    default-scheduler                  Successfully assigned mypod to aks-nodepool1-79590246-0
      Normal  SuccessfulMountVolume  2m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "default-token-smm2n"
      Normal  SuccessfulMountVolume  1m    kubelet, aks-nodepool1-79590246-0  MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242"
    [...]
    

PVC'ler için dinamik depolama sınıfı parametreleri

Aşağıdaki tablo, PVC'leriniz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreleri içerir.

İsim Meaning Kullanılabilir Değer Mandatory Varsayılan değer
skuName Azure Disks depolama hesabı türü (diğer ad: storageAccountType) Standard_LRS, Premium_LRS, StandardSSD_LRS, , PremiumV2_LRS, UltraSSD_LRS, Premium_ZRS, StandardSSD_ZRS Hayı StandardSSD_LRS
fsType Dosya Sistemi Türü ext4, ext3, ext2, xfs, , btrfs Linux için, ntfs Windows için Hayı ext4 Linux için, ntfs Windows için
cachingMode [Azure Veri Diski Ana Bilgisayarı Önbellek Ayarı][disk-host-cache-setting] (PremiumV2_LRS ve UltraSSD_LRS yalnızca None önbelleğe alma modunu destekler) None, ReadOnly, ReadWrite Hayı ReadOnly
resourceGroup Azure Diskleri için kaynak grubunu belirtme Mevcut kaynak grubu adı Hayı Sürücü boşsa geçerli AKS kümesiyle aynı kaynak grubu adını kullanır
DiskIOPSReadWrite [UltraSSD disk][ultra-ssd-diskler] veya [Premium SSD v2][premiumv2_lrs_disks] IOPS Özelliği (en az: 2 IOPS/GiB) 100~160000 Hayı 500
DiskMBpsReadWrite [UltraSSD disk][ultra-ssd-diskler] veya [Premium SSD v2][premiumv2_lrs_disks] Aktarım Hızı Özelliği (en az: 0,032/GiB) 1~2000 Hayı 100
MantıksalSektörBoyutu Ultra disk için bayt cinsinden mantıksal kesim boyutu. Desteklenen değerler 512 ad 4096'dır. Varsayılan değer 4096'dır. 512, 4096 Hayı 4096
tags Azure Disk [tags][azure-tags] Etiket biçimi: key1=val1,key2=val2 Hayı ""
diskEncryptionSetID [disk şifreleme] için kullanılacak, dinlenme hâlinde şifrelemeyi etkinleştirmek üzere disk şifreleme kümesinin ResourceId değeri biçim: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} Hayı ""
diskEncryptionType Disk şifreleme kümesinin şifreleme türü. EncryptionAtRestWithCustomerKey (varsayılan olarak), EncryptionAtRestWithPlatformAndCustomerKeys Hayı ""
yazmaHızlandırıcıEtkin [Azure Disklerde Yazma Hızlandırıcısı][azure-disk-write-accelerator] true, false Hayı ""
ağ erişim politikası Disk veya anlık görüntü için SAS URI'sinin oluşturulmasını önlemek için NetworkAccessPolicy özelliği AllowAll, DenyAll, AllowPrivate Hayı AllowAll
diskAccessID Disklerde özel uç noktaları kullanmak için DiskAccess kaynağının Azure Kaynak Kimliği Hayı ``
patlamayı etkinleştir [İsteğe bağlı artırmayı etkinleştirme][isteğe bağlı artırma], diskin sağlanan performans hedefinin ötesine geçmesine olanak tanır. İsteğe bağlı seri artış yalnızca Premium diske ve disk boyutu > 512 GB olduğunda uygulanmalıdır. Ultra ve paylaşılan disk desteklenmez. Patlatma varsayılan olarak devre dışıdır. true, false Hayı false
userAgent Kullanıcı aracısı, müşteri kullanımı atfı için kullanılmaktadır. Hayı Oluşturulan kullanıcı aracısı şu şekilde biçimlendirilir: driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Azure Disklerinin oluşturulduğu Azure abonelik kimliğini belirtin. Azure abonelik kimliği Hayı Boş değilse resourceGroup sağlanmalıdır.

PV için statik sağlama parametreleri

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

İsim Meaning Kullanılabilir Değer Mandatory Varsayılan değer
volumeHandle Azure disk URI'si /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} Yes N/A
volumeAttributes.fsType Dosya sistemi türü ext4, ext3, ext2, xfs, , btrfs Linux için, ntfs Windows için Hayı ext4 Linux için, ntfs Windows için
volumeAttributes.partition Mevcut diskin bölüm numarası (yalnızca Linux'ta desteklenir) 1, 2, 3 Hayı Boş (bölüm yok)
- Bölüm biçiminin -part1 gibi olduğundan emin olun.
volumeAttributes.cachingMode [Disk host önbellek ayarı][disk-host-cache-setting] None, ReadOnly, ReadWrite Hayı ReadOnly

Azure Disk özel depolama sınıfı oluşturma

Varsayılan depolama sınıfları çoğu yaygın senaryo için uygundur. Bazı durumlarda kendi depolama sınıfınızın kendi parametrelerinizle özelleştirilmesini isteyebilirsiniz. Örneğin, sınıfını volumeBindingMode değiştirmek isteyebilirsiniz.

Kalıcı birim talebi (PVC) oluşturulduktan hemen sonra gerçekleşmesini garanti eden bir volumeBindingMode: Immediate sınıf kullanabilirsiniz. Örneğin kullanılabilirlik alanlarını kullanırken düğüm havuzlarınız topolojisi kısıtlandığında, podun zamanlama gereksinimleri hakkında bilgi sahibi olmadan sanal makineler bağlanır veya sağlanır.

Bu senaryoyu ele almak için, PVC kullanan bir pod oluşturulana kadar PV'nin bağlanmasını ve sağlanmasını geciktiren volumeBindingMode: WaitForFirstConsumer kullanabilirsiniz. Bu yaklaşım, kalıcı hacmin (PV), pod'un zamanlama kısıtlamalarına göre gerektiği gibi aynı kullanılabilirlik bölgesinde veya topolojide tahsis edilmesini sağlar. Varsayılan depolama sınıfları sınıfını kullanır volumeBindingMode: WaitForFirstConsumer .

  1. adlı sc-azuredisk-csi-waitforfirstconsumer.yamlbir dosya oluşturun ve aşağıdaki bildirimi yapıştırın. Depolama sınıfı, depolama sınıfımızla managed-csi aynıdır ancak farklı volumeBindingMode bir sınıfa sahip olur. Örneğin:

    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: azuredisk-csi-waitforfirstconsumer
    provisioner: disk.csi.azure.com
    parameters:
      skuname: StandardSSD_LRS
    allowVolumeExpansion: true
    reclaimPolicy: Delete
    volumeBindingMode: WaitForFirstConsumer
    
  2. kubectl apply komutunu çalıştırarak depolama sınıfını oluşturun ve dosyanızı sc-azuredisk-csi-waitforfirstconsumer.yaml belirtin:

    kubectl apply -f sc-azuredisk-csi-waitforfirstconsumer.yaml
    

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

    storageclass.storage.k8s.io/azuredisk-csi-waitforfirstconsumer created
    

Birim anlık görüntüleri hakkında bilgi edinin

Azure Disk CSI sürücüsü birim anlık görüntülerini destekleyerek yedekleme ve geri yükleme işlemleri için belirli noktalarda kalıcı birimlerin durumunu yakalamanızı sağlar. Birim anlık görüntüleri, çalışan uygulamaları kesintiye uğratmadan kalıcı verilerinizin anlık kopyalarını oluşturmanızı sağlar. Yeni birimler oluşturmak veya mevcut birimleri önceki bir duruma geri yüklemek için bu anlık görüntüleri kullanabilirsiniz.

İki tür anlık görüntü oluşturabilirsiniz:

  • Tam anlık görüntüler: Diskin tam durumunu yakalayın.

  • Artımlı anlık görüntüler: Daha iyi depolama verimliliği ve maliyet tasarrufu sağlayarak yalnızca son anlık görüntüden bu yana yapılan değişiklikleri yakalayın. Artımlı anlık görüntüler, incremental parametresi VolumeSnapshotClass içinde true olarak ayarlandığında varsayılan davranıştır.

Aşağıdaki tabloda bu parametrelerle ilgili ayrıntılar sağlanmaktadır.

İsim Meaning Kullanılabilir Değer Mandatory Varsayılan değer
resourceGroup Anlık görüntü görüntülerini depolamak için kaynak grubu VAR OLAN KAYNAK GRUBU Hayı Belirtilmezse, anlık görüntüler kaynak Azure Diskleriyle aynı kaynak grubunda depolanır
Artımlı Tam veya artımlı anlık görüntü alma true, false Hayı true
tags Azure Diskleri etiketleri Etiket biçimi: 'key1=val1,key2=val2' Hayı ""
userAgent Müşteri kullanımı ilişkilendirmesi için kullanılan kullanıcı aracısı Hayı Oluşturulan Kullanıcı Aracısı biçimlendirilmiş driverName/driverVersion compiler/version (OS-ARCH)
subscriptionID Azure Disklerinin oluşturulduğu Azure abonelik kimliğini belirtme Azure abonelik kimliği Hayı Boş değilse, resourceGroup olarak sağlanmalıdır, incrementalfalse olarak ayarlanmalıdır.

Birim anlık görüntüleri aşağıdaki senaryoları destekler:

  • Yedekleme ve geri yükleme: Durum bilgisi olan uygulama verilerinin belirli bir noktaya yedeklerini oluşturun ve gerektiğinde geri yükleyin.
  • Veri kopyalama: Aynı verilerle yeni kalıcı birimler oluşturmak için mevcut birimleri klonlar.
  • Olağanüstü durum kurtarma: Veri kaybından veya bozulmasından hızlı bir şekilde kurtarın.

Birim anlık görüntüsü oluştur.

Uyarı

Devam etmeden önce uygulamanın kaynak diske veri yazmadığından emin olun.

  1. Bu özelliğin bir örneği için kubectl apply komutuyla bir birim anlık görüntü sınıfı oluşturun:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/storageclass-azuredisk-snapshot.yaml
    

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

    volumesnapshotclass.snapshot.storage.k8s.io/csi-azuredisk-vsc created
    
  2. Bu makalenin önceki bölümlerinde oluşturulan PVC'den bir birim anlık görüntüsü oluşturun.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/azuredisk-volume-snapshot.yaml
    

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

    volumesnapshot.snapshot.storage.k8s.io/azuredisk-volume-snapshot created
    
  3. Anlık görüntünün doğru oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın:

    kubectl describe volumesnapshot azuredisk-volume-snapshot
    

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

    Name:         azuredisk-volume-snapshot
    Namespace:    default
    Labels:       <none>
    Annotations:  API Version:  snapshot.storage.k8s.io/v1
    Kind:         VolumeSnapshot
    Metadata:
      Creation Timestamp:  2020-08-27T05:27:58Z
      Finalizers:
        snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection
        snapshot.storage.kubernetes.io/volumesnapshot-bound-protection
      Generation:        1
      Resource Version:  714582
      Self Link:         /apis/snapshot.storage.k8s.io/v1/namespaces/default/volumesnapshots/azuredisk-volume-snapshot
      UID:               dd953ab5-6c24-42d4-ad4a-f33180e0ef87
    Spec:
      Source:
        Persistent Volume Claim Name:  pvc-azuredisk
      Volume Snapshot Class Name:      csi-azuredisk-vsc
    Status:
      Bound Volume Snapshot Content Name:  snapcontent-dd953ab5-6c24-42d4-ad4a-f33180e0ef87
      Creation Time:                       2020-08-31T05:27:59Z
      Ready To Use:                        true
      Restore Size:                        10Gi
    Events:                                <none>
    

Hacim anlık görüntüsünü temel alarak yeni bir PVC oluşturun

Birim anlık görüntüsünü temel alan yeni bir PVC oluşturabilirsiniz.

  1. Önceki adımda oluşturulan anlık görüntüyü kullanarak yeni bir PVC ve yeni bir pod oluşturup tüketin.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/pvc-azuredisk-snapshot-restored.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/snapshot/nginx-pod-restored-snapshot.yaml
    

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

    persistentvolumeclaim/pvc-azuredisk-snapshot-restored created
    pod/nginx-restored created
    
  2. Daha önce oluşturulan PVC ile aynı olduğundan emin olmak için aşağıdaki komutu çalıştırarak içeriği denetleyin:

    kubectl exec nginx-restored -- ls /mnt/azuredisk
    

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

    lost+found
    outfile
    test.txt
    

Daha önce oluşturulmuş test.txt dosyamızı yine de beklendiği gibi görebiliriz.

Birimleri kopyalama

Kopyalanan birim, mevcut kubernetes biriminin bir kopyası olarak tanımlanır. Kubernetes'te birimleri kopyalama hakkında daha fazla bilgi için bkz. birim kopyalama.

  1. Önceden oluşturulmuş bir birimin azuredisk-pvc ve bunu kullanmak için yeni bir pod oluşturun.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/pvc-azuredisk-cloning.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/cloning/nginx-pod-restored-cloning.yaml
    

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

    persistentvolumeclaim/pvc-azuredisk-cloning created
    pod/nginx-restored-cloning created
    
  2. Kopyalanan birimin içeriğini doğrulamak için aşağıdaki komutu çalıştırabilir ve dosyanın test.txt oluşturulduğunu onaylayabilirsiniz:

    kubectl exec nginx-restored-cloning -- ls /mnt/azuredisk
    

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

    lost+found
    outfile
    test.txt
    

Kesinti Süresi Olmadan Azure Disk PV'yi Yeniden Boyutlandırma

PVC için daha büyük bir birim isteyebilirsiniz. PVC nesnesini düzenleyin ve daha büyük bir boyut belirtin. Bu değişiklik, PV'yi destekleyen temel birimin genişlemesini tetikler.

Uyarı

Talebi karşılamak için asla yeni bir PV oluşturulmaz. Bunun yerine, mevcut bir birim yeniden boyutlandırılır.

AKS'de managed-csi yerleşik depolama sınıfı zaten genişletmeyi destekler, bu nedenle daha önce oluşturulmuş olanı kullanın. PVC, 10 Gi kalıcı depolama alanı istedi. Aşağıdaki komutu çalıştırarak onaylayabilirsiniz:

kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk

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

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc        9.8G   42M  9.8G   1% /mnt/azuredisk
  1. Aşağıdaki komutu çalıştırarak spec.resources.requests.storage alanını artırın ve PVC'yi genişletin.

    kubectl patch pvc pvc-azuredisk --type merge --patch '{"spec": {"resources": {"requests": {"storage": "15Gi"}}}}'
    

    Uyarı

    Küçültülen PV'ler şu anda desteklenmemektedir. Mevcut boyuttan daha küçük boyutlu bir PVC'yi yamaya çalışmak, aşağıdaki hata mesajına yol açar:

    The persistentVolumeClaim "pvc-azuredisk" is invalid: spec.resources.requests.storage: Forbidden: field can not be less than previous value.

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

    persistentvolumeclaim/pvc-azuredisk patched
    
  2. Birim boyutunun arttığını onaylamak için aşağıdaki komutu çalıştırın:

    kubectl get pv
    

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

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                     STORAGECLASS   REASON   AGE
    pvc-391ea1a6-0191-4022-b915-c8dc4216174a   15Gi       RWO            Delete           Bound    default/pvc-azuredisk     managed-csi             2d2h
    (...)
    
  3. Birkaç dakika sonra, PVC'nin boyutunu onaylamak için aşağıdaki komutları çalıştırın:

    kubectl get pvc pvc-azuredisk
    

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

    NAME            STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pvc-azuredisk   Bound    pvc-391ea1a6-0191-4022-b915-c8dc4216174a   15Gi       RWO            managed-csi    2d2h
    
  4. Podun içindeki diskin boyutunu onaylamak için aşağıdaki komutu çalıştırın:

    kubectl exec -it nginx-azuredisk -- df -h /mnt/azuredisk
    

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

    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sdc         15G   46M   15G   1% /mnt/azuredisk
    

Podunuzun birden çok kapsayıcısı varsa, aşağıdaki komutu çalıştırarak hangi kapsayıcıyı belirtebilirsiniz:

kubectl exec -it nginx-azuredisk -c <ContainerName> -- df -h /mnt/azuredisk

Windows konteynerleri

Azure Disk CSI sürücüsü Windows düğümlerini ve kapsayıcılarını destekler. Windows kapsayıcılarını kullanmak istiyorsanız Windows düğüm havuzu eklemek için Windows kapsayıcıları hızlı başlangıç kılavuzunu izleyin.

  1. Bir Windows düğüm havuzunuz olduktan sonra, artık gibi managed-csiyerleşik depolama sınıflarını kullanabilirsiniz. Aşağıdaki kubectl apply komutunu çalıştırarak, zaman damgalarını data.txt dosyasına kaydeden örnek bir Windows tabanlı durum bilgili seti dağıtabilirsiniz.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/deploy/example/windows/statefulset.yaml
    

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

    statefulset.apps/busybox-azuredisk created
    
  2. Birimin içeriğini doğrulamak için aşağıdaki komutu çalıştırın:

    kubectl exec -it statefulset-azuredisk-win-0 -- powershell -c "type c:/mnt/azuredisk/data.txt"
    

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

    2020-08-27 08:13:41Z
    2020-08-27 08:13:42Z
    2020-08-27 08:13:44Z
    (...)
    

İsteğe bağlı ani artış

Talep üzerine disk patlama modeli, ihtiyaçları geçerli kapasitesini aştığında disk patlamalarına izin verir. Bu model, disk her patladığında ek ücret oluşturur. Yalnızca 512 GiB'den büyük premium SSD'ler için isteğe bağlı ani patlama kullanılabilir. Disk başına sağlanan premium SSD'ler, ayrılmış IOPS ve bant genişliği hakkında daha fazla bilgi için bkz. Premium SSD boyutu. Alternatif olarak, kredi tabanlı patlama, diskin kredi kovasında birikmiş patlama kredileri varsa gerçekleşir. Kredi tabanlı seri artış, disk patladığında ek ücret oluşturmaz. Kredi tabanlı seri artış yalnızca 512 GiB ve daha küçük premium SSD'ler ve 1.024 GiB ve daha küçük standart SSD'ler için kullanılabilir. İsteğe bağlı artış hakkında daha fazla bilgi için bkz. İsteğe bağlı ani artış.

Önemli

Varsayılan managed-csi-premium depolama sınıfında isteğe bağlı seri artış devre dışıdır ve kredi tabanlı seri artış kullanılır. Varsayılan managed-csi-premium depolama sınıfını temel alan kalıcı bir birim talebi tarafından dinamik olarak oluşturulmuş olan tüm premium SSD'lerde, isteğe bağlı ani artış da devre dışı bırakılmıştır.

İsteğe bağlı patlama modu etkinleştirilmiş bir premium SSD kalıcı hacim oluşturmak için, aşağıdaki YAML şablonunda gösterildiği gibi enableBursting parametresi ayarlanmış yeni bir depolama sınıfı oluşturabilirsiniz. İsteğe bağlı ani artışları etkinleştirme hakkında daha fazla bilgi için bkz. İsteğe bağlı ani artış. İsteğe bağlı ani artış etkinleştirilmişken kendi depolama sınıfınızı oluşturma hakkında daha fazla bilgi için bkz. Hızla Artırılabilir Yönetilen CSI Premium Depolama Sınıfı Oluşturma.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: burstable-managed-csi-premium
provisioner: disk.csi.azure.com
parameters:
  skuname: Premium_LRS
  enableBursting: "true"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true

Kaynakları temizle

Bu makalede oluşturulan kaynaklarla işiniz bittiğinde komutunu kullanarak kubectl delete bunları kaldırabilirsiniz.

# Remove the pod
kubectl delete -f azure-pvc-disk.yaml

# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml

Azure Dosyalar VM'leri sağlama

Azure Dosyalar, Azure Premium dosya paylaşımlarını destekler. En düşük dosya paylaşımı kapasitesi 100 GiB'dir. Premium dosya paylaşımları G/Ç yoğunluklu iş yükleri için daha yüksek performans ve düşük gecikme süreli disk desteği sunduğundan Standart dosya paylaşımları yerine Azure Premium dosya paylaşımları kullanmanızı öneririz. Azure Dosyalar paylaşımları ile düğüme kaç tane bağlanabileceğine ilişkin bir sınır yoktur. Kubernetes birimleri hakkında daha fazla bilgi için bkz. AKS'deki uygulamalar için depolama seçenekleri.

AKS'de depolama CSI sürücülerini kullandığınızda, Azure Dosyalar CSI depolama sürücülerini kullanan iki yerleşik StorageClasses daha bulunmaktadır. Diğer CSI depolama sınıfları, ağaç içi varsayılan depolama sınıflarıyla birlikte kümeyle birlikte oluşturulur.

  • azurefile-csi: Bir Azure dosya paylaşımı oluşturmak için Azure Standart Depolama'yı kullanır.

  • azurefile-csi-premium: Bir Azure dosya paylaşımı oluşturmak için Azure Premium Depolama'yı kullanır.

Her iki depolama sınıfındaki geri alma politikası, ilgili PV silindiğinde alttaki Azure dosya paylaşımının silinmesini sağlar. Depolama sınıfları da dosya paylaşımlarını genişletilebilir olacak şekilde yapılandırdığından, PVC'yi yeni boyutla düzenlemeniz yeterlidir.

Uyarı

Azure Dosyalar ile en iyi deneyimi elde etmek için bu en iyi yöntemleri izleyin. Bağlama seçeneklerinin (mountOptions) yapılandırılma konumu, dinamik veya statik kalıcı birimler sağlayıp sağlamadığınıza bağlıdır.

  • Bir birimi depolama sınıfıyla dinamik olarak hazırlarsanız, depolama sınıfı nesnesinde bağlama seçeneklerini belirtin (tür: StorageClass).
  • Bir birimi statik olarak oluşturuyorsanız PersistentVolume nesnesinde bağlama seçeneklerini belirtin (tür: PersistentVolume).
  • Dosya paylaşımını satır içi birim olarak bağlıyorsanız Pod nesnesindeki bağlama seçeneklerini belirtin (tür: Pod).

Karşılaştırma testlerini çalıştırırken FIO'yu öneririz. Daha fazla bilgi için bkz . Karşılaştırma araçları ve testleri.

Depolama sınıfı, Azure dosya paylaşımının nasıl oluşturulduğunu tanımlamak için kullanılır. Azure 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. skuName için aşağıdaki Azure depolama yedekliliği SKU'larından birini seçin:

Uyarı

AKS kümesindeki düğüm kaynak grubu altındaki herhangi bir kaynağı değiştirmek desteklenmeyen bir eylemdir ve küme işlemi hatalarına neden olur. Daha fazla bilgi için bkz. AKS ile neden iki kaynak grubu oluşturulur?

  • Standard_LRS: Standart yerel olarak yedekli depolama
  • Standard_GRS: Standart coğrafi olarak yedekli depolama
  • Standard_ZRS: Standart alanlar arası yedekli depolama
  • Standard_RAGRS: Standart okuma erişimli coğrafi olarak yedekli depolama
  • Standard_RAGZRS: Standart okuma erişimli coğrafi alanlar arası yedekli depolama
  • Premium_LRS: Premium yerel olarak yedekli depolama
  • Premium_ZRS: Premium alanlar arası yedekli depolama

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
     - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    parameters:
      skuName: Premium_LRS
    
  2. komutunu kullanarak depolama sınıfını kubectl apply oluşturun.

    kubectl apply -f azure-file-sc.yaml
    

PVC oluştur

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

  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
    

    Uyarı

    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 PVC'yi kubectl apply oluşturun.

    kubectl apply -f azure-file-pvc.yaml
    

    Tamamlandıktan sonra dosya paylaşımı oluşturulur. Kubernetes bağlantı bilgilerini ve kimlik bilgilerini içeren bir gizlilik 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
    

PVC'yi monte etme

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

  1. adlı azure-pvc-files.yamlbir dosya oluşturun ve aşağıdaki YAML'de kopyalayın. claimName öğesinin, ö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. Pod'u oluşturmak için kubectl apply komutunu kullanın.

    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ırmayı, kubectl describe komutunu kullanarak podunuzu incelerken görebilirsiniz. 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

Kubernetes sürüm 1.13.0 ve üzeri için fileMode ve dirMode varsayılan değerleridir 0777. Depolama sınıfı kullanarak kalıcı birimleri dinamik olarak sağlarken, montaj seçeneklerini depolama sınıfı bildiriminde doğrudan tanımlayabilirsiniz. Ayrıntılar için bkz . Bağlama seçenekleri. Aşağıdaki örnekte, bu izinlerin olarak 0777ayarlanması gösterilmektedir:

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

Dinamik birimler için depolama sınıfı parametreleri

Aşağıdaki tablo, PVC'niz için özel bir depolama sınıfı tanımlamak için kullanabileceğiniz parametreleri içerir.

İsim Meaning Kullanılabilir Değer Mandatory Varsayılan değer
accountAccessTier Depolama hesabı için erişim katmanı Standart hesap Hot veya Cool seçebilir, Premium hesap ise yalnızca Premium seçebilir. Hayı Empty. Farklı depolama hesabı türleri için varsayılan ayarı kullanın.
accountQuota Bir hesabın kotasını sınırlar. GB cinsinden maksimum kota belirtebilirsiniz (varsayılan olarak 102.400 GB). Hesap belirtilen kotayı aşarsa, sürücü hesabı seçmeyi atlar. Hayı 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ı 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ı false
folderName Azure dosya paylaşımında klasör adını belirtin. Azure dosya paylaşımında var olan klasör adı. Hayı 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ı false
location Azure depolama hesabının Azure bölgesini belirtin. Örneğin, eastus. Hayı 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ı false
networkEndpointType 1 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ı ""
protocol Dosya paylaşımı protokollerini belirtin. smb, nfs Hayı 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ı false
resourceGroup Azure Diskleri için kaynak grubunu belirtin. Mevcut kaynak grubu adı Hayı Eğer boşsa, sürücü mevcut 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ı false
server Azure depolama hesabı sunucu adresini belirtin. Var olan sunucu adresi, örneğin accountname.privatelink.file.core.windows.net. Hayı 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ı TransactionOptimized (varsayılan), Hot ve Cool arasında seçim yapabilir. Yalnızca dosya paylaşımları için premium depolama hesabı türü. Hayı Empty. Farklı depolama hesabı türleri için varsayılan ayarı kullanın.
shareName Azure dosya paylaşımı adını belirtin. Mevcut veya yeni Azure dosya paylaşımı adı. Hayı 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ı
skuName Azure Dosyalar depolama hesabı türü (diğer ad: storageAccountType) Standard_LRS, Standard_ZRS, Standard_GRS, Standard_RAGRS, Standard_RAGZRS, Premium_LRS, Premium_ZRS, StandardV2_LRS, StandardV2_ZRS, StandardV2_GRS, StandardV2_GZRS, PremiumV2_LRS, PremiumV2_ZRS Hayı Standard_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.
Standart V2 SKU adları, Azure Files tarafından sağlanan v2 modeli içindir.
storageAccount Bir Azure depolama hesabı adı belirtin. storageAccountName -Hayır Belirli bir depolama hesabı adı sağlanmadığında, sürücü aynı kaynak grubundaki hesap ayarlarıyla eşleşen uygun bir depolama hesabı arar. Eşleşen bir depolama hesabı bulamazsa yeni bir depolama hesabı oluşturur. Ancak, bir depolama hesabı adı belirtilirse, depolama hesabının zaten mevcut olması gerekir.
storageEndpointSuffix Azure depolama uç noktası son ekini belirtin. core.windows.net, core.chinacloudapi.cnvb. Hayı 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ı ""

1 Depolama hesabı sürücü tarafından oluşturulduysa, yalnızca depolama sınıfında parametre belirtmeniz networkEndpointType: privateEndpoint gerekir. CSI sürücüsü, özel uç noktayı ve özel DNS bölgesini (adlı privatelink.file.core.windows.net) hesapla birlikte oluşturur. Kendi depolama hesabınızı getirirseniz depolama hesabı için özel uç nokta oluşturmanız gerekir. Azure Dosyalar depolamayı ağdan yalıtılmış bir kümede kullanıyorsanız, "networkEndpointType: privateEndpoint" ile özel bir depolama sınıfı oluşturmanız gerekir. Referans olarak bu örneği izleyebilirsiniz.

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

PV'ler için statik tahsis parametreleri

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

İsim Meaning Kullanılabilir Değer Mandatory Varsayılan değer
volumeAttributes.resourceGroup Bir Azure kaynak grubu adı belirtin. myResourceGroup Hayı 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. folderName Hayı 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ı smb
volumeAttributes.server Azure depolama hesabı sunucu adresini belirtme Var olan sunucu adresi, örneğin accountname.privatelink.file.core.windows.net. Hayı Sürücü boşsa varsayılan accountname.file.core.windows.net veya diğer bağımsız bulut hesabı adresini kullanır.

PV anlık görüntü sınıfı oluşturma

Azure Dosyalar CSI sürücüsü , kalıcı birimlerin ve temel alınan dosya paylaşımlarının anlık görüntülerinin oluşturulmasını destekler.

  1. kubectl apply komutuyla birim anlık görüntüsü sınıfı oluşturun:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshotclass-azurefile.yaml
    

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

    volumesnapshotclass.snapshot.storage.k8s.io/csi-azurefile-vsc created
    
  2. Daha önce oluşturulan PVC'den birim anlık görüntüsü oluşturun (pvc-azurefile).

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/snapshot/volumesnapshot-azurefile.yaml
    

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

    volumesnapshot.snapshot.storage.k8s.io/azurefile-volume-snapshot created
    
  3. Aşağıdaki komutu çalıştırarak anlık görüntünün doğru oluşturulduğunu doğrulayın:

    kubectl describe volumesnapshot azurefile-volume-snapshot
    

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

    Name:         azurefile-volume-snapshot
    Namespace:    default
    Labels:       <none>
    Annotations:  API Version:  snapshot.storage.k8s.io/v1beta1
    Kind:         VolumeSnapshot
    Metadata:
      Creation Timestamp:  2020-08-27T22:37:41Z
      Finalizers:
        snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection
        snapshot.storage.kubernetes.io/volumesnapshot-bound-protection
      Generation:        1
      Resource Version:  955091
      Self Link:         /apis/snapshot.storage.k8s.io/v1beta1/namespaces/default/volumesnapshots/azurefile-volume-snapshot
      UID:               c359a38f-35c1-4fb1-9da9-2c06d35ca0f4
    Spec:
      Source:
        Persistent Volume Claim Name:  pvc-azurefile
      Volume Snapshot Class Name:      csi-azurefile-vsc
    Status:
      Bound Volume Snapshot Content Name:  snapcontent-c359a38f-35c1-4fb1-9da9-2c06d35ca0f4
      Ready To Use:                        false
    Events:                                <none>
    

Azure Files PV'sini yeniden boyutlandırma

PVC için daha büyük bir birim isteyebilirsiniz. PVC nesnesini düzenleyin ve daha büyük bir boyut belirtin. Bu değişiklik, PV'yi destekleyen temel birimin genişlemesini tetikler.

Uyarı

Talebi karşılamak için asla yeni bir PV oluşturulmaz. Bunun yerine, mevcut bir birim yeniden boyutlandırılır. Kalıcı birimleri küçültme şu anda desteklenmiyor.

AKS'de azurefile-csi yerleşik depolama sınıfı zaten genişletmeyi destekler, bu nedenle bu depolama sınıfıyla daha önce oluşturduğumuz PVC'yi kullanın. PVC, 100 GiB dosya paylaşımı istedi. Bunu şu şekilde çalıştırarak doğrulayabiliriz:

kubectl exec -it nginx-azurefile -- df -h /mnt/azurefile

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

Filesystem                                                                                Size  Used Avail Use% Mounted on
//f149b5a219bd34caeb07de9.file.core.windows.net/pvc-5e5d9980-da38-492b-8581-17e3cad01770  100G  128K  100G   1% /mnt/azurefile
  1. Alanı spec.resources.requests.storage artırarak PVC'yi genişletin.

    kubectl patch pvc pvc-azurefile --type merge --patch '{"spec": {"resources": {"requests": {"storage": "200Gi"}}}}'
    

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

    persistentvolumeclaim/pvc-azurefile patched
    
  2. Hem PVC'nin hem de pod içindeki dosya sisteminin yeni boyutu gösterdiğini doğrulayın:

    kubectl get pvc pvc-azurefile
    NAME            STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS    AGE
    pvc-azurefile   Bound    pvc-5e5d9980-da38-492b-8581-17e3cad01770   200Gi      RWX            azurefile-csi   64m
    
    kubectl exec -it nginx-azurefile -- df -h /mnt/azurefile
    Filesystem                                                                                Size  Used Avail Use% Mounted on
    //f149b5a219bd34caeb07de9.file.core.windows.net/pvc-5e5d9980-da38-492b-8581-17e3cad01770  200G  128K  200G   1% /mnt/azurefile
    

Özel Azure Dosyalar depolaması (özel uç nokta) ile PV kullanma

Azure Dosyalar kaynaklarınız özel bir uç noktayla korunuyorsa kendi depolama sınıfınızı oluşturmanız gerekir. Özel uç nokta IP adresini bağlantı dizesinin FQDN'sine çözümlemek için DNS ayarlarınızı yapılandırdığından emin olun.

Aşağıdaki parametreleri özelleştirin:

  • resourceGroup: Depolama hesabının dağıtıldığı kaynak grubu.

  • storageAccount: Depolama hesabı adı.

  • server: Depolama hesabının özel uç noktasının FQDN'sini.

  1. adlı private-azure-file-sc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimi dosyaya yapıştırın. Yerine <resourceGroup> ve <storageAccountName> değerlerini değiştirin. Örneğin:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: private-azurefile-csi
    provisioner: file.csi.azure.com
    allowVolumeExpansion: true
    parameters:
      resourceGroup: <resourceGroup>
      storageAccount: <storageAccountName>
      server: <storageAccountName>.file.core.windows.net
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777
      - file_mode=0777
      - uid=0
      - gid=0
      - 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
    
  2. komutunu kullanarak depolama sınıfını kubectl apply oluşturun:

    kubectl apply -f private-azure-file-sc.yaml
    

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

    storageclass.storage.k8s.io/private-azurefile-csi created
    
  3. adlı private-pvc.yamlbir dosya oluşturun ve aşağıdaki örnek bildirimi dosyaya yapıştırın:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: private-azurefile-pvc
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: private-azurefile-csi
      resources:
        requests:
          storage: 100Gi
    
  4. kubectl apply komutunu kullanarak PVC'yi oluşturun:

    kubectl apply -f private-pvc.yaml
    

Azure Dosyalar depolamaya erişmek için Yönetilen Kimlik kullanma (Önizleme)

Azure Dosyalar artık SMB erişimi için yönetilen kimlik tabanlı kimlik doğrulamasını destekliyor. Bu özellik sayesinde AKS'de çalışan uygulamalarınız depolama hesabı anahtarlarını veya kimlik bilgilerini depolamaya veya yönetmeye gerek kalmadan Azure Dosyalar paylaşımlarına güvenli bir şekilde erişebilir. Yönetilen kimlikler kolaylaştırılmış ve güvenli bir kimlik doğrulama mekanizması sağlayarak erişim yönetimini basitleştirir ve kimlik bilgilerinin açığa çıkarmasıyla ilişkili riski azaltır. Dinamik birim veya statik birim oluşturabilirsiniz.

Uyarı

AKS'de Azure Dosyaları için yönetilen kimlik desteği, Linux düğümlerinde AKS sürüm 1.34'den itibaren önizlemede kullanılabilir.

Dinamik olarak sağlanan birimlerde yönetilen kimliği etkinleştirmek için şu adımları izleyin:

  1. YaML dosyası kullanarak yönetilen kimlik etkinleştirilmiş bir depolama sınıfı oluşturun, örneğin aşağıdaki azurefile-csi-managed-identity.yaml örnek içerikle. mountWithManagedIdentity: "true" üzerinde parameters ayarlayın.

     apiVersion: storage.k8s.io/v1
     kind: StorageClass
     metadata:
       name: azurefile-csi
     provisioner: file.csi.azure.com
     parameters:
       resourceGroup: EXISTING_RESOURCE_GROUP_NAME   # optional, node resource group by default if it's not provided
       storageAccount: EXISTING_STORAGE_ACCOUNT_NAME # optional, a new account will be created if it's not provided
       mountWithManagedIdentity: "true"
       # optional, clientID of the managed identity, kubelet identity would be used by default if it's not provided
       clientID: "xxxxx-xxxx-xxx-xxx-xxxxxxx"
     reclaimPolicy: Delete
     volumeBindingMode: Immediate
     allowVolumeExpansion: true
     mountOptions:
      - dir_mode=0777  # modify this permission if you want to enhance the security
      - file_mode=0777
      - uid=0
      - gid=0
      - 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
    
  2. Aşağıdaki komutu çalıştırarak bu depolama sınıfını uygulayın:

    kubectl apply -f azurefile-csi-managed-identity.yaml
    
  3. Yeni depolama sınıfını kullanarak StatefulSet'inizi veya iş yükünüzü bu PVC'yi referans alan bir şekilde dağıtın ki birim, yönetilen kimlik doğrulaması kullanılarak sağlansın. PVC bildiriminizde storageClassName: azurefile-csi-managed-identity olarak ayarlayın. Örneğin:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: azurefile-managed-identity-pvc
    spec:
      accessModes:
       - ReadWriteMany
      storageClassName: azurefile-csi-managed-identity
      resources:
       requests:
        storage: 100Gi
    

Azure Dosyaları NFS hakkında bilgi edinin

Azure Dosyalar , NFS v4.1 protokollerini destekler. Azure Dosyalar için NFS sürüm 4.1 desteği, yüksek kullanılabilirlik ve dayanıklılık sağlayan, dağıtılmış bir dayanıklı depolama platformu üzerinde tamamen yönetilen bir NFS sistemi hizmeti sunar.

Bu seçenek, yerinde veri güncelleştirmeleri içeren rastgele erişim iş yükleri için iyileştirilmiştir ve tam POSIX dosya sistemi desteği sağlar. Bu bölümde, BIR AKS kümesinde Azure Dosya CSI sürücüsüyle NFS paylaşımlarının nasıl kullanılacağı gösterilmektedir.

Uyarı

Seçili sanal ağa erişime izin vermek yerine özel bir uç nokta kullanabilirsiniz.

Bu bölümde AKS ile Azure Files NFS 4.1 kullanırken performansı ve güvenliği en üst düzeye çıkarma işlemi açıklanmaktadır. Nasıl yapılacağını öğrenin:

  • NFS okuma ve yazma boyutu ayarlarını iyileştirme

  • NFS depolama sınıfı oluşturma ve yapılandırma

  • NFS ile desteklenen birimleri kullanan iş yüklerini dağıtın

  • AKS kümeniz ile Azure Dosyalar arasında hareket eden verileri korumak için Aktarımda Şifrelemeyi (EiT) etkinleştirin.

Bu bölümde, rsize (okuma boyutu) ve wsize (yazma boyutu) seçenekleriyle Azure Dosyalar CSI sürücüsüyle NFS performans ayarlama yaklaşımı hakkında bilgi sağlanır. rsize ve wsize seçenekleri bir NFS işleminin en büyük aktarım boyutunu ayarlar. rsize veya wsize bağlanma sırasında belirtilmezse, istemci ve sunucu ikisi tarafından desteklenen en büyük boyut üzerinde anlaşır. Şu anda hem Azure Dosyalar hem de modern Linux dağıtımları 1.048.576 bayt (1 MiB) kadar büyük okuma ve yazma boyutlarını desteklemektedir.

En iyi performans, verimli istemci-sunucu iletişiminin temelidir. Bağlama okuma ve yazma seçeneği boyutu değerlerini artırmak veya azaltmak NFS performansını artırabilir. İstemci ve sunucu arasında aktarılan okuma/yazma paketlerinin varsayılan boyutu NFS sürüm 2 için 8 KB, NFS sürüm 3 ve 4 için 32 KB'tır. Bu varsayılanlar çok büyük veya çok küçük olabilir. NFS okuma yanıtı ve yazma isteği için daha küçük paketler göndererek, rsize ve wsize değerlerini azaltmak, tıkanık bir ağda NFS performansını artırabilir. Ancak bu azaltma, ağ genelinde veri göndermek için gereken paket sayısını artırarak istemci ve sunucuda toplam ağ trafiğini ve CPU kullanımını artırabilir.

Verimli paket aktarımını sürdüren, verimliliği azaltmayan ve gecikme süresini artırmayan bir rsize ve wsize bulmak için test gerçekleştirmeniz önemlidir.

Örneğin, rsize ve wsize öğelerini en fazla 256-KiB olacak şekilde yapılandırmak için depolama sınıfında mountOptions aşağıdaki gibi yapılandırın:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: azurefile-csi-nfs
provisioner: file.csi.azure.com
allowVolumeExpansion: true
parameters:
  protocol: nfs
mountOptions:
  - nconnect=4
  - noresvport
  - actimeo=30
  - rsize=262144
  - wsize=262144

Diğer depolama sınıfı örnekleri

SMB paylaşımları için önerilen bağlama seçenekleri aşağıdaki depolama sınıfı örneğinde sağlanır:

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

Premium (SSD) dosya paylaşımları kullanıyorsanız ve iş yükünüz meta veriler yoğunsa, performansı artırmak için meta veri önbelleğe alma özelliğini kullanmak üzere kaydolın.

Daha fazla bilgi için bkz. SMB Azure dosya paylaşımları için performansı geliştirme.

Windows konteynerleri

Azure Dosyalar CSI sürücüsü, Windows düğümleri ve kapsayıcıları da destekler. Windows kapsayıcılarını kullanmak için Windows kapsayıcıları hızlı başlangıcını izleyerek bir Windows düğüm havuzu ekleyin.

  1. Windows düğüm havuzunuz olduktan sonra azurefile-csi gibi yerleşik depolama sınıflarını kullanın veya özel bir tane oluşturun. kubectl apply komutunu çalıştırarak zaman damgalarını bir dosyaya data.txt kaydeden örnek bir Windows tabanlı durum bilgisi olan küme dağıtabilirsiniz:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/azurefile-csi-driver/master/deploy/example/windows/statefulset.yaml
    

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

    statefulset.apps/busybox-azurefile created
    
  2. Aşağıdaki kubectl exec komutunu çalıştırarak birimin içeriğini doğrulayın:

    kubectl exec -it busybox-azurefile-0 -- cat c:\\mnt\\azurefile\\data.txt # on Linux or MacOS Bash
    kubectl exec -it busybox-azurefile-0 -- cat c:\mnt\azurefile\data.txt # on Windows Powershell or CMD
    

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

    2020-08-27 22:11:01Z
    2020-08-27 22:11:02Z
    2020-08-27 22:11:04Z
    (...)
    

Sonraki Adımlar