Azure Premium SSD v2-schijven gebruiken in Azure Kubernetes Service
Azure Premium SSD v2-schijven bieden IO-intensieve bedrijfsworkloads , een consistente schijflatentie van submilliseconden en hoge IOPS en doorvoer. De prestaties (capaciteit, doorvoer en IOPS) van Premium SSD v2-schijven kunnen onafhankelijk van elkaar worden geconfigureerd, waardoor het eenvoudiger is voor meer scenario's om kostenefficiënt te zijn tijdens het voldoen aan de prestatiebehoeften.
In dit artikel wordt beschreven hoe u een nieuw of bestaand AKS-cluster configureert voor het gebruik van Azure Premium SSD v2-schijven.
Voordat u begint
Voordat u een AKS-cluster maakt of upgradet dat azure Premium SSD v2-schijven kan gebruiken, moet u een AKS-cluster maken in dezelfde regio en beschikbaarheidszone die Ondersteuning biedt voor Premium Storage en de schijven koppelen aan de volgende stappen.
Voor een bestaand AKS-cluster kunt u Premium SSD v2-schijven inschakelen door een nieuwe knooppuntgroep toe te voegen aan uw cluster en vervolgens de schijven te koppelen aan de volgende stappen.
Belangrijk
Voor Azure Premium SSD v2-schijven zijn knooppuntgroepen vereist die zijn geïmplementeerd in regio's die deze schijven ondersteunen. Zie Premium SSD v2-schijf ondersteunde regio's voor een lijst met ondersteunde regio's.
Beperkingen
- Azure Premium SSD v2-schijven hebben bepaalde beperkingen waarvan u rekening moet houden. Zie Premium SSD v2-beperkingen voor een volledige lijst.
Premium SSD v2-schijven dynamisch gebruiken met een opslagklasse
Als u Premium SSD v2-schijven in een implementatie of stateful set wilt gebruiken, kunt u een opslagklasse gebruiken voor dynamische inrichting.
De opslagklasse maken
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.
In dit voorbeeld maakt u een opslagklasse die verwijst naar Premium SSD v2-schijven. Maak een bestand met de naam azure-pv2-disk-sc.yaml
en kopieer dit in het volgende manifest.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: premium2-disk-sc
parameters:
cachingMode: None
skuName: PremiumV2_LRS
DiskIOPSReadWrite: "4000"
DiskMBpsReadWrite: "1000"
provisioner: disk.csi.azure.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
Maak de opslagklasse met de opdracht kubectl apply en geef het bestand azure-pv2-disk-sc.yaml op:
kubectl apply -f azure-pv2-disk-sc.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
storageclass.storage.k8s.io/premium2-disk-sc created
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 de eerder gemaakte opslagklasse gebruiken om een ultraschijf te maken.
Maak een bestand met de naam azure-pv2-disk-pvc.yaml
en kopieer dit in het volgende manifest. De claim vraagt een schijf met de naam premium2-disk
1000 GB aan met ReadWriteOnce-toegang. De premium2-schijf-sc-opslagklasse wordt opgegeven als opslagklasse.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: premium2-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: premium2-disk-sc
resources:
requests:
storage: 1000Gi
Maak de permanente volumeclaim met de opdracht kubectl apply en geef het bestand azure-pv2-disk-pvc.yaml op:
kubectl apply -f azure-pv2-disk-pvc.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
persistentvolumeclaim/premium2-disk created
Het permanente volume gebruiken
Zodra de permanente volumeclaim is gemaakt en de schijf is ingericht, kan er een pod worden gemaakt met toegang tot de schijf. Het volgende manifest maakt een eenvoudige NGINX-pod die gebruikmaakt van de permanente volumeclaim met de naam Premium2-schijf om de Azure-schijf aan het pad /mnt/azure
te koppelen.
Maak een bestand met de naam nginx-premium2.yaml
en kopieer dit in het volgende manifest.
kind: Pod
apiVersion: v1
metadata:
name: nginx-premium2
spec:
containers:
- name: nginx-premium2
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: premium2-disk
Maak de pod met de opdracht kubectl apply , zoals wordt weergegeven in het volgende voorbeeld:
kubectl apply -f nginx-premium2.yaml
De uitvoer van de opdracht lijkt op het volgende voorbeeld:
pod/nginx-premium2 created
U hebt nu een actieve pod waarop uw Azure-schijf is gekoppeld in de /mnt/azure
map. Deze configuratie kan worden weergegeven bij het inspecteren van uw pod via kubectl describe pod nginx-premium2
, zoals wordt weergegeven in het volgende verkorte voorbeeld:
kubectl describe pod nginx-premium2
[...]
Volumes:
volume:
Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
ClaimName: premium2-disk
ReadOnly: false
kube-api-access-sh59b:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: Burstable
Node-Selectors: <none>
Tolerations: node.kubernetes.io/memory-pressure:NoSchedule op=Exists
node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 7m58s default-scheduler Successfully assigned default/nginx-premium2 to aks-agentpool-12254644-vmss000006
Normal SuccessfulAttachVolume 7m46s attachdetach-controller AttachVolume.Attach succeeded for volume "pvc-ff39fb64-1189-4c52-9a24-e065b855b886"
Normal Pulling 7m39s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine"
Normal Pulled 7m38s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine" in 1.192915667s
Normal Created 7m38s kubelet Created container nginx-premium2
Normal Started 7m38s kubelet Started container nginx-premium2
[...]
IOPS- en doorvoerlimieten instellen
Invoer-/uitvoerbewerkingen per seconde (IOPS) en doorvoerlimieten voor Azure Premium v2 SSD-schijf worden momenteel niet ondersteund via AKS. Als u de prestaties wilt aanpassen, kunt u de Azure CLI-opdracht az disk update en inclusief de --disk-iops-read-write
en --disk-mbps-read-write
parameters gebruiken.
In het volgende voorbeeld wordt de IOPS-lees-/schrijfbewerking van de schijf bijgewerkt naar 5000 en Mbps naar 200. Hiervoor --resource-group
moet de waarde de tweede resourcegroep zijn die automatisch wordt gemaakt om de AKS-werkknooppunten op te slaan met de naamconventie MC_resourcegroupname_clustername_location. Zie Waarom zijn er twee resourcegroepen gemaakt met AKS? voor meer informatie.
De waarde voor de --name
parameter is de naam van het volume dat is gemaakt met de StorageClass en begint met pvc-
. Als u de naam van de schijf wilt identificeren, kunt u de schijf uitvoeren kubectl get pvc
of naar de secundaire resourcegroep in de portal gaan om deze te vinden. Zie Resources beheren vanuit Azure Portal voor meer informatie.
az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200
Volgende stappen
- Zie Azure Premium SSD v2-schijven gebruiken voor meer informatie over Premium SSD v2-schijven.
- Zie Best practices voor opslag en back-ups in Azure Kubernetes Service (AKS) voor meer informatie over aanbevolen procedures voor opslag.
Azure Kubernetes Service