Usare dischi SSD Premium di Azure v2 nel servizio Azure Kubernetes
I dischi SSD Premium v2 di Azure offrono carichi di lavoro aziendali intensi da I/O, una latenza del disco submillisecond coerente e un numero elevato di operazioni di I/O al secondo e velocità effettiva. Le prestazioni (capacità, velocità effettiva e operazioni di I/O al secondo) dei dischi SSD Premium v2 possono essere configurate in modo indipendente in qualsiasi momento, semplificando la realizzazione di scenari efficienti a livello di costi, pur soddisfacendo le esigenze di prestazioni.
Questo articolo descrive come configurare un cluster del servizio Azure Kubernetes nuovo o esistente per l'uso di dischi SSD Premium di Azure v2.
Operazioni preliminari
Prima di creare o aggiornare un cluster del servizio Azure Kubernetes in grado di usare dischi SSD Premium di Azure v2, è necessario creare un cluster del servizio Azure Kubernetes nella stessa regione e nella stessa zona di disponibilità che supporta Archiviazione Premium e collegare i dischi seguendo la seguente procedura.
Per un cluster del servizio Azure Kubernetes esistente, è possibile abilitare i dischi SSD Premium v2 aggiungendo un nuovo pool di nodi al cluster e quindi collegare i dischi seguendo la procedura seguente.
Importante
I dischi SSD Premium di Azure v2 richiedono pool di nodi distribuiti in regioni che supportano questi dischi. Per un elenco delle aree supportate, vedere Aree supportate per dischi SSD Premium v2.
Limiti
- I dischi SSD Premium di Azure v2 presentano alcune limitazioni di cui è necessario tenere conto. Per un elenco completo, vedere Limitazioni di SSD Premium v2.
Usare dischi SSD Premium v2 in modo dinamico con una classe di archiviazione
Per usare dischi SSD Premium v2 in una distribuzione o in un set con stato, è possibile usare una classe di archiviazione per il provisioning dinamico.
Creare la classe di archiviazione
Una classe di archiviazione viene usata per definire la creazione dinamica di un'unità di archiviazione con un volume permanente. Per altre informazioni sulle classi di archiviazione Kubernetes, vedere Kubernetes Storage Classes (Classi di archiviazione Kubernetes).
In questo esempio, si crea una classe di archiviazione che fa riferimento a dischi SSD Premium v2. Creare un file denominato azure-pv2-disk-sc.yaml
e copiarlo nel manifesto seguente.
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
Creare la classe di archiviazione con il comandokubectl apply e specificare il file azure-pv2-disk-sc.yaml:
kubectl apply -f azure-pv2-disk-sc.yaml
L'output dal comando è simile all'esempio seguente:
storageclass.storage.k8s.io/premium2-disk-sc created
Creare un'attestazione di volume permanente
Un'attestazione di volume permanente viene usata per il provisioning automatico dell'archiviazione in una classe di archiviazione. In questo caso, un PVC può usare la classe di archiviazione creata in precedenza per creare un disco ultra.
Creare un file denominato azure-pv2-disk-pvc.yaml
e copiarlo nel manifesto seguente. L'attestazione richiede un disco denominato premium2-disk
con dimensione di 1000 GB e accesso ReadWriteOnce. La classe di archiviazione premium2-disk-sc viene specificata come classe di archiviazione.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: premium2-disk
spec:
accessModes:
- ReadWriteOnce
storageClassName: premium2-disk-sc
resources:
requests:
storage: 1000Gi
Creare l'attestazione di volume permanente con il comando kubectl apply e specificare il file azure-pv2-disk-pvc.yaml:
kubectl apply -f azure-pv2-disk-pvc.yaml
L'output dal comando è simile all'esempio seguente:
persistentvolumeclaim/premium2-disk created
Usare il volume permanente
Dopo aver creato l'attestazione di volume persistente e aver effettuato il provisioning del disco, è possibile creare un pod con accesso al disco. Il manifesto seguente crea un pod NGINX di base che usa l'attestazione di volume permanente denominata premium2-disk per montare il disco di Azure nel percorso /mnt/azure
.
Creare un file denominato nginx-premium2.yaml
e copiarlo nel manifesto seguente.
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
Creare il pod con il comando kubectl apply, come illustrato nell'esempio seguente:
kubectl apply -f nginx-premium2.yaml
L'output dal comando è simile all'esempio seguente:
pod/nginx-premium2 created
A questo punto è disponibile un pod in esecuzione con il disco di Azure montato nella directory /mnt/azure
. Questa configurazione può essere visualizzata quando si controlla il pod tramite kubectl describe pod nginx-premium2
, come illustrato nell'esempio sintetico seguente:
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
[...]
Impostare i limiti di operazioni di I/O al secondo e velocità effettiva
Le operazioni di input/output al secondo (IOPS) e i limiti di velocità effettiva per il disco SSD Premium v2 di Azure non sono attualmente supportati tramite il servizio Azure Kubernetes. Per regolare le prestazioni, è possibile usare il comando dell'interfaccia della riga di comando di Azure aggiornare az disk e includere i parametri --disk-iops-read-write
e --disk-mbps-read-write
.
L'esempio seguente aggiorna la lettura/scrittura delle operazioni di I/O al secondo del disco a 5000 e Mbps a 200. Per --resource-group
, il valore deve essere il secondo gruppo di risorse creato automaticamente per archiviare i nodi di lavoro del servizio Azure Kubernetes con la convenzione di denominazione MC_resourcegroupname_clustername_location. Per maggiori informazioni, vedere Perché vengono creati due gruppi di risorse con il servizio Azure Kubernetes?
Il valore per il --name
parametro è il nome del volume creato usando StorageClass e inizia con pvc-
. Per identificare il nome del disco, è possibile eseguire kubectl get pvc
o passare al gruppo di risorse secondario nel portale per trovarlo. Per altre informazioni, vedere gestire le risorse dal portale di Azure.
az disk update --subscription subscriptionName --resource-group myResourceGroup --name diskName --disk-iops-read-write=5000 --disk-mbps-read-write=200
Passaggi successivi
- Per altre informazioni sui dischi SSD Premium v2, vedere Uso di dischi SSD Premium di Azure v2.
- Per altre informazioni sulle procedure consigliate per l'archiviazione, vedere Procedure consigliate per l'archiviazione e i backup nel servizio Azure Kubernetes (AKS).
Azure Kubernetes Service