Azure Container Storage gebruiken met beheerde Azure-schijven
Azure Container Storage is een cloudgebaseerde volumebeheer-, implementatie- en indelingsservice die systeemeigen is gebouwd voor containers. In dit artikel leest u hoe u Azure Container Storage configureert voor het gebruik van beheerde Azure-schijven als back-endopslag voor uw Kubernetes-workloads. Aan het einde beschikt u over een pod die beheerde Azure-schijven als opslag gebruikt.
Vereisten
Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.
Voor dit artikel is de nieuwste versie (2.35.0 of hoger) van de Azure CLI vereist. Zie Hoe u de Azure CLI installeert. Als u de Bash-omgeving in Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd. Als u van plan bent om de opdrachten lokaal uit te voeren in plaats van in Azure Cloud Shell, moet u deze uitvoeren met beheerdersbevoegdheden. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
U hebt de Kubernetes-opdrachtregelclient nodig.
kubectl
Deze is al geïnstalleerd als u Azure Cloud Shell gebruikt of als u deze lokaal kunt installeren door de opdracht uit teaz aks install-cli
voeren.Als u Azure Container Storage nog niet hebt geïnstalleerd, volgt u de instructies in Azure Container Storage gebruiken met Azure Kubernetes Service.
Controleer of uw doelregio wordt ondersteund in Azure Container Storage-regio's.
- Als u Azure Container Storage wilt gebruiken met beheerde Azure-schijven, moet uw AKS-cluster een knooppuntgroep hebben van ten minste drie vm's voor algemeen gebruik, zoals standard_d4s_v5 voor de clusterknooppunten, elk met minimaal vier virtuele CPU's (vCPU's).
Permanente volumes maken en koppelen
Volg deze stappen om een permanent volume te maken en te koppelen.
1. Een opslaggroep maken
Maak eerst een opslaggroep, een logische groepering van opslag voor uw Kubernetes-cluster, door deze te definiëren in een YAML-manifestbestand.
U hebt de volgende opties voor het maken van een opslaggroep:
- Een dynamische opslaggroep maken
- Een vooraf ingerichte opslaggroep maken met vooraf ingerichte Beheerde Azure-schijven
- Een dynamische opslaggroep maken met uw eigen versleutelingssleutel (optioneel)
Als u Azure Container Storage hebt ingeschakeld met behulp van az aks create
of az aks update
opdrachten, hebt u mogelijk al een opslaggroep. Gebruik kubectl get sp -n acstor
dit om de lijst met opslaggroepen op te halen. Als u al een opslaggroep hebt die u wilt gebruiken, kunt u deze stap overslaan en doorgaan met het weergeven van de beschikbare opslagklassen.
Een dynamische opslaggroep maken
Volg deze stappen om een dynamische opslaggroep te maken voor Azure Disks.
Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals
code acstor-storagepool.yaml
.Plak er de volgende code in. De naamwaarde van de opslaggroep kan de gewenste waarde zijn. Geef voor skuName het prestatie- en redundantieniveau op. Acceptabele waarden zijn Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS en StandardSSD_ZRS. Geef voor opslag de hoeveelheid opslagcapaciteit op voor de pool in Gi of Ti.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS resources: requests: storage: 1Ti
Als u UltraSSD_LRS of PremiumV2_LRS schijven gebruikt, kunt u IOPS en doorvoer instellen met behulp van de
IOPSReadWrite
enMBpsReadWrite
parameters in de definitie van uw opslaggroep.IOPSReadWrite
verwijst naar het aantal IOPS dat is toegestaan voor Ultra SSD- en Premium v2 LRS-schijven. Zie Ultra Disk IOPS en Premium SSD v2 IOPS voor meer informatie.MBpsReadWrite
verwijst naar de bandbreedte die is toegestaan voor Ultra SSD- en Premium v2 LRS-schijven. MBps verwijst naar miljoenen bytes per seconde (MB/s = 10^6 Bytes per seconde). Zie Ultra Disk-doorvoer en Premium SSD v2-doorvoer voor meer informatie.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: PremiumV2_LRS iopsReadWrite: 5000 mbpsReadWrite: 200 resources: requests: storage: 1Ti
Sla het YAML-manifestbestand op en pas het toe om de opslaggroep te maken.
kubectl apply -f acstor-storagepool.yaml
Wanneer het maken van de opslaggroep is voltooid, ziet u een bericht zoals:
storagepool.containerstorage.azure.com/azuredisk created
U kunt deze opdracht ook uitvoeren om de status van de opslaggroep te controleren. Vervang door
<storage-pool-name>
de naamwaarde van uw opslaggroep. In dit voorbeeld is de waarde azuredisk.kubectl describe sp <storage-pool-name> -n acstor
Wanneer de opslaggroep wordt gemaakt, maakt Azure Container Storage namens u een opslagklasse met behulp van de naamconventie acstor-<storage-pool-name>
. U kunt nu de beschikbare opslagklassen weergeven en een permanente volumeclaim maken.
Een vooraf ingerichte opslaggroep maken
Als u azure managed disks hebt die al zijn ingericht, kunt u een vooraf ingerichte opslaggroep maken met behulp van deze schijven. Omdat de schijven al zijn ingericht, hoeft u de skuName of opslagcapaciteit niet op te geven bij het maken van de opslaggroep.
Volg deze stappen om een vooraf ingerichte opslaggroep te maken voor Azure Disks.
Meld u aan bij het Azure-portaal.
Voor elke schijf die u wilt gebruiken, gaat u naar de beheerde Azure-schijf en selecteert u Instellingeneigenschappen>. Kopieer de hele tekenreeks onder Resource-id en plaats deze in een tekstbestand.
Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals
code acstor-storagepool.yaml
.Plak er de volgende code in. De naamwaarde van de opslaggroep kan de gewenste waarde zijn. Vervang door
<resource-id>
de resource-id van elke beheerde schijf. Sla het bestand op.apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: sp-preprovisioned namespace: acstor spec: poolType: azureDisk: disks: - reference <resource-id1> - reference <resource-id2>
Pas het YAML-manifestbestand toe om de opslaggroep te maken.
kubectl apply -f acstor-storagepool.yaml
Wanneer het maken van de opslaggroep is voltooid, ziet u een bericht zoals:
storagepool.containerstorage.azure.com/sp-preprovisioned created
U kunt deze opdracht ook uitvoeren om de status van de opslaggroep te controleren. Vervang door
<storage-pool-name>
de naamwaarde van uw opslaggroep. In dit voorbeeld is de waarde sp-preprovisioned.kubectl describe sp <storage-pool-name> -n acstor
Wanneer de opslaggroep wordt gemaakt, maakt Azure Container Storage namens u een opslagklasse met behulp van de naamconventie acstor-<storage-pool-name>
. U kunt nu de beschikbare opslagklassen weergeven en een permanente volumeclaim maken.
Een dynamische opslaggroep maken met uw eigen versleutelingssleutel (optioneel)
Alle gegevens in een Azure-opslagaccount worden at-rest versleuteld. Standaard worden gegevens versleuteld met door Microsoft beheerde sleutels. Voor meer controle over versleutelingssleutels kunt u door de klant beheerde sleutels (CMK) opgeven wanneer u uw opslaggroep maakt om de permanente volumes te versleutelen die u gaat maken.
Als u uw eigen sleutel wilt gebruiken voor versleuteling aan de serverzijde, moet u een Azure Key Vault met een sleutel hebben. Key Vault moet beveiliging tegen opschonen hebben ingeschakeld en moet gebruikmaken van het Azure RBAC-machtigingsmodel. Meer informatie over door de klant beheerde sleutels in Linux.
Bij het maken van uw opslaggroep moet u de CMK-parameters definiëren. De vereiste CMK-versleutelingsparameters zijn:
- keyVersion geeft de versie van de sleutel op die moet worden gebruikt
- keyName is de naam van uw sleutel
- keyVaultUri is de uniforme resource-id van de Azure Key Vault, bijvoorbeeld
https://user.vault.azure.net
- Identiteit geeft een beheerde identiteit op met toegang tot de kluis, bijvoorbeeld
/subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourcegroups/MC_user-acstor-westus2-rg_user-acstor-westus2_westus2/providers/Microsoft.ManagedIdentity/userAssignedIdentities/user-acstor-westus2-agentpool
Volg deze stappen om een opslaggroep te maken met uw eigen versleutelingssleutel. Alle permanente volumes die zijn gemaakt op basis van deze opslaggroep, worden versleuteld met dezelfde sleutel.
Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals
code acstor-storagepool-cmk.yaml
.Plak de volgende code, geef de vereiste parameters op en sla het bestand op. De naamwaarde van de opslaggroep kan de gewenste waarde zijn. Geef voor skuName het prestatie- en redundantieniveau op. Acceptabele waarden zijn Premium_LRS, Standard_LRS, StandardSSD_LRS, UltraSSD_LRS, Premium_ZRS, PremiumV2_LRS en StandardSSD_ZRS. Geef voor opslag de hoeveelheid opslagcapaciteit op voor de pool in Gi of Ti. Zorg ervoor dat u de CMK-versleutelingsparameters opgeeft.
apiVersion: containerstorage.azure.com/v1 kind: StoragePool metadata: name: azuredisk namespace: acstor spec: poolType: azureDisk: skuName: Premium_LRS encryption: { keyVersion: "<key-version>", keyName: "<key-name>", keyVaultUri: "<key-vault-uri>", identity: "<identity>" } resources: requests: storage: 1Ti
Pas het YAML-manifestbestand toe om de opslaggroep te maken.
kubectl apply -f acstor-storagepool-cmk.yaml
Wanneer het maken van de opslaggroep is voltooid, ziet u een bericht zoals:
storagepool.containerstorage.azure.com/azuredisk created
U kunt deze opdracht ook uitvoeren om de status van de opslaggroep te controleren. Vervang door
<storage-pool-name>
de naamwaarde van uw opslaggroep. In dit voorbeeld is de waarde azuredisk.kubectl describe sp <storage-pool-name> -n acstor
Wanneer de opslaggroep wordt gemaakt, maakt Azure Container Storage namens u een opslagklasse met behulp van de naamconventie acstor-<storage-pool-name>
.
2. De beschikbare opslagklassen weergeven
Wanneer de opslaggroep gereed is voor gebruik, moet u een opslagklasse selecteren om te definiëren hoe opslag dynamisch wordt gemaakt bij het maken van permanente volumeclaims en het implementeren van permanente volumes.
Voer uit kubectl get sc
om de beschikbare opslagklassen weer te geven. Als het goed is, ziet u een opslagklasse met de naam acstor-<storage-pool-name>
.
Belangrijk
Gebruik niet de opslagklasse die is gemarkeerd als intern. Het is een interne opslagklasse die nodig is om Azure Container Storage te laten werken.
3. Een permanente volumeclaim maken
Een permanente volumeclaim (PVC) wordt gebruikt om automatisch opslag in te richten op basis van een opslagklasse. Volg deze stappen om een PVC te maken met behulp van de nieuwe opslagklasse.
Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals
code acstor-pvc.yaml
.Plak de volgende code en sla het bestand op. De PVC-waarde
name
kan zijn wat u wilt.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azurediskpvc spec: accessModes: - ReadWriteOnce storageClassName: acstor-azuredisk # replace with the name of your storage class if different resources: requests: storage: 100Gi
Pas het YAML-manifestbestand toe om het PVC te maken.
kubectl apply -f acstor-pvc.yaml
De uitvoer moet er ongeveer zo uitzien:
persistentvolumeclaim/azurediskpvc created
U kunt de status van het PVC controleren door de volgende opdracht uit te voeren:
kubectl describe pvc azurediskpvc
Zodra het PVC is gemaakt, is het klaar voor gebruik door een pod.
4. Implementeer een pod en koppel een permanent volume
Maak een pod met Fio (Flexibele I/O-tester) voor benchmarking en workloadsimulatie en geef een koppelpad op voor het permanente volume. Gebruik voor claimName de naamwaarde die u hebt gebruikt bij het maken van de permanente volumeclaim.
Gebruik uw favoriete teksteditor om een YAML-manifestbestand zoals
code acstor-pod.yaml
.Plak de volgende code en sla het bestand op.
kind: Pod apiVersion: v1 metadata: name: fiopod spec: nodeSelector: acstor.azure.com/io-engine: acstor volumes: - name: azurediskpv persistentVolumeClaim: claimName: azurediskpvc containers: - name: fio image: nixery.dev/shell/fio args: - sleep - "1000000" volumeMounts: - mountPath: "/volume" name: azurediskpv
Pas het YAML-manifestbestand toe om de pod te implementeren.
kubectl apply -f acstor-pod.yaml
De uitvoer ziet er als volgt uit:
pod/fiopod created
Controleer of de pod wordt uitgevoerd en of de permanente volumeclaim is gebonden aan de pod:
kubectl describe pod fiopod kubectl describe pvc azurediskpvc
Controleer fio-tests om de huidige status ervan te zien:
kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
U hebt nu een pod geïmplementeerd die Azure Disks als opslag gebruikt en u kunt deze gebruiken voor uw Kubernetes-workloads.
Permanente volumes en opslaggroepen beheren
Nu u een permanent volume hebt gemaakt, kunt u het indien nodig loskoppelen en opnieuw aankoppelen. U kunt ook een opslaggroep uitvouwen of verwijderen.
Een permanent volume loskoppelen en opnieuw aankoppelen
Als u een permanent volume wilt loskoppelen, verwijdert u de pod waaraan het permanente volume is gekoppeld. Vervang door <pod-name>
de naam van de pod, bijvoorbeeld fiopod.
kubectl delete pods <pod-name>
Als u een permanent volume opnieuw wilt koppelen, verwijst u gewoon naar de naam van de permanente volumeclaim in het YAML-manifestbestand, zoals beschreven in Een pod implementeren en een permanent volume koppelen.
Als u wilt controleren aan welk permanent volume een permanente volumeclaim is gebonden, voert u uit kubectl get pvc <persistent-volume-claim-name>
.
Een opslaggroep uitvouwen
U kunt opslaggroepen uitbreiden die worden ondersteund door Azure Disks om snel en zonder uitvaltijd omhoog te schalen. Het verkleinen van opslaggroepen wordt momenteel niet ondersteund. Uitbreiding van opslaggroepen wordt niet ondersteund voor Ultra Disks of Premium SSD v2.
Notitie
Als u een opslaggroep uitbreidt, kunt u uw kosten voor Azure Container Storage en Azure Disks verhogen. Zie de pagina met prijzen voor Azure Container Storage en Inzicht in azure Container Storage-facturering.
Op dit moment heeft uitbreiding van opslaggroepen de volgende beperking bij het gebruik vanPremium_LRS
, Standard_LRS
, , StandardSSD_LRS
en Premium_ZRS
StandardSSD_ZRS
SKU's:
- Als uw bestaande opslaggroep kleiner is dan 4 TiB (4.096 GiB), kunt u deze alleen uitbreiden tot 4.095 GiB. Als u fouten wilt voorkomen, probeert u uw huidige opslaggroep niet uit te breiden tot meer dan 4.095 GiB als deze in eerste instantie kleiner is dan 4 TiB (4.096 GiB). Opslaggroepen > 4 TiB kunnen worden uitgebreid tot de maximale beschikbare opslagcapaciteit.
Volg deze instructies om een bestaande opslaggroep voor Azure Disks uit te vouwen.
Open met behulp van een teksteditor het YAML-manifestbestand dat u hebt gebruikt om de opslaggroep te maken, bijvoorbeeld
code acstor-storagepool.yaml
.Vervang de opgegeven opslagvermelding in het YAML-manifestbestand door de gewenste waarde. Deze waarde moet groter zijn dan de huidige capaciteit van de opslaggroep. Als de specificatie bijvoorbeeld is ingesteld
storage: 1Ti
op , wijzigt u deze instorage: 2Ti
. Als u een vooraf ingerichte opslaggroep hebt gemaakt, is er geen opslagvermelding omdat de opslaggroep de capaciteitsgrootte heeft overgenomen van de vooraf ingerichte Azure-schijven. Als u geen opslagvermelding in de YAML ziet, voegt u de volgende code toe die de gewenste opslagcapaciteit opgeeft en slaat u het manifestbestand op:spec: resources: requests: storage: 2Ti
Notitie
Als u twee schijven in een opslaggroep met een capaciteit van 1 TiB hebt en u het YAML-manifestbestand bewerkt om te lezen storage: 4Ti
, worden beide schijven uitgebreid naar 2 TiB wanneer de YAML wordt toegepast, waardoor u een nieuwe totale capaciteit van 4 TiB krijgt.
Pas het YAML-manifestbestand toe om de opslaggroep uit te vouwen.
kubectl apply -f acstor-storagepool.yaml
Voer deze opdracht uit om de status van de opslaggroep te controleren. Vervang door
<storage-pool-name>
de naamwaarde van uw opslaggroep.kubectl describe sp <storage-pool-name> -n acstor
Als het goed is, ziet u een bericht als 'de opslaggroep wordt uitgebreid'. Voer de opdracht na een paar minuten opnieuw uit en het bericht moet zijn verdwenen.
Uitvoeren
kubectl get sp -A
en de opslaggroep moet de nieuwe grootte weerspiegelen.
Een opslaggroep verwijderen
Als u een opslaggroep wilt verwijderen, voert u de volgende opdracht uit. Vervang door <storage-pool-name>
de naam van de opslaggroep.
kubectl delete sp -n acstor <storage-pool-name>