Aracılığıyla paylaş


Azure Blob depolama Kapsayıcı Depolama Arabirimi (CSI) sürücüsünü kullanma

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 kapsayıcılı iş yüklerine rastgele blok ve dosya depolama sistemlerinin kullanıma sunar.

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 miktarda yapılandırılmamış veri çalıştıran bir dizi 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

Nesne depolama alanındaki verilere BlobFuse veya Ağ Dosya Sistemi (NFS) 3.0 protokolü kullanılarak uygulamalar tarafından erişilebilir. 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 ve azureblob-nfs-premium.

CSI sürücüleri desteğine sahip bir AKS kümesi oluşturmak için bkz . AKS üzerinde CSI sürücüleri. 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 Blob depolama CSI sürücü özellikleri

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

  • BlobFuse ve Ağ Dosya Sistemi (NFS) sürüm 3.0 protokolü

Başlamadan önce

  • Azure CLI 2.42 veya sonraki bir sürümünün 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. 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 daha önce CSI Blob Depolama açık kaynak sürücüsünü yüklediyseniz bu bağlantıdaki adımları gerçekleştirin.

Not

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

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.

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

az aks create \
    --enable-blob-driver \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --generate-ssh-keys

Sürücüyü mevcut bir kümede etkinleştirmek için aşağıdaki örnekte gösterildiği gibi parametresini az aks update komutuna ekleyin--enable-blob-driver:

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.

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

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

Azure Blob depolama ile kalıcı birim kullanma

Kalıcı birim (PV), Kubernetes podlarıyla kullanılmak üzere sağlanan bir depolama parçasını temsil eder. Pv, bir veya birden çok pod tarafından kullanılabilir ve dinamik veya statik olarak sağlanabilir. Aynı depolama birimine birden çok pod için eşzamanlı erişim gerekiyorsa, Ağ Dosya Sistemi (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.

Yerleşik depolama sınıflarını kullanarak Azure Blob depolama VM'lerini dinamik olarak 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:

  • 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 ek yerleşik StorageClass vardır.

Her iki depolama sınıfındaki geri kazanma 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.

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 sağlamak için kullanılır. PVC, önceden oluşturulmuş depolama sınıflarından birini veya kullanıcı tanımlı bir depolama sınıfını kullanarak istenen SKU, boyut ve protokol için bir Azure Blob depolama kapsayıcısı oluşturabilir. Pod tanımı oluşturduğunuzda, istenen depolamayı istemek için PVC belirtilir.

StatefulSet Kullanma

İş yükünüz için bir depolama biriminin kalıcı olmasını sağlamak için StatefulSet kullanabilirsiniz. Bu, mevcut birimleri, başarısız olan birimlerin yerini alan yeni Pod'larla eşleştirmeyi kolaylaştırır. Aşağıdaki örneklerde Blobfuse veya NFS protokolü kullanılarak Blob depolama için StatefulSet'in nasıl ayarlanacağı gösterilmektedir.

Önkoşullar

  • 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.
  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/oss/nginx/nginx:1.22
              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 komutuyla StatefulSet oluşturun:

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

Sonraki adımlar