Sdílet prostřednictvím


Použití ovladače azure Blob Storage Container Storage Interface (CSI)

Ovladač rozhraní CSI (Container Storage Interface) služby Azure Blob Storage je ovladač kompatibilní se specifikací CSI používaný službou Azure Kubernetes Service (AKS) ke správě životního cyklu služby Azure Blob Storage. CsI je standard pro zveřejnění libovolných systémů blokového a souborového úložiště pro kontejnerizované úlohy v Kubernetes.

Díky přijetí a používání csI teď může AKS psát, nasazovat a iterovat moduly plug-in, aby zpřístupnil nové nebo vylepšené existující systémy úložiště v Kubernetes. Použití ovladačů CSI v AKS se vyhne tomu, že se nebudete muset dotýkat základního kódu Kubernetes a čekat na jeho cykly vydávání.

Když azure Blob Storage připojíte jako systém souborů do kontejneru nebo podu, můžete použít úložiště objektů blob s řadou aplikací, které pracují s velkým množstvím nestrukturovaných dat. Příklad:

  • Data souboru protokolu
  • Obrázky, dokumenty a streamování videa nebo zvuku
  • Data zotavení po havárii

K datům v úložišti objektů můžou přistupovat aplikace pomocí protokolu BlobFuse nebo NFS (Network File System) 3.0. Před zavedením ovladače CSI služby Azure Blob Storage bylo jedinou možností ruční instalace nepodporovaného ovladače pro přístup k úložišti objektů blob z vaší aplikace spuštěné v AKS. Pokud je v AKS povolený ovladač CSI služby Azure Blob Storage, existují dvě integrované třídy úložiště: azureblob-fuse-premium a azureblob-nfs-premium.

Pokud chcete vytvořit cluster AKS s podporou ovladačů CSI, podívejte se na ovladače CSI v AKS. Další informace o rozdílech v přístupu mezi jednotlivými typy úložiště Azure pomocí protokolu NFS najdete v tématu Porovnání přístupu ke službě Soubory Azure, Blob Storage a Azure NetApp Files s NFS.

Funkce ovladače CSI služby Azure Blob Storage

Ovladač CSI služby Azure Blob Storage podporuje následující funkce:

  • Protokol NFS (BlobFuse a Network File System) verze 3.0

Než začnete

  • Ujistěte se, že máte nainstalované a nakonfigurované Rozhraní příkazového řádku Azure CLI verze 2.42 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. Pokud jste nainstalovali rozšíření Azure CLI aks-preview , nezapomeňte rozšíření aktualizovat na nejnovější verzi voláním az extension update --name aks-preview.

  • Pokud jste dříve nainstalovali opensourcový ovladač CSI Blob Storage pro přístup ke službě Azure Blob Storage z clusteru, proveďte kroky v tomto odkazu.

Poznámka:

Pokud během instalace opensourcového ovladače není povolený objekt blobfuse-proxy, odinstalace opensourcového ovladače naruší stávající připojení objektů blobfuse. Připojení systému souborů NFS ale zůstanou nedotčená.

Povolení ovladače CSI v novém nebo existujícím clusteru AKS

Pomocí Azure CLI můžete povolit ovladač CSI úložiště objektů blob v novém nebo existujícím clusteru AKS před konfigurací trvalého svazku pro použití pody v clusteru.

Pokud chcete povolit ovladač v novém clusteru, zahrňte --enable-blob-driver parametr s příkazem az aks create , jak je znázorněno v následujícím příkladu:

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

Pokud chcete povolit ovladač v existujícím clusteru, zahrňte --enable-blob-driver parametr s příkazem az aks update , jak je znázorněno v následujícím příkladu:

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

Zobrazí se výzva k potvrzení, že není nainstalovaný opensourcový ovladač CSI objektu blob. Po potvrzení může dokončení této akce trvat několik minut. Po dokončení by se měl zobrazit ve výstupu stav povolení ovladače v clusteru. Následující příklad se podobá části označující výsledky předchozího příkazu:

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

Zakázání ovladače CSI v existujícím clusteru AKS

Pomocí Azure CLI můžete po odebrání trvalého svazku z clusteru zakázat ovladač CSI služby Blob Storage v existujícím clusteru AKS.

Pokud chcete zakázat ovladač v existujícím clusteru, zahrňte --disable-blob-driver parametr s příkazem az aks update , jak je znázorněno v následujícím příkladu:

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

Použití trvalého svazku se službou Azure Blob Storage

Trvalý svazek (PV) představuje část úložiště zřízenou pro použití s pody Kubernetes. Pv může používat jeden nebo více podů a může být dynamicky nebo staticky zřízen. Pokud více podů potřebuje souběžný přístup ke stejnému svazku úložiště, můžete se pomocí služby Azure Blob Storage připojit pomocí systému souborů NFS (Network File System) nebo blobfuse. V tomto článku se dozvíte, jak dynamicky vytvořit kontejner úložiště objektů blob v Azure pro použití několika pody v clusteru AKS.

Další informace o svazcích Kubernetes najdete v tématu Možnosti úložiště pro aplikace v AKS.

Dynamické vytváření virtuálních počítačů azure Blob Storage pomocí předdefinovaných tříd úložiště

Třída úložiště slouží k definování způsobu vytvoření kontejneru úložiště objektů blob v Azure. Účet úložiště se automaticky vytvoří ve skupině prostředků uzlu pro použití s třídou úložiště pro uložení kontejneru azure Blob Storage. Jako SKUName zvolte jednu z následujících skladových položek úložiště Azure Storage:

  • Standard_LRS: Místně redundantní úložiště úrovně Standard
  • Premium_LRS: Místně redundantní úložiště Úrovně Premium
  • Standard_ZRS: Zónově redundantní úložiště úrovně Standard
  • Premium_ZRS: Zónově redundantní úložiště úrovně Premium
  • Standard_GRS: Standardní geograficky redundantní úložiště
  • Standard_RAGRS: Geograficky redundantní úložiště s přístupem pro čtení úrovně Standard

Při použití ovladačů CSI úložiště v AKS existují dvě další integrované třídy StorageClasses, které používají ovladač úložiště CSI objektů blob v Azure.

Zásady uvolnění prostředků v obou třídách úložiště zajišťují, že se základní úložiště objektů blob v Azure odstraní při odstranění příslušné pv. Třídy úložiště také nakonfigurují kontejner tak, aby byl ve výchozím nastavení rozšiřitelný, protože set allowVolumeExpansion parametr je nastaven na hodnotu true.

Pomocí příkazu kubectl get sc zobrazte třídy úložiště. Následující příklad ukazuje azureblob-fuse-premium třídy úložiště dostupné azureblob-nfs-premium v clusteru AKS:

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

Chcete-li tyto třídy úložiště použít, vytvořte PVC a odpovídající pod, který odkazuje a používá je. PVC se používá k automatickému zřizování úložiště na základě třídy úložiště. PVC může použít jednu z předem vytvořených tříd úložiště nebo uživatelem definovanou třídu úložiště k vytvoření kontejneru úložiště Objektů blob v Azure pro požadovanou skladovou položku, velikost a protokol pro komunikaci s ním. Při vytváření definice podu je pvc určen k vyžádání požadovaného úložiště.

Použití stavové sady

Pokud chcete, aby byl svazek úložiště pro vaši úlohu trvalý, můžete použít StatefulSet. To usnadňuje porovnávání existujících svazků s novými pody, které nahradily všechny neúspěšné svazky. Následující příklady ukazují, jak nastavit StatefulSet pro úložiště objektů blob pomocí blobfuse nebo protokolu NFS.

Požadavky

  • Identita řídicí roviny clusteru AKS (tj. název clusteru AKS) se přidá do role Přispěvatel ve virtuální síti a skupině zabezpečení sítě.
  1. Vytvořte soubor s názvem azure-blob-nfs-ss.yaml a zkopírujte ho v následujícím jazyce YAML.

    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. Vytvořte StatefulSet pomocí příkazu kubectl create:

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

Další kroky