Az Azure Blob Storage Container Storage Interface (CSI) illesztőprogram használata

Az Azure Blob Storage Container Storage Interface (CSI) illesztő az Azure Kubernetes Service (AKS) által az Azure Blob Storage életciklusának kezeléséhez használt CSI specifikációnak megfelelő illesztőprogram. A CSI egy szabvány, amely tetszőleges blokk- és fájltároló rendszereket tár fel a Kubernetes tárolóalapú számítási feladatai számára.

A CSI alkalmazásával és használatával az AKS mostantól képes beépülő modulok írására, üzembe helyezésére és iterálására a Kubernetes új vagy meglévő tárolórendszereinek elérhetővé tételéhez. A CSI-illesztőprogramok használata az AKS-ben elkerüli, hogy megérintse az alapvető Kubernetes-kódot, és várja meg a kiadási ciklusokat.

Amikor az Azure Blob Storage-t fájlrendszerként csatlakoztatja egy tárolóhoz vagy podhoz, az lehetővé teszi a Blob Storage használatát számos olyan alkalmazással, amelyek nagy mennyiségű strukturálatlan adatot dolgoznak fel. Például:

  • Naplófájladatok
  • Képek, dokumentumok és video- vagy hangstreamelés
  • Vészhelyreállítási adatok

Az objektumtároló adatai a BlobFuse vagy a Network File System (NFS) 3.0 protokoll használatával érhetők el. Az Azure Blob Storage CSI-illesztőprogram bevezetése előtt az egyetlen lehetőség az volt, hogy manuálisan telepítsen egy nem támogatott illesztőprogramot, hogy hozzáférjen a Blob Storage-hoz az AKS-en futó alkalmazásból. Ha az Azure Blob Storage CSI-illesztőprogram engedélyezve van az AKS-ben, két beépített tárolási osztály létezik: az azureblob-fuse-premium és az azureblob-nfs-premium.

A CSI-illesztőprogramok támogatásával rendelkező AKS-fürt létrehozásához tekintse meg az AKS CSI-illesztőprogramjait. Ha többet szeretne megtudni az egyes Azure-tártípusok NFS protokollal való hozzáférésének különbségeiről, olvassa el az Azure Files, a Blob Storage és az Azure NetApp Files és az NFS közötti hozzáférés összehasonlítása című témakört.

Az Azure Blob Storage CSI illesztőprogram-funkciói

Az Azure Blob Storage CSI-illesztőprogramja a következő funkciókat támogatja:

  • BlobFuse és Hálózati fájlrendszer (NFS) 3.0-s verziójú protokoll

Előkészületek

  • Telepítenie és konfigurálnia kell az Azure CLI 2.42-es vagy újabb verzióját. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.

  • Ha korábban telepítette a CSI Blob Storage nyílt forráskódú illesztőt, végezze el a hivatkozás lépéseit az Azure Blob Storage fürtről való eléréséhez.

Megjegyzés:

Ha a blobfuse-proxy nincs engedélyezve a nyílt forráskód illesztőprogram telepítése során, a nyílt forráskód illesztőprogram eltávolítása megzavarja a meglévő blobfuse-csatlakoztatásokat. Az NFS-csatlakoztatások azonban változatlanok maradnak.

CSI-illesztőprogram engedélyezése új vagy meglévő AKS-fürtön

Az Azure CLI használatával engedélyezheti a Blob Storage CSI-illesztőprogramot egy új vagy meglévő AKS-fürtön, mielőtt konfigurálhat egy állandó kötetet a fürt podjai számára.

Ha engedélyezni szeretné az illesztőprogramot egy új fürtön, adja meg a --enable-blob-driver paramétert a parancshoz az az aks create alábbi példában látható módon:

az aks create --enable-blob-driver -n myAKSCluster -g myResourceGroup

Az illesztőprogram meglévő fürtön való engedélyezéséhez adja meg a --enable-blob-driver paramétert a az aks update következő példában látható paranccsal:

az aks update --enable-blob-driver -n myAKSCluster -g myResourceGroup

A rendszer kéri, hogy győződjön meg arról, hogy nincs telepítve nyílt forráskódú Blob CSI-illesztőprogram. A megerősítés után a művelet végrehajtása több percet is igénybe vehet. Ha elkészült, a kimenetben látnia kell az illesztőprogram fürtön való engedélyezésének állapotát. Az alábbi példa az előző parancs eredményeit jelző szakaszra hasonlít:

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

CSI-illesztőprogram letiltása meglévő AKS-fürtön

Az Azure CLI használatával letilthatja a Blob Storage CSI-illesztőprogramot egy meglévő AKS-fürtön, miután eltávolította az állandó kötetet a fürtből.

Ha le szeretné tiltani az illesztőprogramot egy meglévő fürtön, adja meg a --disable-blob-driver paramétert a parancshoz az az aks update alábbi példában látható módon:

az aks update --disable-blob-driver -n myAKSCluster -g myResourceGroup

Állandó kötet használata az Azure Blob Storage használatával

Az állandó kötet (PV) egy tárterületet jelöl, amely a Kubernetes-podokkal való használatra van kiépítve. A PV-t egy vagy több pod is használhatja, és dinamikusan vagy statikusan kiépítheti. Ha több podnak egyszerre kell hozzáférnie ugyanahhoz a tárkötethez, az Azure Blob Storage használatával csatlakozhat a hálózati fájlrendszer (NFS) vagy a blobfüzérek használatával. Ez a cikk bemutatja, hogyan hozhat létre dinamikusan egy Azure Blob Storage-tárolót egy AKS-fürt több podja számára.

A Kubernetes-kötetekkel kapcsolatos további információkért tekintse meg az AKS-alkalmazások tárolási lehetőségeit.

Azure Blob Storage-beli virtuális gépek dinamikus létrehozása a beépített tárolási osztályok használatával

A tárolóosztály az Azure Blob Storage-tároló létrehozásának módját határozza meg. A rendszer automatikusan létrehoz egy tárfiókot a csomópont erőforráscsoportjában az Azure Blob Storage-tároló tárolására szolgáló tárosztály használatával. Válasszon az alábbi Azure Storage-redundancia termékváltozatok közül az skuName-hoz:

  • Standard_LRS: Standard helyileg redundáns tárolás
  • Premium_LRS: Helyileg redundáns prémium szintű tárolás
  • Standard_ZRS: Standard zónaredundáns tárolás
  • Premium_ZRS: Prémium zónaredundáns tárolás
  • Standard_GRS: Standard georedundáns tárolás
  • Standard_RAGRS: Szabványos olvasási hozzáférésű georedundáns tárolás

Ha tárolóCSI-illesztőprogramokat használ az AKS-en, két további beépített StorageClasses is található, amelyek az Azure Blob CSI storage-illesztőprogramot használják.

A mindkét tárolási osztályra vonatkozó visszaigénylési szabályzat biztosítja, hogy az alapul szolgáló Azure Blob Storage törlődik a megfelelő PV törlésekor. A tárolóosztályok alapértelmezés szerint bővíthetőnek is konfigurálják a tárolót, mivel a set allowVolumeExpansion paraméter értéke igaz.

A tárosztályok megtekintéséhez használja a kubectl get sc parancsot. Az alábbi példa az azureblob-fuse-premium AKS-fürtön elérhető tárolási osztályokat azureblob-nfs-premium mutatja be:

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

Ezeknek a tárolási osztályoknak a használatához hozzon létre egy PVC-t és a megfelelő podot, amely hivatkozik és használja őket. A PVC használatával automatikusan kiépíteni a tárolót egy tárolási osztály alapján. A PVC az egyik előre létrehozott tárolási osztályt vagy felhasználó által definiált tárolási osztályt használhat egy Azure Blob Storage-tároló létrehozásához a kívánt termékváltozathoz, mérethez és protokollhoz a kommunikációhoz. Poddefiníció létrehozásakor a PVC meg van adva a kívánt tároló kéréséhez.

StatefulSet használata

Ha meg szeretné őrizni a tárterületet a számítási feladathoz, használhat StatefulSetet. Ez megkönnyíti a meglévő kötetek egyezését olyan új podokkal, amelyek lecserélik a sikertelen köteteket. Az alábbi példák bemutatják, hogyan állíthat be StatefulSetet Blob Storage-hoz a Blobfuse vagy az NFS protokoll használatával.

Előfeltételek

  • Az AKS-fürt vezérlősíkjának identitása (vagyis az AKS-fürt neve) hozzá lesz adva a közreműködői szerepkörhöz a virtuális hálózat és a hálózati biztonsági csoporton.
  1. Hozzon létre egy fájlt, azure-blob-nfs-ss.yaml és másolja a következő YAML-fájlba.

    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.19.5
              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. Hozza létre a StatefulSetet a kubectl create paranccsal:

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

További lépések

  • A statikus vagy dinamikus állandó kötetek beállításáról az Azure Blob Storage-kötetek létrehozása és használata című témakörben olvashat.
  • Ha tudni szeretné, hogyan használhatja a CSI-illesztőprogramot az Azure Diskshez, olvassa el az Azure Disks használata CSI-illesztőprogrammal című témakört .
  • Ha tudni szeretné, hogyan használhatja a CSI-illesztőprogramot az Azure Fileshoz, olvassa el az Azure Files használata CSI-illesztőprogrammal című témakört .
  • A tárolási ajánlott eljárásokról további információt az Azure Kubernetes Service tárolási és biztonsági mentési ajánlott eljárásaiban talál.