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 CLIaks-preview
, nezapomeňte rozšíření aktualizovat na nejnovější verzi volánímaz 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.
Poznámka:
Zmenšení trvalých svazků se nepodporuje.
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ě.
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
Vytvořte StatefulSet pomocí příkazu kubectl create:
kubectl create -f azure-blob-nfs-ss.yaml
Další kroky
- Informace o nastavení statického nebo dynamického trvalého svazku najdete v tématu Vytvoření a použití svazku se službou Azure Blob Storage.
- Informace o použití ovladače CSI pro disky Azure najdete v tématu Použití disků Azure s ovladačem CSI.
- Informace o použití ovladače CSI pro Soubory Azure najdete v tématu Použití služby Soubory Azure s ovladačem CSI.
- Další informace o osvědčených postupech úložiště najdete v tématu Osvědčené postupy pro ukládání a zálohování ve službě Azure Kubernetes Service.
Azure Kubernetes Service