Usare i driver del disco CSI (Container Storage Interface) nel servizio Azure Kubernetes abilitato da Azure Arc
> Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server, servizio Azure Kubernetes in Azure Stack HCI 23H2
Questo articolo descrive come usare le classi di archiviazione predefinite CSI (Container Storage Interface) per creare in modo dinamico volumi persistenti del disco e creare classi di archiviazione personalizzate nel servizio Azure Kubernetes abilitate da Arc.
Panoramica di CSI nel servizio Azure Kubernetes abilitato da Arc
L'interfaccia di archiviazione contenitori (CSI) è uno standard per esporre sistemi di archiviazione di blocchi e file arbitrari ai carichi di lavoro in contenitori in Kubernetes. Usando CSI, il servizio Azure Kubernetes abilitato da Arc può scrivere, distribuire ed eseguire l'iterazione dei plug-in per esporre nuovi sistemi di archiviazione. L'uso di CSI può anche migliorare quelli esistenti in Kubernetes senza dover toccare il codice Kubernetes principale e quindi attendere i cicli di rilascio.
I driver CSI su disco e file usati da AKS Arc sono driver conformi alla specifica CSI.
Il supporto del driver di archiviazione CSI in AKS Arc consente di usare:
Dischi Arc del servizio Azure Kubernetes che è possibile usare per creare una risorsa Kubernetes DataDisk . Questi vengono montati come ReadWriteOnce, quindi sono disponibili solo per un singolo pod alla volta. Per i volumi di archiviazione accessibili contemporaneamente da più pod, usare i file Arc del servizio Azure Kubernetes.
File Arc del servizio Azure Kubernetes che è possibile usare per montare una condivisione SMB o NFS nei pod. Questi vengono montati come ReadWriteMany, quindi è possibile condividere i dati tra più nodi e pod. Possono anche essere montati come ReadWriteOnce in base alla specifica pvc (attestazione di volume permanente).
Creare in modo dinamico volumi persistenti del disco usando la classe di archiviazione predefinita
Una classe di archiviazione viene usata per definire la modalità di creazione dinamica di un'unità di archiviazione con un volume permanente. Per altre informazioni su come usare le classi di archiviazione, vedere Classi di archiviazione Kubernetes.
In AKS Arc la classe di archiviazione predefinita viene creata per impostazione predefinita e usa CSI per creare volumi basati su VHDX. Il criterio di recupero garantisce che il VHDX sottostante venga eliminato quando viene eliminato il volume permanente usato. La classe di archiviazione configura anche i volumi permanenti in modo che siano espandibili; è sufficiente modificare l'attestazione del volume permanente con le nuove dimensioni.
Per sfruttare questa classe di archiviazione, creare un PVC e un rispettivo pod che fa riferimento e lo usa. Un PVC viene usato per effettuare automaticamente il provisioning dell'archiviazione in base a una classe di archiviazione. Un PVC può usare una delle classi di archiviazione predefinite o una classe di archiviazione definita dall'utente per creare un VHDX delle dimensioni desiderate. Quando si crea una definizione di pod, il PVC viene specificato per richiedere l'archiviazione desiderata.
Creare una classe di archiviazione personalizzata per i dischi
La classe di archiviazione predefinita è adatta per gli scenari più comuni. In alcuni casi, tuttavia, può essere necessario creare una classe di archiviazione personalizzata che archivia i PC in una determinata posizione mappata a un livello di prestazioni specifico.
Se sono presenti carichi di lavoro Linux (pod), è necessario creare una classe di archiviazione personalizzata con il parametro fsType: ext4
. Questo requisito si applica alle versioni 1.19 e 1.20 o successive di Kubernetes. L'esempio seguente mostra una definizione di classe di archiviazione personalizzata con fsType
il parametro definito:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: aks-hci-disk-custom
parameters:
blocksize: "33554432"
container: SqlStorageContainer
dynamic: "true"
group: clustergroup-summertime
hostname: TESTPATCHING-91.sys-sqlsvr.local
logicalsectorsize: "4096"
physicalsectorsize: "4096"
port: "55000"
fsType: ext4
provisioner: disk.csi.akshci.com
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
Se si crea una classe di archiviazione personalizzata, è possibile specificare il percorso in cui archiviare i PC. Se l'infrastruttura sottostante è Azure Stack HCI, questa nuova posizione potrebbe essere un volume supportato da unità SSD/NVMe ad alte prestazioni o da un volume ottimizzato per i costi supportato dalle unità HDD.
La creazione di una classe di archiviazione personalizzata è un processo in due passaggi:
Creare un nuovo percorso di archiviazione usando i
stack-hci-vm storagepath
cmdlet per creare, visualizzare ed elencare i percorsi di archiviazione nel cluster Azure Stack HCI. Per altre informazioni sulla creazione del percorso di archiviazione, vedere Percorso di archiviazione.Per
$path
, creare un percorso di archiviazione denominato$storagepathname
, ad esempio C:\ClusterStorage\test-storagepath:az stack-hci-vm storagepath create --resource-group $resource_group --custom-location $customLocationID --name $storagepathname --path $path
Ottenere l'ID risorsa del percorso di archiviazione:
$storagepathID = az stack-hci-vm storagepath show --name $storagepathname --resource-group $resource_group --query "id" -o tsv
Creare una nuova classe di archiviazione personalizzata usando il nuovo percorso di archiviazione.
Creare un file denominato sc-aks-hci-disk-custom.yaml e quindi copiare il manifesto dal file YAML seguente. La classe di archiviazione è la stessa della classe di archiviazione predefinita, ad eccezione del nuovo
container
oggetto . Usare l'oggettostorage path ID
creato nel passaggio precedente percontainer
. Pergroup
ehostname
, eseguire una query sulla classe di archiviazione predefinita eseguendokubectl get storageclass default -o yaml
e quindi usare i valori specificati:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: aks-hci-disk-custom provisioner: disk.csi.akshci.com parameters: blocksize: "33554432" container: <storage path ID> dynamic: "true" group: <e.g clustergroup-akshci> # same as the default storageclass hostname: <e.g. ca-a858c18c.ntprod.contoso.com> # same as the default storageclass logicalsectorsize: "4096" physicalsectorsize: "4096" port: "55000" fsType: ext4 # refer to the note above to determine when to include this parameter allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate
Creare la classe di archiviazione con il comando kubectl apply e specificare il file sc-aks-hci-disk-custom.yaml :
$ kubectl apply -f sc-aks-hci-disk-custom.yaml storageclass.storage.k8s.io/aks-hci-disk-custom created