Een volume met Azure-schijven in Azure Kubernetes Service (AKS) maken en gebruiken
Een permanent volume vertegenwoordigt een stuk opslag dat is ingericht voor gebruik met Kubernetes-pods. U kunt een permanent volume met een of meer pods gebruiken en u kunt het dynamisch of statisch inrichten. In dit artikel leest u hoe u dynamisch permanente volumes maakt met Azure Disks in een AKS-cluster (Azure Kubernetes Service).
Notitie
Een Azure-schijf kan alleen worden gekoppeld aan het type ReadWriteOnce in de toegangsmodus, waardoor deze beschikbaar is voor één knooppunt in AKS. Met deze toegangsmodus hebben meerdere pods nog steeds toegang tot het volume wanneer de pods op hetzelfde knooppunt worden uitgevoerd. Zie De toegangsmodi Kubernetes PersistentVolume voor meer informatie.
Dit artikel laat het volgende zien:
- Werk met een dynamisch permanent volume (PV) door het CSI-stuurprogramma (Container Storage Interface) te installeren en dynamisch een of meer door Azure beheerde schijven te maken die aan een pod moeten worden gekoppeld.
- Werk met een statische HW door een of meer door Azure beheerde schijven te maken of een bestaande schijf te gebruiken en deze aan een pod te koppelen.
Zie Opslagopties voor toepassingen in AKS voor meer informatie over Kubernetes-volumes.
Voordat u begint
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. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.Het Azure Disk CSI-stuurprogramma heeft een volumelimiet per knooppunt. Het aantal volumes verandert 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) maakt gebruik van het opslagklasseobject om een Azure Disk Storage-container dynamisch in te richten.
Parameters van opslagklasse voor dynamische PersistentVolumes
De volgende tabel bevat parameters die u kunt gebruiken om een aangepaste opslagklasse te definiëren voor uw PersistentVolumeClaim.
Naam | Betekenis | Beschikbare waarde | Verplicht | Default value |
---|---|---|---|---|
skuName | Azure Disks-opslagaccounttype (alias: storageAccountType ) |
Standard_LRS , , Premium_LRS StandardSSD_LRS , PremiumV2_LRS , , UltraSSD_LRS , , Premium_ZRS StandardSSD_ZRS |
Nee | StandardSSD_LRS |
fsType | Bestandstype | ext4 , , ext3 ext2 , xfs voor btrfs Linux, ntfs voor Windows |
Nee | ext4 voor Linux, ntfs voor Windows |
cachingMode | Azure Data Disk Host Cache-instelling (PremiumV2_LRS en UltraSSD_LRS bieden alleen ondersteuning voor None de cachemodus) |
None , , ReadOnly ReadWrite |
Nee | ReadOnly |
resourceGroup | De resourcegroep voor de Azure-schijven opgeven | Naam van bestaande resourcegroep | Nee | Als het stuurprogramma leeg is, gebruikt het stuurprogramma dezelfde naam van de resourcegroep als het huidige AKS-cluster |
DiskIOPSReadWrite | UltraSSD-schijf of Premium SSD v2 IOPS-mogelijkheid (minimaal: 2 IOPS/GiB) | 100~160000 | Nee | 500 |
DiskMBpsReadWrite | UltraSSD-schijf of Premium SSD v2-doorvoermogelijkheid (minimaal: 0,032/GiB) | 1~2000 | Nee | 100 |
LogicalSectorSize | Grootte van logische sector 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 | formatteren: /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 | De eigenschap NetworkAccessPolicy om het genereren van de SAS-URI voor een schijf of een momentopname te voorkomen | 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-schijf en wanneer de schijfgrootte 512 GB is > . Ultra- en gedeelde schijf wordt niet ondersteund. Bursting is standaard uitgeschakeld. | true , false |
Nee | false |
useragent | Gebruikersagent die wordt gebruikt voor het toewijzen 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 schijven 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 door Azure beheerde schijf delen voor ondersteunde waarden. | Nee | 1 |
maxMountReplicaCount | Het aantal replicabijlagen dat moet worden onderhouden. | Deze waarde moet zich in het bereik [0..(maxShares - 1)] |
Nee | Als accessMode dat het is ReadWriteMany , is de standaardwaarde 0 . Anders is de standaardwaarde maxShares - 1 |
Ingebouwde opslagklassen
Opslagklassen 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, twee die zijn geconfigureerd voor gebruik met Azure Disks:
- De standaardopslagklasse richt een standaard-SSD Azure Disk in.
- Standard-SCHIJVEN maken back-ups van Standard-opslag en leveren rendabele opslag, terwijl er nog steeds betrouwbare prestaties worden geleverd.
- De klasse managed-csi-Premium Storage richt een Premium Azure Disk in.
- Ssd-schijven met hoge prestaties en lage latentie back Premium-schijven. 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).
- Ssd-schijven met hoge prestaties en lage latentie back Premium-schijven. Ze zijn ideaal voor VM's waarop productieworkloads worden uitgevoerd. Wanneer u het Azure Disk CSI-stuurprogramma op AKS gebruikt, kunt u ook de
- Vanaf Kubernetes versie 1.29, wanneer u AKS-clusters (Azure Kubernetes Service) implementeert in meerdere beschikbaarheidszones, maakt AKS nu gebruik van zone-redundante opslag (ZRS) om beheerde schijven te maken binnen ingebouwde opslagklassen.
- ZRS zorgt voor synchrone replicatie van uw door Azure beheerde schijven in meerdere Azure-beschikbaarheidszones in uw gekozen regio. Deze redundantiestrategie verbetert de tolerantie van uw toepassingen en beschermt uw gegevens tegen datacenterfouten.
- Het is echter belangrijk om te weten dat zone-redundante opslag (ZRS) een hogere kosten heeft ten opzichte van lokaal redundante opslag (LRS). Als kostenoptimalisatie een prioriteit is, kunt u een nieuwe opslagklasse maken met de naamparameter LRS SKU en deze gebruiken in uw PERSISTENT Volume Claim (PVC).
Het verkleinen van een PVC wordt niet ondersteund vanwege het risico op gegevensverlies. 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 van grootte 4 TiB wilt gebruiken, moet u een opslagklasse maken die definieert cachingmode: None
omdat schijfcaching niet wordt ondersteund voor schijven 4 TiB en groter. Zie Opslagopties voor toepassingen in AKS voor meer informatie over opslagklassen en het maken van uw eigen opslagklasse.
U kunt de vooraf gemaakte opslagklassen zien met behulp van de kubectl get sc
opdracht. In het volgende voorbeeld ziet u de vooraf gemaakte opslagklassen die beschikbaar zijn 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 azure managed disks worden gefactureerd door 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 de SKU en 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) richt automatisch opslag in 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 dit in het volgende manifest. De claim vraagt een schijf met de naamazure-managed-disk
5 GB aan met ReadWriteOnce-toegang . De beheerde 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 Storage, gebruikt storageClassName: managed-csi-premium
u in plaats van managed-csi.
Maak de permanente volumeclaim met behulp van de
kubectl apply
opdracht en geef het 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
Nadat u de permanente volumeclaim hebt gemaakt, moet u controleren of deze de status Pending
heeft. De Pending
status geeft aan dat deze gereed is voor gebruik door een pod.
Controleer de status van het PVC met behulp van de
kubectl describe pvc
opdracht.kubectl describe pvc azure-managed-disk
De uitvoer van de opdracht lijkt op het volgende verkorte voorbeeld:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
Maak een bestand met de naam
azure-pvc-disk.yaml
en kopieer dit in het volgende manifest. Met dit manifest maakt u een eenvoudige NGINX-pod die gebruikmaakt van de permanente volumeclaim met de naam azure-beheerde schijf om de Azure-schijf aan het pad/mnt/azure
te koppelen. Geef voor Windows Server-containers een mountPath op met behulp van de Windows-padconventie, zoals 'D:'.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 readOnly: false volumes: - name: volume persistentVolumeClaim: claimName: azure-managed-disk
Maak de pod met behulp van de
kubectl apply
opdracht.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 waarop uw Azure-schijf is gekoppeld in de
/mnt/azure
map. Controleer de podconfiguratie met behulp van dekubectl describe
opdracht.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 Ultraschijven gebruiken in Azure Kubernetes Service (AKS) als u Azure Ultra Disks wilt gebruiken.
Azure-tags gebruiken
Zie Azure-tags gebruiken in Azure Kubernetes Service (AKS) voor meer informatie over het gebruik van Azure-tags.
Statisch een volume inrichten
Deze sectie bevat richtlijnen voor clusterbeheerders die een of meer permanente volumes willen maken die details van Azure Disks bevatten voor gebruik door een workload.
Statische inrichtingsparameters voor een permanent volume
De volgende tabel bevat parameters die u kunt gebruiken om een permanent volume te definiëren.
Naam | Betekenis | Beschikbare waarde | Verplicht | Default value |
---|---|---|---|---|
volumeHandle | Azure-schijf-URI | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Ja | N.v.t. |
volumeAttributes.fsType | Bestandstype | ext4 , , ext3 ext2 , xfs voor btrfs 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 partitie-indeling er ongeveer als volgt uitziet -part1 |
volumeAttributes.cachingMode | Instelling voor schijfhostcache | 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 maakt, moet u de door Azure Kubernetes Service (AKS) beheerde identiteit voor uw cluster de Contributor
rol verlenen aan de resourcegroep van de schijf.
Identificeer de naam van de resourcegroep met behulp van de
az aks show
opdracht en voeg de--query nodeResourceGroup
parameter toe.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
MC_myResourceGroup_myAKSCluster_eastus
Maak een schijf met behulp van de
az disk create
opdracht. Geef de naam van de knooppuntresourcegroep en een naam op 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 door 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 schijfresource-id wordt weergegeven zodra de opdracht is voltooid, zoals wordt weergegeven in de volgende voorbeelduitvoer. U gebruikt de schijf-id om de schijf in de volgende sectie te koppelen.
/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 resource-id van de schijf uit de vorige stap. Geef voor Windows Server-containers ntfs op voor de parameter fsType.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 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 die gebruikmaakt van het PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
Maak het PersistentVolume en PersistentVolumeClaim met behulp van de
kubectl apply
opdracht en verwijs naar de twee YAML-bestanden die u hebt gemaakt.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
Controleer of uw PersistentVolumeClaim is gemaakt en gebonden aan het PersistentVolume met behulp van de
kubectl get pvc
opdracht.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 azure-disk-pod.yaml-bestand om te verwijzen naar uw PersistentVolumeClaim. Geef voor Windows Server-containers een mountPath op met behulp van de Windows-padconventie, zoals 'D:'.
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
Pas de configuratie toe en koppel het volume met behulp van de
kubectl apply
opdracht.kubectl apply -f azure-disk-pod.yaml
Resources opschonen
Wanneer u klaar bent met de resources die in dit artikel zijn gemaakt, kunt u ze verwijderen met behulp van de kubectl delete
opdracht.
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
Volgende stappen
- Zie Azure Disks Storage gebruiken met CSI-stuurprogramma voor meer informatie over het gebruik van het CSI-stuurprogramma voor Azure Disks-opslag.
- Zie Best practices voor opslag en back-ups in AKS voor de bijbehorende aanbevolen procedures.
Azure Kubernetes Service