Een volume maken en gebruiken met Azure Disks in Azure Kubernetes Service (AKS)
Een permanent volume vertegenwoordigt een stuk opslag dat is ingericht voor gebruik met Kubernetes-pods. Een permanent volume kan worden gebruikt door een of meer pods en kan dynamisch of statisch worden ingericht. In dit artikel wordt beschreven hoe u dynamisch permanente volumes maakt met Azure Disks in een AKS-cluster (Azure Kubernetes Service).
Notitie
Een Azure-schijf kan alleen worden gekoppeld met het type Access-modusReadWriteOnce, waardoor deze beschikbaar is voor één knooppunt in AKS. Met deze toegangsmodus kunnen nog steeds meerdere pods toegang krijgen tot het volume wanneer de pods op hetzelfde knooppunt worden uitgevoerd. Zie Kubernetes PersistentVolume-toegangsmodi voor meer informatie.
In dit artikel leest u informatie over:
- Werk met een dynamisch permanent volume (HW) door het CSI-stuurprogramma (Container Storage Interface) te installeren en dynamisch een of meer beheerde Azure-schijven te maken om aan een pod te koppelen.
- Werk met een statische pv door een of meer beheerde Azure-schijven te maken of gebruik een bestaande schijf en koppel deze aan een pod.
Zie Opslagopties voor toepassingen in AKS voor meer informatie over Kubernetes-volumes.
Voordat u begint
U hebt een Azure-opslagaccount nodig.
Zorg ervoor dat Azure CLI versie 2.0.59 of hoger is geïnstalleerd en geconfigureerd. Voer
az --version
uit om de versie te bekijken. Zie Azure CLI installeren als u de CLI wilt installeren of een upgrade wilt uitvoeren.Het Azure Disk CSI-stuurprogramma heeft een volumelimiet per knooppunt. Het aantal volumes wordt gewijzigd op basis van de grootte van de knooppunt-/knooppuntgroep. Voer de opdracht kubectl get uit om het aantal volumes te bepalen dat per knooppunt kan worden toegewezen:
kubectl get CSINode <nodename> -o yaml
Een volume dynamisch inrichten
Deze sectie bevat richtlijnen voor clusterbeheerders die een of meer permanente volumes willen inrichten met details van Azure Disk Storage voor gebruik door een workload. Een permanente volumeclaim (PVC) gebruikt het opslagklasseobject om dynamisch een Azure Disk Storage-container in te richten.
Dynamische inrichtingsparameters
Naam | Betekenis | Beschikbare waarde | Verplicht | Standaardwaarde |
---|---|---|---|---|
skuName | Azure Disks-opslagaccounttype (alias: storageAccountType ) |
Standard_LRS , Premium_LRS , StandardSSD_LRS , PremiumV2_LRS , UltraSSD_LRS , Premium_ZRS , StandardSSD_ZRS |
Nee | StandardSSD_LRS |
fsType | Bestandssysteemtype | ext4 , ext3 , ext2 , xfs , voor btrfs Linux, ntfs voor Windows |
Nee | ext4 voor Linux, ntfs voor Windows |
cachingMode | Cache-instelling voor Azure Data Disk-host | None , ReadOnly , ReadWrite |
Nee | ReadOnly |
resourceGroup | Geef de resourcegroep op waarin de Azure-schijven worden gemaakt | Naam van bestaande resourcegroep | Nee | Als dit leeg is, gebruikt het stuurprogramma dezelfde resourcegroepnaam als het huidige AKS-cluster |
DiskIOPSReadWrite | UltraSSD-schijf IOPS-mogelijkheid (minimaal: 2 IOPS/GiB) | 100~160000 | Nee | 500 |
DiskMBpsReadWrite | UltraSSD-schijf Doorvoermogelijkheid (minimaal: 0,032/GiB) | 1~2000 | Nee | 100 |
LogicalSectorSize | Logische sectorgrootte in bytes voor ultraschijf. Ondersteunde waarden zijn 512 ad 4096. 4096 is de standaardwaarde. | 512 , 4096 |
Nee | 4096 |
tags | Azure Disk-tags | Labelindeling: key1=val1,key2=val2 |
Nee | "" |
diskEncryptionSetID | ResourceId van de schijfversleutelingsset die moet worden gebruikt voor het inschakelen van versleuteling at rest | Formaat: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
Nee | "" |
diskEncryptionType | Versleutelingstype van de schijfversleutelingsset. | EncryptionAtRestWithCustomerKey (standaard), EncryptionAtRestWithPlatformAndCustomerKeys |
Nee | "" |
writeAcceleratorEnabled | Write Accelerator op Azure Disks | true , false |
Nee | "" |
networkAccessPolicy | Eigenschap NetworkAccessPolicy om te voorkomen dat de SAS-URI voor een schijf of momentopname wordt gegenereerd | AllowAll , DenyAll , AllowPrivate |
Nee | AllowAll |
diskAccessID | Azure-resource-id van de DiskAccess-resource voor het gebruik van privé-eindpunten op schijven | Nee | `` | |
enableBursting | Schakel bursting op aanvraag in buiten het ingerichte prestatiedoel van de schijf. Bursting op aanvraag mag alleen worden toegepast op Premium-schijven en wanneer de schijfgrootte > 512 GB is. Ultra- en gedeelde schijven worden niet ondersteund. Bursting is standaard uitgeschakeld. | true , false |
Nee | false |
Useragent | Gebruikersagent die wordt gebruikt voor toeschrijving van klantgebruik | Nee | Gegenereerde useragent opgemaakt driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID | Geef de Azure-abonnements-id op waarin de Azure-schijven worden gemaakt. | Azure-abonnements-id | Nee | Indien niet leeg, resourceGroup moet worden opgegeven. |
--- | De volgende parameters zijn alleen voor v2 | --- | --- | --- |
maxShares | Het totale aantal gedeelde schijfkoppelingen dat is toegestaan voor de schijf. Als u de waarde instelt op 2 of meer, worden bijlagereplica's ingeschakeld. | Ondersteunde waarden zijn afhankelijk van de schijfgrootte. Zie Een beheerde Azure-schijf delen voor ondersteunde waarden. | Nee | 1 |
maxMountReplicaCount | Het aantal replica's dat bijlagen moet worden onderhouden. | Deze waarde moet zich in het bereik [0..(maxShares - 1)] |
Nee | Als accessMode is ReadWriteMany , is 0 de standaardwaarde . Anders is de standaardwaarde maxShares - 1 |
Ingebouwde opslagklassen
Een opslagklasse wordt gebruikt om te definiëren hoe een opslageenheid dynamisch wordt gemaakt met een permanent volume. Zie Kubernetes-opslagklassen voor meer informatie over Kubernetes-opslagklassen.
Elk AKS-cluster bevat vier vooraf gemaakte opslagklassen, waarvan er twee zijn geconfigureerd voor gebruik met Azure Disks:
- De standaardopslagklasse richt een standaard SSD Azure Disk in.
- Standard-opslag wordt ondersteund door Standard-SSD's en biedt kosteneffectieve opslag terwijl er nog steeds betrouwbare prestaties worden geleverd.
- De managed-csi-premium-opslagklasse richt een premium Azure-schijf in.
- Premium-schijven worden ondersteund door hoogwaardige SSD-schijven met een lage latentie. Ze zijn ideaal voor VM's waarop productieworkloads worden uitgevoerd. Wanneer u het Azure Disk CSI-stuurprogramma op AKS gebruikt, kunt u ook de
managed-csi
opslagklasse gebruiken, die wordt ondersteund door Standard SSD lokaal redundante opslag (LRS).
- Premium-schijven worden ondersteund door hoogwaardige SSD-schijven met een lage latentie. Ze zijn ideaal voor VM's waarop productieworkloads worden uitgevoerd. Wanneer u het Azure Disk CSI-stuurprogramma op AKS gebruikt, kunt u ook de
Het wordt niet ondersteund om de grootte van een PVC te verkleinen (om gegevensverlies te voorkomen). U kunt een bestaande opslagklasse bewerken met behulp van de kubectl edit sc
opdracht of u kunt uw eigen aangepaste opslagklasse maken. Als u bijvoorbeeld een schijf met een grootte van 4 TiB wilt gebruiken, moet u een opslagklasse maken die definieert cachingmode: None
omdat schijfcaching niet wordt ondersteund voor schijven van 4 TiB en hoger. Zie Opslagopties voor toepassingen in AKS voor meer informatie over opslagklassen en het maken van uw eigen opslagklasse.
Gebruik de opdracht kubectl get sc om de vooraf gemaakte opslagklassen weer te geven. In het volgende voorbeeld ziet u de opslagklassen die vooraf zijn gemaakt in een AKS-cluster:
kubectl get sc
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
Notitie
Permanente volumeclaims worden opgegeven in GiB, maar beheerde Azure-schijven worden gefactureerd per SKU voor een specifieke grootte. Deze SKU's variëren van 32GiB voor S4- of P4-schijven tot 32TiB voor S80- of P80-schijven (in preview). De doorvoer en IOPS-prestaties van een beheerde Premium-schijf zijn afhankelijk van zowel de SKU als de instantiegrootte van de knooppunten in het AKS-cluster. Zie Prijzen en prestaties van beheerde schijven voor meer informatie.
Een permanente volumeclaim maken
Een permanente volumeclaim (PVC) wordt gebruikt om automatisch opslag in te richten op basis van een opslagklasse. In dit geval kan een PVC een van de vooraf gemaakte opslagklassen gebruiken om een standaard of premium beheerde Azure-schijf te maken.
Maak een bestand met de naam
azure-pvc.yaml
en kopieer in het volgende manifest. De claim vraagt om een schijf met de naamazure-managed-disk
die 5 GB groot is met ReadWriteOnce-toegang . De managed-csi-opslagklasse wordt opgegeven als de opslagklasse.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5Gi
Tip
Als u een schijf wilt maken die gebruikmaakt van Premium-opslag, gebruikt storageClassName: managed-csi-premium
u in plaats van managed-csi.
Maak de permanente volumeclaim met de opdracht kubectl apply en geef uw bestand azure-pvc.yaml op :
kubectl apply -f azure-pvc.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
persistentvolumeclaim/azure-managed-disk created
Het permanente volume gebruiken
Zodra de permanente volumeclaim is gemaakt en de schijf is ingericht, kan een pod worden gemaakt met toegang tot de schijf. Met het volgende manifest wordt een eenvoudige NGINX-pod gemaakt die gebruikmaakt van de permanente volumeclaim met de naam azure-managed-disk om de Azure-schijf te koppelen aan het pad /mnt/azure
. Geef voor Windows Server-containers een koppelingspad op met behulp van de Windows-padconventie, zoals 'D:'.
Maak een bestand met de naam
azure-pvc-disk.yaml
en kopieer in het volgende manifest:kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: mypod image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - mountPath: "/mnt/azure" name: volume volumes: - name: volume persistentVolumeClaim: claimName: azure-managed-disk
Maak de pod met de opdracht kubectl apply , zoals wordt weergegeven in het volgende voorbeeld:
kubectl apply -f azure-pvc-disk.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
pod/mypod created
U hebt nu een actieve pod met uw Azure-schijf gekoppeld in de
/mnt/azure
map. Deze configuratie kan worden gezien bij het inspecteren van uw pod met behulp van de opdracht kubectl describe , zoals wordt weergegeven in het volgende verkorte voorbeeld:kubectl describe pod mypod
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
[...] Volumes: volume: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: azure-managed-disk ReadOnly: false default-token-smm2n: Type: Secret (a volume populated by a Secret) SecretName: default-token-smm2n Optional: false [...] Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 2m default-scheduler Successfully assigned mypod to aks-nodepool1-79590246-0 Normal SuccessfulMountVolume 2m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "default-token-smm2n" Normal SuccessfulMountVolume 1m kubelet, aks-nodepool1-79590246-0 MountVolume.SetUp succeeded for volume "pvc-faf0f176-8b8d-11e8-923b-deb28c58d242" [...]
Azure-ultraschijven gebruiken
Zie Ultra Disks on Azure Kubernetes Service (AKS) gebruiken als u Azure Ultra Disk wilt gebruiken.
Azure-tags gebruiken
Zie Azure-tags gebruiken in Azure Kubernetes Service (AKS) voor meer informatie over het gebruik van Azure-tags.
Een volume statisch inrichten
Deze sectie bevat richtlijnen voor clusterbeheerders die een of meer permanente volumes willen maken met details van Azure Disks-opslag voor gebruik door een workload.
Parameters voor statische inrichting
Naam | Betekenis | Beschikbare waarde | Verplicht | Standaardwaarde |
---|---|---|---|---|
volumeHandle | Azure-schijf-URI | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Ja | N.v.t. |
volumeAttributes.fsType | Bestandssysteemtype | ext4 , ext3 , ext2 , xfs , btrfs voor Linux, ntfs voor Windows |
Nee | ext4 voor Linux, ntfs voor Windows |
volumeAttributes.partition | Partitienummer van de bestaande schijf (alleen ondersteund in Linux) | 1 , 2 , 3 |
Nee | Leeg (geen partitie): zorg ervoor dat de partitieindeling er ongeveer als volgt uitziet -part1 |
volumeAttributes.cachingMode | Cache-instelling van schijfhost | None , ReadOnly , ReadWrite |
Nee | ReadOnly |
Een Azure-schijf maken
Wanneer u een Azure-schijf maakt voor gebruik met AKS, kunt u de schijfresource maken in de knooppuntresourcegroep. Met deze methode kan het AKS-cluster toegang krijgen tot de schijfresource en deze beheren. Als u in plaats daarvan de schijf in een afzonderlijke resourcegroep hebt gemaakt, moet u de beheerde identiteit Azure Kubernetes Service (AKS) voor uw cluster de Contributor
rol verlenen aan de resourcegroep van de schijf. In deze oefening maakt u de schijf in dezelfde resourcegroep als uw cluster.
Identificeer de naam van de resourcegroep met behulp van de opdracht az aks show en voeg de
--query nodeResourceGroup
parameter toe. In het volgende voorbeeld wordt de knooppuntresourcegroep voor de AKS-clusternaam myAKSCluster opgehaald in de naam van de resourcegroep myResourceGroup:az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv MC_myResourceGroup_myAKSCluster_eastus
Maak een schijf met de opdracht az disk create . Geef de naam van de knooppuntresourcegroep op die in de vorige opdracht is verkregen en vervolgens een naam voor de schijfresource, zoals myAKSDisk. In het volgende voorbeeld wordt een 20GiB-schijf gemaakt en wordt de id van de schijf uitgevoerd nadat deze is gemaakt. Als u een schijf wilt maken voor gebruik met Windows Server-containers, voegt u de
--os-type windows
parameter toe om de schijf correct te formatteren.az disk create \ --resource-group MC_myResourceGroup_myAKSCluster_eastus \ --name myAKSDisk \ --size-gb 20 \ --query id --output tsv
Notitie
Azure Disks worden gefactureerd per SKU voor een specifieke grootte. Deze SKU's variëren van 32GiB voor S4- of P4-schijven tot 32TiB voor S80- of P80-schijven (in preview). De doorvoer en IOPS-prestaties van een beheerde Premium-schijf zijn afhankelijk van zowel de SKU als de instantiegrootte van de knooppunten in het AKS-cluster. Zie Prijzen en prestaties van Managed Disks.
De schijfbron-id wordt weergegeven zodra de opdracht is voltooid, zoals wordt weergegeven in de volgende voorbeelduitvoer. Deze schijf-id wordt gebruikt om de schijf te koppelen in de volgende sectie.
/subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
Schijf koppelen als volume
Maak een pv-azuredisk.yaml-bestand met een PersistentVolume. Werk
volumeHandle
bij met de schijfresource-id uit de vorige stap. Bijvoorbeeld:apiVersion: v1 kind: PersistentVolume metadata: annotations: pv.kubernetes.io/provisioned-by: disk.csi.azure.com name: pv-azuredisk spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: managed-csi csi: driver: disk.csi.azure.com readOnly: false volumeHandle: /subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk volumeAttributes: fsType: ext4
Maak een pvc-azuredisk.yaml-bestand met een PersistentVolumeClaim dat gebruikmaakt van het PersistentVolume. Bijvoorbeeld:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
Gebruik de opdrachten kubectl apply om persistentVolume en PersistentVolumeClaim te maken, waarbij wordt verwezen naar de twee YAML-bestanden die u eerder hebt gemaakt:
kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
Voer de volgende opdracht uit om te controleren of uw PersistentVolumeClaim is gemaakt en afhankelijk is van het PersistentVolume:
kubectl get pvc pvc-azuredisk
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5s
Maak een bestand azure-disk-pod.yaml om te verwijzen naar uw PersistentVolumeClaim. Bijvoorbeeld:
apiVersion: v1 kind: Pod metadata: name: mypod spec: nodeSelector: kubernetes.io/os: linux containers: - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine name: mypod resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: azure mountPath: /mnt/azure volumes: - name: azure persistentVolumeClaim: claimName: pvc-azuredisk
Voer de opdracht kubectl apply uit om de configuratie toe te passen en het volume te koppelen, waarbij wordt verwezen naar het YAML-configuratiebestand dat u in de vorige stappen hebt gemaakt:
kubectl apply -f azure-disk-pod.yaml
Volgende stappen
- Zie Azure Disks Storage gebruiken met CSI-stuurprogramma voor meer informatie over het gebruik van het CSI-stuurprogramma voor Azure Disks Storage.
- Zie Best practices voor opslag en back-ups in AKS voor de bijbehorende best practices.