Använda CSI-drivrutin (Azure Blob Storage Container Storage Interface)
Drivrutinen för Azure Blob Storage Container Storage Interface (CSI) är en CSI-specifikationskompatibel drivrutin som används av Azure Kubernetes Service (AKS) för att hantera livscykeln för Azure Blob Storage. CSI är en standard för att exponera godtyckliga block- och fillagringssystem för containerbaserade arbetsbelastningar på Kubernetes.
Genom att implementera och använda CSI kan AKS nu skriva, distribuera och iterera plugin-program för att exponera nya eller förbättra befintliga lagringssystem i Kubernetes. Att använda CSI-drivrutiner i AKS undviker att behöva röra kubernetes-kärnkoden och vänta på dess lanseringscykler.
När du monterar Azure Blob Storage som ett filsystem i en container eller podd kan du använda bloblagring med ett antal program som arbetar med enorma mängder ostrukturerade data. Till exempel:
- Loggfilsdata
- Bilder, dokument och strömmande video eller ljud
- Haveriberedskapsdata
Data på objektlagringen kan nås av program med hjälp av BlobFuse- eller NFS-protokollet (Network File System) 3.0. Före introduktionen av CSI-drivrutinen för Azure Blob Storage var det enda alternativet att manuellt installera en drivrutin som inte stöds för åtkomst till Blob Storage från ditt program som körs på AKS. När CSI-drivrutinen för Azure Blob Storage är aktiverad i AKS finns det två inbyggda lagringsklasser: azureblob-fuse-premium och azureblob-nfs-premium.
Information om hur du skapar ett AKS-kluster med stöd för CSI-drivrutiner finns i CSI-drivrutiner på AKS. Mer information om skillnaderna i åtkomst mellan var och en av Azure-lagringstyperna med hjälp av NFS-protokollet finns i Jämför åtkomst till Azure Files, Blob Storage och Azure NetApp Files med NFS.
CSI-drivrutinsfunktioner för Azure Blob Storage
CSI-drivrutinen för Azure Blob Storage stöder följande funktioner:
- BlobFuse- och NFS-protokoll (Network File System) version 3.0
Innan du börjar
Kontrollera att Azure CLI version 2.42 eller senare har installerats och konfigurerats. Kör
az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI. Om du har installerat Azure CLI-tilläggetaks-preview
kontrollerar du att du uppdaterar tillägget till den senaste versionen genom att anropaaz extension update --name aks-preview
.Utför stegen i den här länken om du tidigare har installerat drivrutinen för CSI Blob Storage med öppen källkod för åtkomst till Azure Blob Storage från klustret.
Kommentar
Om blobfuse-proxy inte är aktiverad under installationen av drivrutinen för öppen källkod stör avinstallationen av öppen källkod drivrutinen befintliga blobfuse-monteringar. NFS-monteringar påverkas dock inte.
Aktivera CSI-drivrutin i ett nytt eller befintligt AKS-kluster
Med Hjälp av Azure CLI kan du aktivera CSI-drivrutinen för Blob Storage i ett nytt eller befintligt AKS-kluster innan du konfigurerar en beständig volym för användning av poddar i klustret.
Om du vill aktivera drivrutinen i ett nytt kluster tar du med parametern --enable-blob-driver
med az aks create
kommandot enligt följande exempel:
az aks create \
--enable-blob-driver \
--name myAKSCluster \
--resource-group myResourceGroup \
--generate-ssh-keys
Om du vill aktivera drivrutinen i ett befintligt kluster inkluderar du parametern --enable-blob-driver
az aks update
med kommandot enligt följande exempel:
az aks update --enable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Du uppmanas att bekräfta att det inte finns någon blob-CSI-drivrutin med öppen källkod installerad. När du har bekräftat kan det ta flera minuter att slutföra den här åtgärden. När den är klar bör du i utdata se statusen för att aktivera drivrutinen i klustret. Följande exempel liknar avsnittet som anger resultatet av föregående kommando:
"storageProfile": {
"blobCsiDriver": {
"enabled": true
},
Inaktivera CSI-drivrutin i ett befintligt AKS-kluster
Med Hjälp av Azure CLI kan du inaktivera CSI-drivrutinen för Blob Storage i ett befintligt AKS-kluster när du tar bort den beständiga volymen från klustret.
Om du vill inaktivera drivrutinen i ett befintligt kluster tar du med parametern --disable-blob-driver
az aks update
med kommandot enligt följande exempel:
az aks update --disable-blob-driver --name myAKSCluster --resource-group myResourceGroup
Använda en beständig volym med Azure Blob Storage
En beständig volym (PV) representerar en lagringsdel som har etablerats för användning med Kubernetes-poddar. En PV kan användas av en eller flera poddar och kan etableras dynamiskt eller statiskt. Om flera poddar behöver samtidig åtkomst till samma lagringsvolym kan du använda Azure Blob Storage för att ansluta med hjälp av NFS (Network File System) eller blobfuse. Den här artikeln visar hur du dynamiskt skapar en Azure Blob Storage-container för användning av flera poddar i ett AKS-kluster.
Mer information om Kubernetes-volymer finns i Lagringsalternativ för program i AKS.
Skapa azure bloblagrings-PV:er dynamiskt med hjälp av de inbyggda lagringsklasserna
En lagringsklass används för att definiera hur en Azure Blob Storage-container skapas. Ett lagringskonto skapas automatiskt i nodresursgruppen för användning med lagringsklassen för att lagra Azure Blob Storage-containern. Välj någon av följande SKU:er för Azure Storage-redundans för skuName:
- Standard_LRS: Lokalt redundant standardlagring
- Premium_LRS: Lokalt redundant Premium-lagring
- Standard_ZRS: Standard zonredundant lagring
- Premium_ZRS: Premium-zonredundant lagring
- Standard_GRS: Geo-redundant standardlagring
- Standard_RAGRS: Geo-redundant standardlagring med läsåtkomst
När du använder CSI-drivrutiner för lagring i AKS finns det ytterligare två inbyggda lagringsklasser som använder Azure Blob CSI-lagringsdrivrutinen.
Återtagandeprincipen för båda lagringsklasserna säkerställer att den underliggande Azure Blob Storage tas bort när respektive PV tas bort. Lagringsklasserna konfigurerar också containern så att den kan expanderas som standard, eftersom parametern set allowVolumeExpansion
är inställd på true.
Kommentar
Krympande beständiga volymer stöds inte.
Använd kommandot kubectl get sc för att se lagringsklasserna. I följande exempel visas de azureblob-fuse-premium
lagringsklasser och azureblob-nfs-premium
som är tillgängliga i ett AKS-kluster:
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
Om du vill använda dessa lagringsklasser skapar du en PVC och respektive podd som refererar till och använder dem. En PVC används för att automatiskt etablera lagring baserat på en lagringsklass. En PVC kan använda en av de förskapade lagringsklasserna eller en användardefinierad lagringsklass för att skapa en Azure Blob Storage-container för önskad SKU, storlek och protokoll för att kommunicera med den. När du skapar en podddefinition anges PVC för att begära önskad lagring.
Använda en StatefulSet
Om du vill spara en lagringsvolym för din arbetsbelastning kan du använda en StatefulSet. Detta gör det enklare att matcha befintliga volymer med nya poddar som ersätter alla som har misslyckats. Följande exempel visar hur du konfigurerar en StatefulSet för Blob Storage med antingen Blobfuse eller NFS-protokollet.
Förutsättningar
- AkS-klustrets kontrollplansidentitet (dvs. ditt AKS-klusternamn) läggs till i rollen Deltagare i VNet och nätverkssäkerhetsgruppen.
Skapa en fil med namnet
azure-blob-nfs-ss.yaml
och kopiera i följande 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
Skapa StatefulSet med kommandot kubectl create:
kubectl create -f azure-blob-nfs-ss.yaml
Nästa steg
- Information om hur du konfigurerar en statisk eller dynamisk beständig volym finns i Skapa och använda en volym med Azure Blob Storage.
- Mer information om hur du använder CSI-drivrutin för Azure Disks finns i Använda Azure Disks med CSI-drivrutin
- Information om hur du använder CSI-drivrutin för Azure Files finns i Använda Azure Files med CSI-drivrutin
- Mer information om metodtips för lagring finns i Metodtips för lagring och säkerhetskopior i Azure Kubernetes Service.
Azure Kubernetes Service