Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als meerdere pods gelijktijdige toegang tot hetzelfde opslagvolume nodig hebben, kunt u Azure Blob Storage gebruiken om verbinding te maken via blobfuse of Network File System (NFS).
In dit artikel leest u hoe u dynamisch en statisch Azure Blob Storage-containers kunt maken voor gebruik door meerdere pods in een AKS-cluster (Azure Kubernetes Service).
Vereiste voorwaarden
Het CSI-stuurprogramma voor Azure Blob Storage ingeschakeld op uw AKS-cluster.
Een opslagaccount waarvoor NFS v3 is ingeschakeld, zodat u een permanent volume kunt koppelen met behulp van het NFS-protocol. U kunt NFS v3 niet inschakelen voor een bestaand opslagaccount. Zie Een NFS v3-account maken voor meer informatie.
Voer de volgende taken uit om een Azure Data Lake Storage-account te ondersteunen bij het gebruik van blobfuse-koppeling:
- Als u een Data Lake Storage-account wilt maken met behulp van het stuurprogramma voor dynamische inrichting, geeft u
isHnsEnabled: "true"op in de parameters van de opslagklasse. - Als u blobfuse-toegang tot een Data Lake Storage-account in statische inrichting wilt inschakelen, geeft u de koppelingsoptie
--use-adls=trueop in het permanente volume. - Als u een opslagaccount met hiërarchische naamruimte wilt inschakelen, moeten bestaande permanente volumes opnieuw worden gekoppeld met
--use-adls=truede koppelingsoptie.
- Als u een Data Lake Storage-account wilt maken met behulp van het stuurprogramma voor dynamische inrichting, geeft u
De blobfuse-cache bevindt zich standaard in de
/mntmap. Als de VM-SKU een tijdelijke schijf biedt, wordt de/mntmap gekoppeld op de tijdelijke schijf. Als de VM-SKU echter geen tijdelijke schijf biedt, wordt de/mntmap gekoppeld op de besturingssysteemschijf, kunt u de koppelingsoptie instellen om een andere cachemap op te geven--tmp-path=.
Gebruik ingebouwde opslagklassen om dynamische PV's te maken met Azure Blob Storage
Er wordt een opslagklasse gebruikt om te definiëren hoe een Azure Blob Storage-container wordt gemaakt. Er wordt automatisch een opslagaccount gemaakt in de knooppuntresourcegroep voor gebruik met de opslagklasse voor het opslaan van de Azure Blob Storage-container. Wanneer u CSI-stuurprogramma's voor opslag in AKS gebruikt, zijn er twee extra ingebouwde stuurprogramma's die gebruikmaken van het CSI-stuurprogramma StorageClasses voor Azure Blob Storage.
Het terugneembeleid voor beide opslagklassen zorgt ervoor dat de onderliggende Azure Blob-opslag wordt verwijderd wanneer het respectieve PV wordt verwijderd. De opslagklassen configureren de container ook zodat deze standaard kan worden uitgebreid, omdat de set allowVolumeExpansion parameter is ingesteld op waar.
Opmerking
Het verkleinen van permanente volumes wordt niet ondersteund.
U kunt een van de volgende Azure Storage-redundantie-SKU's selecteren voor de skuname parameter in de definitie van de opslagklasse:
- Standard_LRS: Lokaal redundante standaardopslag
- Premium_LRS: Premium lokaal redundante opslag
- Standard_ZRS: Standaard zone-redundante opslag
- Premium_ZRS: Premium-zone-redundante opslag
- Standard_GRS: Standaard geografisch redundante opslag
- Standard_RAGRS: Georedundante opslag met leestoegang
Aangepaste opslagklassen maken voor dynamische tv's met Azure Blob Storage
De standaardopslagklassen zijn geschikt voor de meeste scenario's. In sommige gevallen wilt u mogelijk uw eigen opslagklasse aanpassen met uw eigen parameters. In deze sectie geven we twee voorbeelden: één met het NFS-protocol en één met behulp van blobfuse.
Voorbeeld van aangepaste opslagklasse met behulp van het NFS-protocol
Het manifest in dit voorbeeld koppelt een Blob Storage-container met behulp van het NFS-protocol. U kunt deze gebruiken om de tags parameter toe te voegen.
Maak een bestand met de naam
blob-nfs-sc.yamlen plak het volgende voorbeeldmanifest:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-nfs provisioner: blob.csi.azure.com parameters: protocol: nfs tags: environment=Development volumeBindingMode: Immediate allowVolumeExpansion: trueMaak de opslagklasse met behulp van de
kubectl applyopdracht:kubectl apply -f blob-nfs-sc.yamlDe uitvoer zou ongeveer moeten lijken op de volgende voorbeelduitvoer:
storageclass.storage.k8s.io/blob-nfs created
Voorbeeld van aangepaste opslagklasse met behulp van blobfuse
Het manifest in dit voorbeeld maakt gebruik van blobfuse en koppelt een Blob Storage-container. U kunt deze gebruiken om de skuName parameter bij te werken.
Maak een bestand met de naam
blobfuse-sc.yamlen plak het volgende voorbeeldmanifest:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: blob-fuse provisioner: blob.csi.azure.com parameters: skuName: Standard_GRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true mountOptions: - -o allow_other - --file-cache-timeout-in-seconds=120 - --use-attr-cache=true - --cancel-list-on-mount-seconds=10 # prevent billing charges on mounting - -o attr_timeout=120 - -o entry_timeout=120 - -o negative_timeout=120 - --log-level=LOG_WARNING # LOG_WARNING, LOG_INFO, LOG_DEBUG - --cache-size-mb=1000 # Default will be 80% of available memory, eviction will happen beyond that.Maak de opslagklasse met behulp van de
kubectl applyopdracht:kubectl apply -f blobfuse-sc.yamlDe uitvoer zou ongeveer moeten lijken op de volgende voorbeelduitvoer:
storageclass.storage.k8s.io/blob-fuse created
Parameters van Opslagklasse voor dynamische PV's met Azure Blob Storage
Gebruik de volgende parametergroepen om een aangepaste opslagklasse te definiëren voor uw permanente volumeclaims (PVC's) met Azure Blob Storage:
-
Opslagaccount:
skuName,location,resourceGroup,subscriptionID, ,storageAccount,accessTiernetworkEndpointType, ,allowBlobPublicAccess,allowSharedKeyAccess,requireInfraEncryption,publicNetworkAccess, enmatchTagstags. -
Container en eindpunt:
protocol, ,containerName,containerNamePrefix,server,storageEndpointSuffix,useDataPlaneAPI, ,softDeleteBlobs, , ensoftDeleteContainersenableBlobVersioning. -
BlobFuse:
storeAccountKey,getLatestAccountKey,secretName, ensecretNamespaceisHnsEnabled. -
NFS:
mountPermissionsenfsGroupChangePolicy. -
Virtueel netwerk:
vnetResourceGroup,vnetName, ensubnetNamevnetLinkName.
Parameters voor opslagaccounts configureren voor dynamische tv's met Azure Blob-opslag
Gebruik de volgende parameters om het Azure opslagaccount te configureren voor een dynamisch ingerichte HW:
| Naam | Meaning | Beschikbare waarden | Verplicht | Standaardwaarde |
|---|---|---|---|---|
skuName |
Geef een Azure Storage-accounttype (alias: storageAccountType) op. |
Standard_LRS, , Premium_LRSStandard_GRS, Standard_RAGRS, , , Standard_ZRSPremium_ZRS |
Nee. | Standard_LRS |
location |
Geef een Azure-locatie op. | eastus |
Nee. | Als de invoer voor de locatie leeg is, gebruikt het stuurprogramma dezelfde locatienaam als het huidige cluster. |
resourceGroup |
Geef een Azure-resourcegroepnaam op. | myResourceGroup | Nee. | Als dit leeg is, gebruikt het stuurprogramma dezelfde resourcegroepnaam als het huidige cluster. |
subscriptionID |
Geef de Azure-abonnements-id op waarin de blobopslagmap wordt gemaakt. | Azure-abonnements-id | Nee. | Indien niet leeg, resourceGroup moet worden opgegeven. |
storageAccount |
Geef een Azure Storage-accountnaam op. | storageAccountName | Nee. | Wanneer er geen specifieke opslagaccountnaam wordt opgegeven, zoekt het stuurprogramma naar een geschikt opslagaccount dat overeenkomt met de accountinstellingen binnen dezelfde resourcegroep. Als er geen overeenkomend opslagaccount kan worden gevonden, wordt er een nieuw opslagaccount gemaakt. Als er echter een naam voor een opslagaccount is opgegeven, moet het opslagaccount al bestaan. |
networkEndpointType |
Geef het type netwerkeindpunt op voor het opslagaccount dat door het stuurprogramma is gemaakt. Als u opgeeft privateEndpoint, maakt het stuurprogramma een privé-eindpunt voor het opslagaccount. In andere gevallen maakt het stuurprogramma een service-eindpunt voor het NFS-protocol. |
"", privateEndpoint |
Nee. |
"". Voor een AKS-cluster voegt u de naam van het AKS-cluster toe aan de rol Inzender in de resourcegroep die als host fungeert voor het virtuele netwerk. |
accessTier |
Geef de toegangslaag voor het opslagaccount op. |
Hot, , CoolPremium |
Nee. | Gebruikt de standaardlaag voor het geselecteerde opslagaccounttype. Premium-accounts ondersteunen alleen Premium. |
allowBlobPublicAccess |
Openbare toegang tot alle blobs of containers toestaan of toestaan voor een opslagaccount dat door het stuurprogramma is gemaakt. |
true, false |
Nee. | false |
allowSharedKeyAccess |
Toegang tot gedeelde sleutels toestaan of weigeren voor een opslagaccount dat door het stuurprogramma is gemaakt. Deze parameter is van toepassing op NFS-koppelingen en BlobFuse-koppelingen die gebruikmaken van beheerde identiteit. |
true, false |
Nee. | true |
requireInfraEncryption |
Een secundaire laag van door het platform beheerde versleuteling vereisen voor data-at-rest in een opslagaccount dat door het stuurprogramma is gemaakt. |
true, false |
Nee. | false |
publicNetworkAccess |
Stel de eigenschap openbare netwerktoegang in voor een opslagaccount dat door het stuurprogramma is gemaakt. |
Enabled, , DisabledSecuredByPerimeter |
Nee. | Maakt gebruik van de Azure Storage standaardinstelling. |
tags |
Tags maken in een nieuw opslagaccount. | Tagindeling: foo=aaa,bar=bbb |
Nee. | "" |
matchTags |
Koppel tags wanneer het stuurprogramma zoekt naar een geschikt opslagaccount. |
true, false |
Nee. | false |
Container- en eindpuntparameters configureren voor dynamische TV's met Azure Blob Storage
Gebruik de volgende parameters voor het configureren van de container, het koppelingsprotocol, het opslageindpunt en tags voor een dynamisch ingerichte HW:
| Naam | Description | Beschikbare waarden | Verplicht | Standaardwaarde |
|---|---|---|---|---|
protocol |
Geef blobFuse, BlobFuse2 of NFS v3-koppeling op. |
fuse, , fuse2nfs |
Nee. | fuse |
containerName |
Geef de naam van de bestaande container (map) op. | container | Nee. | Als dit leeg is, maakt de driver een nieuwe containernaam aan, beginnend met pvc-fuse voor blobfuse of pvc-nfs voor NFS v3. |
containerNamePrefix |
Geef het voorvoegsel van de Azure Storage-map op, aangemaakt door de driver. | Mag alleen kleine letters, cijfers en afbreekstreepjes bevatten en mag uit minder dan 21 tekens bestaan. | Nee. | |
server |
Geef de domeinnaam van het Azure-opslagaccount op. | Bestaande DNS-domeinnaam van opslagaccount, bijvoorbeeld <storage-account>.blob.core.windows.net. |
Nee. | Als het stuurprogramma leeg is, wordt standaard <storage-account>.blob.core.windows.net of een andere DNS-domeinnaam voor het soevereine cloudopslagaccount gebruikt. |
storageEndpointSuffix |
Geef het achtervoegsel van het Azure-opslageindpunt op. | core.windows.net |
Nee. | Als het stuurprogramma leeg is, wordt het standaardachtervoegsel voor het opslageindpunt gebruikt volgens de cloudomgeving. |
useDataPlaneAPI |
Gebruik de Azure Storage gegevensvlak-API om containers te maken en te verwijderen. Deze optie kan beperking van de opslagresourceprovider voorkomen, maar mislukt wanneer de firewall van het opslagaccount of regels voor virtuele netwerken de toegang tot het gegevensvlak blokkeren. |
true, false |
Nee. | false |
softDeleteBlobs |
Schakel voorlopig verwijderen in voor blobs en geef de bewaarperiode in dagen op. | Een bewaarperiode, bijvoorbeeld 7 |
Nee. | Uitgeschakeld |
softDeleteContainers |
Schakel voorlopig verwijderen in voor containers en geef de bewaarperiode op in dagen. | Een bewaarperiode, bijvoorbeeld 7 |
Nee. | Uitgeschakeld |
enableBlobVersioning |
Blob-versiebeheer inschakelen. U kunt versiebeheer niet inschakelen wanneer protocol dat wel nfs of isHnsEnabled niet is true. |
true, false |
Nee. | false |
BlobFuse-parameters configureren voor dynamische tv's met Azure Blob Storage
De volgende parameters zijn alleen van toepassing wanneer u BlobFuse gebruikt voor een dynamisch ingerichte HW:
| Naam | Description | Beschikbare waarden | Verplicht | Standaardwaarde |
|---|---|---|---|---|
storeAccountKey |
Geef de sleutel van het archiefaccount op in het Kubernetes-geheim. Opmerking: false betekent dat het stuurprogramma de kubelet identity gebruikt om de account key op te halen. |
true,false |
Nee. | true |
getLatestAccountKey |
Haal de meest recente sleutel van het opslagaccount op op basis van de aanmaaktijd in plaats van de eerste sleutel te gebruiken. |
true, false |
Nee. | false |
secretName |
Geef de geheime naam op om de accountsleutel op te slaan. | Nee. | ||
secretNamespace |
Geef de naamruimte van het geheim op om de accountsleutel op te slaan. |
default,kube-system, enz. |
Nee. | PVC-naamruimte |
isHnsEnabled |
Schakel Hierarchical namespace een Azure Data Lake Storage-account in. |
true,false |
Nee. | false |
NFS-parameters configureren voor dynamische TV's met Azure Blob Storage
De volgende parameter is alleen van toepassing wanneer u NFS gebruikt voor een dynamisch ingerichte HW:
| Naam | Description | Beschikbare waarden | Verplicht | Standaardwaarde |
|---|---|---|---|---|
mountPermissions |
Geef gekoppelde mapmachtigingen op. | De standaardwaarde is 0777. Als 0 is ingesteld, voert de driver chmod niet uit na het mounten. |
Nee. | 0777 |
fsGroupChangePolicy |
Geef op hoe het stuurprogramma het volumeeigendom wijzigt. Het stuurprogramma negeert securityContext.fsGroupChangePolicy in de podspecificatie. |
OnRootMismatch, , AlwaysNone |
Nee. | OnRootMismatch |
Parameters voor virtuele netwerken configureren voor dynamischeV's met Azure Blob Storage
Gebruik de volgende parameters wanneer het stuurprogramma de toegang tot een virtueel netwerk configureert voor een dynamisch ingerichte HW:
| Naam | Description | Beschikbare waarden | Verplicht | Standaardwaarde |
|---|---|---|---|---|
vnetResourceGroup |
Geef de resourcegroep op die het virtuele netwerk bevat. | Naam van bestaande resourcegroep | Nee. | Gebruikt de vnetResourceGroup waarde in de Azure cloudconfiguratie. |
vnetName |
Geef de naam van het virtuele netwerk op. | Naam van bestaand virtueel netwerk | Nee. | Gebruikt de vnetName waarde in de Azure cloudconfiguratie. |
subnetName |
Geef een of meer bestaande AKS-knooppuntsubnetten op. Scheid meerdere subnetnamen met komma's. | Bestaande subnetnamen | Nee. | Hiermee worden alle subnetten in het virtuele clusternetwerk bijgewerkt. |
vnetLinkName |
Geef de virtuele netwerkkoppeling op die is gekoppeld aan de privé-DNS-zone. | Naam van bestaande of nieuwe virtuele netwerkkoppeling | Nee. | <vnetName>-vnetlink |
Privé-eindpunten configureren voor dynamische tv's met Azure Blob-opslag
Opmerking
Als het opslagaccount door het stuurprogramma wordt gemaakt, hoeft u alleen de parameter op te geven networkEndpointType: privateEndpoint in de opslagklasse. Het CSI-stuurprogramma maakt het privé-eindpunt en de privé-DNS-zone (genaamd privatelink.blob.core.windows.net) samen met de account. Als u uw eigen opslagaccount gebruikt, moet u het privé-eindpunt voor het opslagaccount maken. Als u Azure Blob Storage in een geïsoleerd netwerkcluster gebruikt, moet u een aangepaste opslagklasse maken met networkEndpointType: privateEndpoint. U kunt het volgende voorbeeldmanifest gebruiken als referentie:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: blob-fuse
provisioner: blob.csi.azure.com
parameters:
skuName: Premium_LRS # available values: Standard_LRS, Premium_LRS, Standard_GRS, Standard_RAGRS, Standard_ZRS, Premium_ZRS
protocol: fuse2
networkEndpointType: privateEndpoint
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- -o allow_other
- --file-cache-timeout-in-seconds=120
- --use-attr-cache=true
- --cancel-list-on-mount-seconds=10 # prevent billing charges on mounting
- -o attr_timeout=120
- -o entry_timeout=120
- -o negative_timeout=120
- --log-level=LOG_WARNING # LOG_WARNING, LOG_INFO, LOG_DEBUG
- --cache-size-mb=1000 # Default will be 80% of available memory, eviction will happen beyond that.
Een PVC maken voor dynamische inrichting
Een PVC maakt gebruik van het opslagklasseobject om een Azure Blob-opslag dynamisch in te richten. U kunt het YAML-voorbeeldmanifest in deze sectie gebruiken om een PVC te maken dat 5 GB groot is met ReadWriteMany-toegang . Zie Kubernetes PV-toegangsmodi voor meer informatie over toegangsmodi.
Maak een bestand met de naam
blob-nfs-pvc.yamlen plak het volgende YAML-manifest:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-blob-storage spec: accessModes: - ReadWriteMany storageClassName: azureblob-nfs-premium resources: requests: storage: 5GiMaak het PVC met behulp van de
kubectl createopdracht:kubectl create -f blob-nfs-pvc.yamlBekijk de status van het PVC met de
kubectl getopdracht:kubectl get pvc azure-blob-storageDe uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin wordt aangegeven dat het PVC zich in een
Boundstatus bevindt:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE azure-blob-storage Bound pvc-aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb 5Gi RWX azureblob-nfs-premium 92m
Een dynamisch ingericht blob-opslagvolume in een pod koppelen
Met de volgende YAML maakt u een pod die gebruikmaakt van de permanente volumeclaim azure-blob-storage om de Azure Blob-opslag aan het /mnt/blob pad te koppelen.
Maak een bestand met de naam
blob-nfs-pven plak het volgende YAML-manifest. Zorg ervoor dat declaimNamePVC overeenkomt met het PVC dat u eerder hebt gemaakt (azure-blob-storage).kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/blob" name: volume readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-blob-storageMaak de pod met behulp van de
kubectl applyopdracht:kubectl apply -f blob-nfs-pv.yamlZodra de pod met succes draait, maakt u een nieuw bestand met de naam
test.txtmet behulp van de volgende opdracht:kubectl exec mypod -- touch /mnt/blob/test.txtControleer of de schijf correct is gekoppeld met behulp van de volgende opdracht om de bestanden in de gekoppelde map weer te geven:
kubectl exec mypod -- ls /mnt/blobUw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin het
test.txtbestand wordt weergegeven dat u hebt gemaakt in de gekoppelde Azure Blob-opslag:test.txt
Een StatefulSet gebruiken om de levenscyclus van een volume te beheren met Azure Blob Storage
Als u een opslagvolume wilt behouden voor uw workload, kunt u een StatefulSet gebruiken. Deze status maakt het gemakkelijker om bestaande volumes te koppelen aan nieuwe pods die eventuele mislukte pods vervangen. In de volgende voorbeelden ziet u hoe u een StatefulSet instelt voor Blob Storage met behulp van het NFS-protocol of Blobfuse.
Opmerking
Als u het NFS-protocol gebruikt, moet de identiteit van het AKS-clusterbesturingsvlak (de naam van uw AKS-cluster) worden toegevoegd aan de rol Inzender in het virtuele netwerk en de netwerkbeveiligingsgroep.
Maak een bestand met de naam
azure-blob-nfs-ss.yamlen plak het volgende YAML-manifest: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/azurelinux/base/nginx:1.25 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: 100GiMaak de StatefulSet met behulp van de
kubectl createopdracht:kubectl create -f azure-blob-nfs-ss.yaml
Een statische PV maken met Azure Blob storage
De volgende secties bevatten instructies voor het maken van een statische PV met Azure Blob storage. Een statische PV is een permanent volume dat een beheerder handmatig maakt. Deze PV is beschikbaar voor gebruik van pods in het cluster. Als u een statische PV wilt gebruiken, maakt u een PVC dat verwijst naar de PV en maakt u vervolgens een pod die verwijst naar het PVC.
CSI-volumeparameters voor statische tv's met Azure Blob Storage
De volgende tabel bevat parameters die u kunt gebruiken in de CSI-volumebron voor een statische HW met Azure Blob Storage:
| Naam | Meaning | Beschikbare waarden | Verplicht | Standaardwaarde |
|---|---|---|---|---|
volumeHandle |
Geef een waarde op die het stuurprogramma kan gebruiken om de opslagblobcontainer in het cluster uniek te identificeren. | Een aanbevolen manier om een unieke waarde te produceren, is door de wereldwijd unieke opslagaccountnaam en containernaam te combineren: {account-name}_{container-name}.Opmerking: De #/ tekens zijn gereserveerd voor intern gebruik en kunnen niet worden gebruikt in een volumehandle. |
Ja | |
volumeAttributes.subscriptionID |
Geef de Azure abonnements-id op waar het opslagaccount zich bevindt. | Azure-abonnements-id | Nee. | Indien niet leeg, volumeAttributes.resourceGroup moet worden opgegeven. |
volumeAttributes.resourceGroup |
Geef de naam van de Azure-resourcegroep op. | myResourceGroup | Nee. | Als dit leeg is, gebruikt het stuurprogramma dezelfde resourcegroepnaam als het huidige cluster. |
volumeAttributes.storageAccount |
Geef een bestaande azure-opslagaccountnaam op. | storageAccountName | Ja | |
volumeAttributes.containerName |
Geef de bestaande containernaam op. | container | Ja | |
volumeAttributes.protocol |
Geef blobFuse, BlobFuse2 of NFS v3-koppeling op. |
fuse, , fuse2nfs |
Nee. | fuse |
volumeAttributes.server |
Geef het serveradres van het Azure-opslagaccount op. | Bestaand serveradres, bijvoorbeeld <storage-account>.blob.core.windows.net |
Nee. | Gebruikt het standaardserveradres voor de huidige cloudomgeving. |
volumeAttributes.storageEndpointSuffix |
Geef het achtervoegsel Azure opslageindpunt op. |
core.windows.netof het achtervoegsel voor een andere Azure cloud |
Nee. | Gebruikt het standaardachtervoegsel voor de huidige cloudomgeving. |
| --- | De volgende parameters zijn alleen voor blobfuse | --- | --- | --- |
volumeAttributes.secretName |
Geheime naam waarin de naam en sleutel van het opslagaccount worden opgeslagen (alleen van toepassing op SMB). | Nee. | ||
volumeAttributes.secretNamespace |
Geef de naamruimte van het geheim op om de accountsleutel op te slaan. | default |
Nee. | PVC-naamruimte |
volumeAttributes.getLatestAccountKey |
Haal de meest recente sleutel van het opslagaccount op op basis van de aanmaaktijd in plaats van de eerste sleutel te gebruiken. |
true, false |
Nee. | false |
nodeStageSecretRef.name |
Geef de naam op van het Kubernetes-geheim dat referenties bevat voor het faseren van het volume. | Bestaande kubernetes-geheime naam. Het geheim moet een van de volgende sleutels bevatten: azurestorageaccountkey, azurestorageaccountsastoken, msisecretof azurestoragespnclientsecret. |
Nee. | |
nodeStageSecretRef.namespace |
Geef de naamruimte van het geheim op. | Kubernetes-naamruimte | Ja | |
| --- | De volgende parameters zijn alleen voor het NFS-protocol | --- | --- | --- |
volumeAttributes.mountPermissions |
Geef gekoppelde mapmachtigingen op. | 0777 |
Nee. | |
volumeAttributes.fsGroupChangePolicy |
Geef op hoe het stuurprogramma het volumeeigendom wijzigt. Het stuurprogramma negeert securityContext.fsGroupChangePolicy in de podspecificatie. |
OnRootMismatch, , AlwaysNone |
Nee. | OnRootMismatch |
| --- |
De volgende parameters zijn alleen voor functie: blobfuse Verificatie van beheerde identiteit en service-principalnaam |
--- | --- | --- |
volumeAttributes.AzureStorageAuthType |
Geef het verificatietype op. |
Key,SAS,MSI,SPN |
Nee. | Key |
volumeAttributes.AzureStorageIdentityClientID |
Geef de Identity Client-ID op. | Nee. | ||
volumeAttributes.AzureStorageIdentityObjectID |
Geef de id van het identiteitsobject op. Deze parameter is afgeschaft. | Nee. | ||
volumeAttributes.AzureStorageIdentityResourceID |
Geef de ID van de identiteitsresource op. | Nee. | ||
volumeAttributes.MSIEndpoint |
Geef het MSI-eindpunt op. | Nee. | ||
volumeAttributes.AzureStorageSPNClientID |
Geef de SPN-client-id (Azure Service Principal Name) op. | Nee. | ||
volumeAttributes.AzureStorageSPNTenantID |
Geef de Azure SPN-tenant-id op. | Nee. | ||
volumeAttributes.AzureStorageAADEndpoint |
Geef het Microsoft Entra-eindpunt op. | Nee. | ||
| --- | De volgende parameters zijn alleen bedoeld voor identiteitsverificatie voor blobfuse-workloads | --- | --- | --- |
volumeAttributes.ClientID |
Geef de client-id op van de beheerde identiteit die wordt gebruikt voor verificatie van de workloadidentiteit. | Client-ID van beheerde identiteit | Nee. | |
volumeAttributes.mountWithWorkloadIdentityToken |
Koppel BlobFuse met een id-token voor workloads. Deze functionaliteit is momenteel beschikbaar als preview. Geef de waarde op als een tekenreeks. |
"true", "false" |
Nee. | "false" |
| --- | De volgende parameters zijn alleen bedoeld voor de functie: blobfuse leesaccountsleutel of SAS-token uit de sleutelkluis | --- | --- | --- |
volumeAttributes.keyVaultURL |
Geef de DNS-naam van Azure Key Vault op. | {vault-name}.vault.azure.net | Nee. | |
volumeAttributes.keyVaultSecretName |
Geef de geheime naam van Azure Key Vault op. | De naam van het bestaande Azure Key Vault-geheim. | Nee. | |
volumeAttributes.keyVaultSecretVersion |
Geheime versie van Azure Key Vault. | Bestaande versie | Nee. | Als de parameter leeg is, gebruikt de driver de huidige versie. |
Een Blob Storage-container maken
Wanneer u een Azure Blob Storage-resource maakt voor gebruik met AKS, kunt u de resource maken in de knooppuntresourcegroep. Met deze methode kan het AKS-cluster toegang krijgen tot de blobopslagresource en deze beheren.
Haal de naam van de knooppuntresourcegroep van uw AKS-cluster op met behulp van de
az aks showopdracht met de--query nodeResourceGroupparameter.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsvDe uitvoer van de opdracht lijkt op het volgende voorbeeld:
MC_myResourceGroup_myAKSCluster_eastusAls u het opslagaccount in de knooppuntresourcegroep maakt, gebruikt u de naam van de knooppuntresourcegroep die in de vorige stap is geretourneerd (bijvoorbeeld
MC_myResourceGroup_myAKSCluster_eastus). Volg vervolgens de stappen in Blob Storage beheren om toegang te verlenen en een container in dat opslagaccount te maken.
Volume koppelen
In deze sectie koppelt u het permanente volume met behulp van het NFS-protocol of Blobfuse.
Voor het opslagaccount moeten NFS v3 en hiërarchische naamruimte zijn ingeschakeld. Het koppelen van Blob Storage met behulp van het NFS v3-protocol wordt niet geverifieerd met behulp van een accountsleutel. Het subnet van het AKS-knooppunt moet netwerktoegang hebben tot het opslagaccount met NFS-functionaliteit via een geselecteerd virtueel netwerk of privé-eindpunt. Zorg ervoor dat netwerkbeveiligingsgroepen NFS-verkeer toestaan op poort 111 en 2048. Zie Koppelen Blob Storage met behulp van het NFS 3.0-protocol (Network File System) 3.0 voor meer informatie over het instellen van NFS-toegang tot uw opslagaccount.
In het volgende voorbeeld ziet u hoe u een Blob Storage-container koppelt als een permanent volume met behulp van het NFS-protocol.
Maak een bestand met de naam
pv-blob-nfs.yamlen plak de volgende YAML. Onderspec.csi.volumeAttributes, werkresourceGroup,storageAccount, encontainerNamebij.Opmerking
volumeHandlede waarde moet een unieke volume-id zijn voor elke identieke opslagblobcontainer in het cluster. Het teken#en/zijn gereserveerd voor intern gebruik en kunnen niet worden gebruikt.apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: blob.csi.azure.com name: pv-blob spec: capacity: storage: 1Pi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain # If set as "Delete" container would be removed after pvc deletion storageClassName: azureblob-nfs-premium csi: driver: blob.csi.azure.com # make sure volumeid is unique for every identical storage blob container in the cluster # character `#` and `/` are reserved for internal use and cannot be used in volumehandle volumeHandle: account-name_container-name volumeAttributes: resourceGroup: resourceGroupName storageAccount: storageAccountName containerName: containerName protocol: nfsOpmerking
Hoewel het kubernetesAPI-capaciteitskenmerk verplicht is, gebruikt het CSI-stuurprogramma voor Azure Blob Storage deze waarde niet, omdat u flexibel gegevens kunt schrijven totdat u de capaciteitslimiet van uw opslagaccount hebt bereikt. De waarde wordt alleen gebruikt voor het aanpassen van de grootte tussen pc's en PVC's. In het voorbeeld wordt een fictieve waarde gebruikt van
1Pi; deze waarde stelt de capaciteit van de Blob Storage-container niet in.Maak de PV met de
kubectl createcommando:kubectl create -f pv-blob-nfs.yamlMaak een bestand met de naam
pvc-blob-nfs.yamlen plak deze in de volgende YAML. Werk ondervolumeNamede waarde bij zodat deze overeenkomt met de naam van de PV die in de vorige stap is gemaakt.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-blob spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi volumeName: pv-blob storageClassName: azureblob-nfs-premiumMaak het PVC met behulp van de
kubectl createopdracht:kubectl create -f pvc-blob-nfs.yaml
Het permanente volume gebruiken
Met de volgende YAML maakt u een pod die gebruikmaakt van de PV of PVC met de naam pvc-blob die u eerder hebt gemaakt om de Azure Blob-opslag aan het /mnt/blob pad te koppelen.
Maak een bestand met de naam
nginx-pod-blob.yamlen plak het volgende YAML-manifest. Zorg ervoor dat declaimNamepvc die eerder is gemaakt (pvc-blob) overeenkomt.kind: Pod apiVersion: v1 metadata: name: nginx-blob spec: nodeSelector: "kubernetes.io/os": linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine name: nginx-blob volumeMounts: - name: blob01 mountPath: "/mnt/blob" readOnly: false volumes: - name: blob01 persistentVolumeClaim: claimName: pvc-blobMaak de pod en koppel het PVC met behulp van de
kubectl createopdracht:kubectl create -f nginx-pod-blob.yamlMaak een interactieve shellsessie met de pod om te controleren of de Blob-opslag correct is gekoppeld met behulp van de volgende
kubectl execopdracht:kubectl exec -it nginx-blob -- df -hUw uitvoer moet er ongeveer uitzien als in de volgende voorbeelduitvoer, waarin wordt weergegeven dat de Blob-opslag is gekoppeld aan het
/mnt/blobpad:Filesystem Size Used Avail Use% Mounted on ... blobfuse 14G 41M 13G 1% /mnt/blob ...