Verwenden des CSI-Treibers (Container Storage Interface) für Azure Blob Storage
Der CSI-Treiber (Container Storage Interface) für Azure Blob Storage ist ein mit der CSI-Spezifikation konformer Treiber, mit dem Azure Kubernetes Service (AKS) den Lebenszyklus von Azure Blob Storage verwaltet. CSI ist ein Standard für die Bereitstellung beliebiger Block- und Dateispeichersysteme für containerisierte Workloads in Kubernetes.
Durch die Einführung und Verwendung von CSI kann AKS nun Plug-Ins schreiben, bereitstellen und durchlaufen, um neue Speichersysteme in Kubernetes verfügbar zu machen oder vorhandene Speichersysteme in Kubernetes zu verbessern. Bei Verwendung von CSI-Treibern in AKS muss weder der Kerncode von Kubernetes geändert noch auf dessen Releasezyklen gewartet werden.
Wenn Sie Azure-Blobspeicher als Dateisystem in einen Container oder Pod einbinden, können Sie Blobspeicher mit einer Reihe von Anwendungen verwenden, die sehr große Mengen unstrukturierter Daten verarbeiten. Beispiel:
- Protokolldateidaten
- Bilder, Dokumente und Streaming von Video oder Audio
- Notfallwiederherstellungsdaten
Auf die Daten im Objektspeicher können Anwendungen mithilfe des BlobFuse- oder NFS 3.0-Protokolls (Network File System) zugreifen. Vor Einführung des CSI-Treibers für Azure Blob Storage bestand die einzige Möglichkeit darin, einen nicht unterstützten Treiber manuell zu installieren, um in Ihrer in AKS ausgeführten Anwendung auf Blob Storage zugreifen zu können. Wenn der CSI-Treiber für Azure Blob Storage für AKS aktiviert ist, gibt es zwei integrierte Speicherklassen: azureblob-fuse-premium und azureblob-nfs-premium.
Informationen zum Erstellen eines AKS-Clusters mit CSI-Treiberunterstützung finden Sie unter CSI-Treiber in AKS. Weitere Informationen zu den Unterschieden beim Zugriff auf die einzelnen Azure-Speichertypen mithilfe des NFS-Protokolls finden Sie unter Vergleich des Zugriffs auf Azure Files, Azure Blob Storage und Azure NetApp Files mit NFS.
Features des CSI-Treibers für Azure Blob Storage
Der CSI-Treiber für Azure Blob Storage unterstützt die folgenden Features:
- BlobFuse- und NFS-Protokoll (Network File System), Version 3.0
Voraussetzungen
Stellen Sie sicher, dass Version 2.42 oder höher der Azure CLI installiert und konfiguriert ist. Führen Sie
az --version
aus, um die Version zu ermitteln. Informationen zum Durchführen einer Installation oder eines Upgrades finden Sie bei Bedarf unter Installieren der Azure CLI. Wenn Sie die Azure CLI-Erweiterungaks-preview
installiert haben, achten Sie darauf, die Erweiterung durch Aufrufen vonaz extension update --name aks-preview
auf die neueste Version zu aktualisieren.Führen Sie die in diesem Link genannten Schritte aus, wenn Sie zuvor den Open-Source-CSI-Treiber für Blobspeicher für den Zugriff auf Azure-Blobspeicher von Ihrem Cluster aus installiert haben.
Hinweis
Wenn der Blobfuse-Proxy bei der Installation des Open-Source-Treibers nicht aktiviert ist, werden bei der Deinstallation des Open-Source-Treibers bestehende Blobfuse-Einhängungen unterbrochen. NFS-Einbindungen bleiben davon jedoch unberührt.
Aktivieren des CSI-Treibers auf einem neuen oder bestehenden AKS-Cluster
Mithilfe der Azure CLI können Sie den CSI-Treiber für Blob Storage für einen neuen oder bestehenden AKS-Cluster aktivieren, bevor Sie ein persistentes Volume zur Verwendung durch Pods im Cluster konfigurieren.
Um den Treiber auf einem neuen Cluster zu aktivieren, beziehen Sie den Parameter --enable-blob-driver
mit dem Befehl az aks create
ein, wie im folgenden Beispiel gezeigt:
az aks create \
--enable-blob-driver \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
Um den Treiber auf einem vorhandenen Cluster zu aktivieren, beziehen Sie den Parameter --enable-blob-driver
mit dem Befehl az aks update
ein, wie im folgenden Beispiel gezeigt:
az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Sie werden aufgefordert, zu bestätigen, dass kein Open-Source-CSI-Treiber für Blobspeicher installiert ist. Nach Ihrer Bestätigung kann es einige Minuten dauern, bis diese Aktion abgeschlossen ist. Sobald der Vorgang abgeschlossen ist, sollten Sie in der Ausgabe den Status der Aktivierung des Treibers auf Ihrem Cluster sehen. Das folgende Beispiel ähnelt dem Abschnitt, der die Ergebnisse des vorherigen Befehls anzeigt:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Deaktivieren des CSI-Treibers auf einem vorhandenen AKS-Cluster
Mithilfe der Azure CLI können Sie den CSI-Treiber für Blobspeicher auf einem vorhandenen AKS-Cluster deaktivieren, nachdem Sie das persistente Volume aus dem Cluster entfernt haben.
Um den Treiber auf einem vorhandenen Cluster zu deaktivieren, beziehen Sie den Parameter --disable-blob-driver
mit dem Befehl az aks update
ein, wie im folgenden Beispiel gezeigt:
az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Verwenden eines persistenten Volumes mit Azure-Blobspeicher
Ein persistentes Volume (PV) stellt ein Speicherelement dar, das für die Verwendung mit Kubernetes-Pods bereitgestellt wurde. Ein persistentes Volume kann von einem oder mehreren Pods verwendet und dynamisch oder statisch bereitgestellt werden. Wenn mehrere Pods gleichzeitigen Zugriff auf dasselbe Speichervolume benötigen, können Sie Azure-Blobspeicher verwenden, um die Verbindung mithilfe des Network File System (NFS) oder blobfuse herzustellen. In diesem Artikel wird gezeigt, wie Sie dynamisch einen Azure-Blobspeichercontainer erstellen, der von mehreren Pods in einem AKS-Cluster verwendet werden kann.
Weitere Informationen zu Kubernetes-Volumes finden Sie unter Speicheroptionen für Anwendungen in AKS.
Dynamisches Erstellen von Azure-Blobspeicher-PVs mithilfe der integrierten Speicherklassen
Eine Speicherklasse wird verwendet, um zu definieren, wie ein Azure-Blobspeichercontainer erstellt wird. In der Knotenressourcengruppe wird automatisch ein Speicherkonto erstellt, das mit der Speicherklasse verwendet wird, um den Azure-Blobspeichercontainer aufzunehmen. Wählen Sie für skuName eine der folgenden Azure-Speicherredundanz-SKUs aus:
- Standard_LRS: Standard – lokal redundanter Speicher
- Premium_LRS: Premium – lokal redundanter Speicher
- Standard_ZRS: zonenredundanter Standardspeicher
- Premium_ZRS: zonenredundanter Premiumspeicher
- Standard_GRS: Standard – georedundanter Speicher
- Standard_RAGRS: Standard – georedundanter Speicher mit Lesezugriff
Wenn Sie CSI-Treiber für Speicher in AKS verwenden, gibt es zwei zusätzliche integrierte Speicherklassen, die den CSI-Treiber für Azure Blob Storage verwenden.
Die Freigaberichtlinie für beide Speicherklassen stellt sicher, dass beim Löschen eines persistenten Volumes auch der zugrunde liegende Azure-Blobspeicher gelöscht wird. Die Speicherklassen konfigurieren den Container auch so, dass er standardmäßig erweiterbar ist, da der Parameter set allowVolumeExpansion
auf true festgelegt ist.
Hinweis
Das Verkleinern persistenter Volumes wird nicht unterstützt.
Mit dem Befehl kubectl get sc können Sie die Speicherklassen anzeigen. Im folgenden Beispiel werden die in einem AKS-Cluster verfügbaren Speicherklassen azureblob-fuse-premium
und azureblob-nfs-premium
angezeigt:
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
Um diese Speicherklassen zu verwenden, erstellen Sie einen PVC und den entsprechenden Pod, der auf diesen verweist und ihn verwendet. Ein Anspruch auf ein persistentes Volume wird verwendet, um basierend auf einer Speicherklasse automatisch Speicher bereitzustellen. Ein PVC kann eine der vordefinierten Speicherklassen oder eine benutzerdefinierte Speicherklasse verwenden, um einen Azure-Blobspeichercontainer für die gewünschte SKU, Größe und das Protokoll zur Kommunikation mit ihm zu erstellen. Wenn Sie eine Poddefinition erstellen, wird der Anspruch auf ein persistentes Volume angegeben, um den gewünschten Speicher anzufordern.
Verwenden von StatefulSet
Sie können ein StatefulSet verwenden, um ein Speichervolumen für Ihre Workload beizubehalten. Dies erleichtert die Zuordnung vorhandener Volumes zu neuen Pods, die fehlerhafte Volumes ersetzen. Die folgenden Beispiele zeigen, wie Sie ein StatefulSet für Blobspeicher mithilfe von Blobfuse oder dem NFS-Protokoll festlegen.
Voraussetzungen
- Ihre Identität auf Steuerungsebene für den AKS-Cluster (also Ihr AKS-Clustername) wird der Rolle Mitwirkender für VNet und die Netzwerksicherheitsgruppe hinzugefügt.
Erstellen Sie eine Datei namens „
azure-blob-nfs-ss.yaml
“, und fügen Sie den folgenden YAML-Code ein.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
Erstellen Sie das StatefulSet mit dem Befehl „kubectl create“:
kubectl create -f azure-blob-nfs-ss.yaml
Nächste Schritte
- Informationen zum Einrichten eines statischen oder dynamischen persistenten Volume finden Sie unter Erstellen und Verwenden eines Volume mit Azure-Blobspeicher.
- Informationen zu CSI-Treibern für Azure-Datenträger finden Sie unter Verwenden des CSI-Treibers (Container Storage Interface) für Azure-Datenträger in Azure Kubernetes Service (AKS).
- Informationen zum CSI-Treiber für Azure Files finden Sie unter Verwenden von Container Storage Interface-Treibern (CSI) von Azure Files in Azure Kubernetes Service (AKS).
- Weitere Informationen zu bewährten Methoden bei der Speicherung finden Sie unter Best Practices für Speicherung und Sicherungen in Azure Kubernetes Service (AKS).
Azure Kubernetes Service