Skapa och använd en volym manuellt med Azure-diskar i AKS (Azure Kubernetes Service)
En beständiga volym representerar en lagringsdel som har etablerats för användning med Kubernetes-poddar. Du kan använda en beständig volym med en eller flera poddar och du kan etablera den dynamiskt eller statiskt. Den här artikeln visar hur du dynamiskt skapar beständiga volymer med Azure Disks i ett AKS-kluster (Azure Kubernetes Service).
Kommentar
En Azure-disk kan bara monteras med accesslägestypen ReadWriteOnce, vilket gör den tillgänglig för en nod i AKS. Det här åtkomstläget tillåter fortfarande flera poddar att komma åt volymen när poddarna körs på samma nod. Mer information finns i Kubernetes PersistentVolume-åtkomstlägen.
Den här artikeln visar hur du gör följande:
- Arbeta med en dynamisk beständig volym (PV) genom att installera CSI-drivrutinen (Container Storage Interface) och dynamiskt skapa en eller flera Azure-hanterade diskar som ska anslutas till en podd.
- Arbeta med en statisk PV genom att skapa en eller flera Azure-hanterade diskar eller använda en befintlig och koppla den till en podd.
Mer information om Kubernetes-volymer finns i Lagringsalternativ för program i AKS.
Innan du börjar
Kontrollera att Azure CLI version 2.0.59 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.Azure Disk CSI-drivrutinen har en volymgräns per nod. Antalet volymer ändras baserat på storleken på nod-/nodpoolen. Kör kommandot kubectl get för att fastställa antalet volymer som kan allokeras per nod:
kubectl get CSINode <nodename> -o yaml
Etablera en volym dynamiskt
Det här avsnittet innehåller vägledning för klusteradministratörer som vill etablera en eller flera beständiga volymer som innehåller information om Azure Disk Storage för användning av en arbetsbelastning. Ett beständiga volymanspråk (PVC) använder lagringsklassobjektet för att dynamiskt etablera en Azure Disk Storage-container.
Lagringsklassparametrar för dynamiska PersistentVolumes
Följande tabell innehåller parametrar som du kan använda för att definiera en anpassad lagringsklass för din PersistentVolumeClaim.
Name | Innebörd | Tillgängligt värde | Obligatorisk | Default value |
---|---|---|---|---|
skuName | Azure Disks-lagringskontotyp (alias: storageAccountType ) |
Standard_LRS , Premium_LRS , StandardSSD_LRS , PremiumV2_LRS , UltraSSD_LRS , , , Premium_ZRS StandardSSD_ZRS |
Nej | StandardSSD_LRS |
fsType | Filsystemtyp | ext4 , ext3 , ext2 , xfs , btrfs för Linux, ntfs för Windows |
Nej | ext4 för Linux, ntfs för Windows |
cachingMode | Cacheinställning för Azure Data Disk-värd (PremiumV2_LRS och UltraSSD_LRS stöder None endast cachelagringsläge) |
None , , ReadOnly ReadWrite |
Nej | ReadOnly |
resourceGroup | Ange resursgruppen för Azure Disks | Befintligt resursgruppsnamn | Nej | Om det är tomt använder drivrutinen samma resursgruppnamn som det aktuella AKS-klustret |
DiskIOPSReadWrite | UltraSSD-disk eller Premium SSD v2 IOPS-kapacitet (minst: 2 IOPS/GiB) | 100~160000 | Nej | 500 |
DiskMBpsReadWrite | UltraSSD-disk eller Premium SSD v2-dataflödeskapacitet (minst: 0,032/GiB) | 1~2000 | Nej | 100 |
LogicalSectorSize | Logisk sektorstorlek i byte för ultradisk. Värden som stöds är 512 ad 4096. 4096 är standardvärdet. | 512 , 4096 |
Nej | 4096 |
taggar | Azure Disk-taggar | Taggformat: key1=val1,key2=val2 |
Nej | "" |
diskEncryptionSetID | ResourceId för diskkrypteringsuppsättningen som ska användas för att aktivera kryptering i vila | format: /subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name} |
Nej | "" |
diskEncryptionType | Krypteringstypen för diskkrypteringsuppsättningen. | EncryptionAtRestWithCustomerKey (som standard) EncryptionAtRestWithPlatformAndCustomerKeys |
Nej | "" |
writeAcceleratorEnabled | Skriva accelerator på Azure-diskar | true , false |
Nej | "" |
networkAccessPolicy | NetworkAccessPolicy-egenskapen för att förhindra generering av SAS-URI:n för en disk eller en ögonblicksbild | AllowAll , , DenyAll AllowPrivate |
Nej | AllowAll |
diskAccessID | Azure-resurs-ID för DiskAccess-resursen för att använda privata slutpunkter på diskar | Nej | `` | |
enableBursting | Aktivera burst-prestanda på begäran utöver diskens etablerade prestandamål. Bursting på begäran bör endast tillämpas på Premium-disken och när diskstorleken > är 512 GB. Ultra- och delad disk stöds inte. Bursting är inaktiverat som standard. | true , false |
Nej | false |
useragent | Användaragent som används för kundanvändningsatribution | Nej | Genererad useragent formaterad driverName/driverVersion compiler/version (OS-ARCH) |
|
subscriptionID | Ange Azure-prenumerations-ID där Azure Disks skapas. | Azure-prenumerations-ID | Nej | Om den inte är tom resourceGroup måste den anges. |
--- | Följande parametrar är endast för v2 | --- | --- | --- |
maxShares | Det totala antalet delade diskmonteringar som tillåts för disken. Om värdet anges till 2 eller fler aktiveras repliker för bifogade filer. | Värden som stöds beror på diskstorleken. Mer information om värden som stöds finns i Dela en Hanterad Azure-disk . | Nej | 1 |
maxMountReplicaCount | Antalet repliker som ska underhållas. | Det här värdet måste ligga i intervallet [0..(maxShares - 1)] |
Nej | Om accessMode är ReadWriteMany är är 0 standardvärdet . Annars är standardvärdet maxShares - 1 |
Inbyggda lagringsklasser
Lagringsklasser definierar hur en lagringsenhet skapas dynamiskt med en beständig volym. Mer information om Kubernetes-lagringsklasser finns i Kubernetes-lagringsklasser.
Varje AKS-kluster innehåller fyra förskapade lagringsklasser, varav två har konfigurerats för att fungera med Azure Disks:
- Standardlagringsklassen etablerar en Standard SSD Azure Disk.
- Standard SSD backar standardlagringen och levererar kostnadseffektiv lagring samtidigt som den ger tillförlitliga prestanda.
- Lagringsklassen managed-csi-premium etablerar en Premium Azure Disk.
- SSD-baserade premiumdiskar med höga prestanda och låg latens. De är idealiska för virtuella datorer som kör produktionsarbetsbelastningar. När du använder Azure Disk CSI-drivrutinen på AKS kan du också använda lagringsklassen
managed-csi
, som backas upp av Lokalt redundant standard SSD-lagring (LRS).
- SSD-baserade premiumdiskar med höga prestanda och låg latens. De är idealiska för virtuella datorer som kör produktionsarbetsbelastningar. När du använder Azure Disk CSI-drivrutinen på AKS kan du också använda lagringsklassen
- Från och med Kubernetes version 1.29, när du distribuerar Azure Kubernetes Service-kluster (AKS) över flera tillgänglighetszoner, använder AKS nu zonredundant lagring (ZRS) för att skapa hanterade diskar i inbyggda lagringsklasser.
- ZRS säkerställer synkron replikering av dina Azure-hanterade diskar över flera Azure-tillgänglighetszoner i den valda regionen. Den här redundansstrategin förbättrar återhämtningsförmågan för dina program och skyddar dina data mot datacenterfel.
- Det är dock viktigt att observera att zonredundant lagring (ZRS) har en högre kostnad jämfört med lokalt redundant lagring (LRS). Om kostnadsoptimering är en prioritet kan du skapa en ny lagringsklass med LRS SKU-namnparametern och använda den i ditt beständiga volymanspråk (PVC).
Att minska storleken på en PVC stöds inte på grund av risken för dataförlust. Du kan redigera en befintlig lagringsklass med kommandot kubectl edit sc
eller skapa en egen anpassad lagringsklass. Om du till exempel vill använda en disk med storlek 4 TiB måste du skapa en lagringsklass som definierar cachingmode: None
eftersom diskcachelagring inte stöds för diskar 4 TiB och större. Mer information om lagringsklasser och hur du skapar en egen lagringsklass finns i Lagringsalternativ för program i AKS.
Du kan se de förskapade lagringsklasserna med kommandot kubectl get sc
. I följande exempel visas de förskapade lagringsklasserna som är tillgängliga i ett AKS-kluster:
kubectl get sc
Kommandots utdata liknar följande exempel:
NAME PROVISIONER AGE
default (default) disk.csi.azure.com 1h
managed-csi disk.csi.azure.com 1h
Kommentar
Beständiga volymanspråk anges i GiB, men Azure-hanterade diskar debiteras av SKU för en viss storlek. Dessa SKU:er sträcker sig från 32GiB för S4- eller P4-diskar till 32TiB för S80- eller P80-diskar (i förhandsversion). Dataflödet och IOPS-prestandan för en Premium-hanterad disk beror på både SKU:n och instansstorleken för noderna i AKS-klustret. Mer information finns i Priser och prestanda för hanterade diskar.
Skapa ett beständigt volymanspråk
Ett beständiga volymanspråk (PVC) etablerar automatiskt lagring baserat på en lagringsklass. I det här fallet kan en PVC använda en av de förskapade lagringsklasserna för att skapa en Standard- eller Premium Azure-hanterad disk.
Skapa en fil med namnet
azure-pvc.yaml
och kopiera i följande manifest. Anspråket begär en disk med namnetazure-managed-disk
5 GB i storlek med ReadWriteOnce-åtkomst. Lagringsklassen managed-csi anges som lagringsklass.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: azure-managed-disk spec: accessModes: - ReadWriteOnce storageClassName: managed-csi resources: requests: storage: 5Gi
Dricks
Om du vill skapa en disk som använder premiumlagring använder du storageClassName: managed-csi-premium
i stället för managed-csi.
Skapa det beständiga volymanspråket
kubectl apply
med kommandot och ange filen azure-pvc.yaml .kubectl apply -f azure-pvc.yaml
Kommandots utdata liknar följande exempel:
persistentvolumeclaim/azure-managed-disk created
Använd den beständiga volymen
När du har skapat det beständiga volymanspråket måste du kontrollera att det har statusen Pending
. Statusen Pending
anger att den är redo att användas av en podd.
Kontrollera statusen för PVC med hjälp av
kubectl describe pvc
kommandot .kubectl describe pvc azure-managed-disk
Kommandots utdata liknar följande komprimerade exempel:
Name: azure-managed-disk Namespace: default StorageClass: managed-csi Status: Pending [...]
Skapa en fil med namnet
azure-pvc-disk.yaml
och kopiera i följande manifest. Det här manifestet skapar en grundläggande NGINX-podd som använder det beständiga volymanspråket med namnet azure-managed-disk för att montera Azure Disk på sökvägen/mnt/azure
. För Windows Server-containrar anger du en mountPath med hjälp av Windows-sökvägskonventionen, till exempel "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
Skapa podden med kommandot
kubectl apply
.kubectl apply -f azure-pvc-disk.yaml
Kommandots utdata liknar följande exempel:
pod/mypod created
Nu har du en podd som körs med din Azure Disk monterad i
/mnt/azure
katalogen. Kontrollera poddkonfigurationenkubectl describe
med kommandot .kubectl describe pod mypod
Kommandots utdata liknar följande exempel:
[...] 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" [...]
Använd ultradiskar i Azure
Information om hur du använder Azure Ultra Disk finns i Använda ultradiskar på Azure Kubernetes Service (AKS).
Använda Azure-taggar
Mer information om hur du använder Azure-taggar finns i Använda Azure-taggar i Azure Kubernetes Service (AKS).
Statiskt etablera en volym
Det här avsnittet innehåller vägledning för klusteradministratörer som vill skapa en eller flera beständiga volymer som innehåller information om Azure Disks för användning av en arbetsbelastning.
Statiska etableringsparametrar för en beständig volym
Följande tabell innehåller parametrar som du kan använda för att definiera en beständig volym.
Name | Innebörd | Tillgängligt värde | Obligatorisk | Default value |
---|---|---|---|---|
volumeHandle | Azure-disk-URI | /subscriptions/{sub-id}/resourcegroups/{group-name}/providers/microsoft.compute/disks/{disk-id} |
Ja | Ej tillämpligt |
volumeAttributes.fsType | Filsystemtyp | ext4 , ext3 , ext2 , xfs , btrfs för Linux, ntfs för Windows |
Nej | ext4 för Linux, ntfs för Windows |
volumeAttributes.partition | Partitionsnummer för den befintliga disken (stöds endast i Linux) | 1 , , 2 3 |
Nej | Tom (ingen partition) – Kontrollera att partitionsformatet är som -part1 |
volumeAttributes.cachingMode | Cacheinställning för diskvärd | None , , ReadOnly ReadWrite |
Nej | ReadOnly |
Skapa en Azure-disk
När du skapar en Azure-disk för användning med AKS kan du skapa diskresursen i nodresursgruppen . Med den här metoden kan AKS-klustret komma åt och hantera diskresursen. Om du i stället skapar disken i en separat resursgrupp måste du bevilja den hanterade identiteten Azure Kubernetes Service (AKS) för klustret Contributor
rollen till diskens resursgrupp.
Identifiera resursgruppens namn med kommandot
az aks show
och lägg till parametern--query nodeResourceGroup
.az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv
Kommandots utdata liknar följande exempel:
MC_myResourceGroup_myAKSCluster_eastus
Skapa en disk med kommandot
az disk create
. Ange nodresursgruppens namn och ett namn för diskresursen, till exempel myAKSDisk. I följande exempel skapas en 20GiB-disk och utdata för diskens ID när den har skapats. Om du behöver skapa en disk för användning med Windows Server-containrar lägger du till parametern--os-type windows
för att formatera disken korrekt.az disk create \ --resource-group MC_myResourceGroup_myAKSCluster_eastus \ --name myAKSDisk \ --size-gb 20 \ --query id --output tsv
Kommentar
Azure-diskar debiteras av SKU för en viss storlek. Dessa SKU:er sträcker sig från 32GiB för S4- eller P4-diskar till 32TiB för S80- eller P80-diskar (i förhandsversion). Dataflödet och IOPS-prestandan för en Premium-hanterad disk beror på både SKU:n och instansstorleken för noderna i AKS-klustret. Se Priser och prestanda för hanterade diskar.
Diskresurs-ID:t visas när kommandot har slutförts, enligt följande exempelutdata. Du använder disk-ID:t för att montera disken i nästa avsnitt.
/subscriptions/<subscriptionID>/resourceGroups/MC_myAKSCluster_myAKSCluster_eastus/providers/Microsoft.Compute/disks/myAKSDisk
Montera disken som en volym
Skapa en pv-azuredisk.yaml-fil med en PersistentVolume. Uppdatera
volumeHandle
med diskresurs-ID från föregående steg. För Windows Server-containrar anger du ntfs för parametern 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
Skapa en pvc-azuredisk.yaml-fil med en PersistentVolumeClaim som använder PersistentVolume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-azuredisk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi volumeName: pv-azuredisk storageClassName: managed-csi
Skapa PersistentVolume och PersistentVolumeClaim med kommandot
kubectl apply
och referera till de två YAML-filer som du skapade.kubectl apply -f pv-azuredisk.yaml kubectl apply -f pvc-azuredisk.yaml
Kontrollera att PersistentVolumeClaim har skapats och bundits till PersistentVolume med hjälp av
kubectl get pvc
kommandot .kubectl get pvc pvc-azuredisk
Kommandots utdata liknar följande exempel:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-azuredisk Bound pv-azuredisk 20Gi RWO 5s
Skapa en azure-disk-pod.yaml-fil för att referera till din PersistentVolumeClaim. För Windows Server-containrar anger du en mountPath med hjälp av Windows-sökvägskonventionen, till exempel "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
Använd konfigurationen och montera volymen med kommandot
kubectl apply
.kubectl apply -f azure-disk-pod.yaml
Rensa resurser
När du är klar med resurserna som skapas i den här artikeln kan du ta bort dem med hjälp av kubectl delete
kommandot .
# Remove the pod
kubectl delete -f azure-pvc-disk.yaml
# Remove the persistent volume claim
kubectl delete -f azure-pvc.yaml
Nästa steg
- Information om hur du använder CSI-drivrutin för Azure Disks-lagring finns i Använda Azure Disks Storage med CSI-drivrutin.
- För tillhörande metodtips, se Metodtips för lagring och säkerhetskopior i AKS.
Azure Kubernetes Service