Gestione dell'archiviazione Kubernetes nel dispositivo Azure Stack Edge Pro GPU
SI APPLICA A:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Nel dispositivo Azure Stack Edge Pro viene creato un cluster Kubernetes quando si configura il ruolo di calcolo. Dopo aver creato il cluster Kubernetes, le applicazioni in contenitori possono essere distribuite nel cluster Kubernetes nei pod. Esistono diversi modi per fornire spazio di archiviazione ai pod nel cluster Kubernetes.
Questo articolo descrive i metodi per effettuare il provisioning dell'archiviazione in un cluster Kubernetes in generale e in particolare nel contesto del dispositivo Azure Stack Edge Pro.
Archiviazione requisiti per i pod Kubernetes
I pod Kubernetes sono senza stato, ma le applicazioni eseguite sono in genere con stato. Poiché i pod possono essere di breve durata e si riavviano, e si esegue il failover o lo spostamento tra nodi Kubernetes, è necessario soddisfare i requisiti seguenti per l'archiviazione associata al pod.
L'archiviazione deve:
- Vivere all'esterno del pod.
- Essere indipendente dal ciclo di vita dei pod.
- Essere accessibile da tutti i nodi Kubernetes.
Per comprendere come viene gestita l'archiviazione per Kubernetes, è necessario comprendere due risorse API:
PersistentVolume (PV): si tratta di una parte di spazio di archiviazione nel cluster Kubernetes. L'archiviazione Kubernetes può essere sottoposto a provisioning statico come
PersistentVolume
. Può anche essere sottoposto a provisioning dinamico comeStorageClass
.PersistentVolumeClaim (PVC): richiesta di archiviazione da parte di un utente. I PVC utilizzano le risorse PV. I pvc possono richiedere dimensioni e modalità di accesso specifiche.
Poiché gli utenti devono
PersistentVolumes
avere proprietà diverse per problemi diversi, gli amministratori del cluster devono quindi essere in grado di offrire un'ampia gamma diPersistentVolumes
tipi diversi rispetto alle modalità di accesso e alle dimensioni. Per queste esigenze, è necessaria laStorageClass
risorsa.
Archiviazione il provisioning può essere statico o dinamico. Ognuno dei tipi di provisioning è illustrato nelle sezioni seguenti.
Provisioning statico
Gli amministratori del cluster Kubernetes possono eseguire il provisioning statico dell'archiviazione. A tale scopo, possono usare il back-end di archiviazione basato su file system SMB/NFS o usare dischi iSCSI collegati localmente tramite la rete in un ambiente locale o anche usare File di Azure o Dischi di Azure nel cloud. Questo tipo di archiviazione non viene effettuato per impostazione predefinita e gli amministratori del cluster devono pianificare e gestire questo provisioning.
Di seguito è riportato un diagramma che illustra come viene utilizzata l'archiviazione con provisioning statico in Kubernetes:
Si verificano i passaggi seguenti:
Provisioning dell'archiviazione: l'amministratore del cluster effettua il provisioning dell'archiviazione. In questo esempio, l'amministratore del cluster crea una o più condivisioni SMB che creano automaticamente oggetti volume persistente nel cluster Kubernetes corrispondente a queste condivisioni.
Archiviazione attestazioni: si invia una distribuzione IN PVC che richiede l'archiviazione. Questa attestazione per l'archiviazione è il PersistentVolumeClaim (PVC). Se le dimensioni e la modalità di accesso della PV corrispondono a quella del PVC, il PVC viene associato alla PV. Il PVC e la mappa PV uno-a-uno.
Montare il PVC nel contenitore: una volta che il PVC è associato alla PV, è possibile montare questo PVC in un percorso nel contenitore. Quando la logica dell'applicazione nel contenitore legge/scrive da/in questo percorso, i dati vengono scritti nell'archiviazione SMB.
Provisioning dinamico
Di seguito è riportato un diagramma che illustra come viene utilizzata l'archiviazione con provisioning statico in Kubernetes:
Si verificano i passaggi seguenti:
Definire la classe di archiviazione: l'amministratore del cluster definisce una classe di archiviazione a seconda dell'ambiente operativo per il cluster Kubernetes. L'amministratore del cluster distribuisce anche un provisioner, che è ancora un altro pod o applicazione distribuito nel cluster Kubernetes. Il provisioner include tutti i dettagli per effettuare il provisioning delle condivisioni in modo dinamico.
Archiviazione attestazioni: si invia un'applicazione che richiede l'archiviazione. Dopo aver creato un PVC con questo riferimento alla classe di archiviazione, viene richiamato il provisioner.
Effettuare il provisioning dell'archiviazione in modo dinamico: il provisioner crea dinamicamente la condivisione associata all'archiviazione su disco locale. Una volta creata la condivisione, viene creato anche un oggetto PV corrispondente automaticamente a questa condivisione.
Montare IL PVC nel contenitore: una volta che il PVC è associato al PV, è possibile montare il PVC sul contenitore in un percorso nello stesso modo del provisioning statico e leggere o scrivere nella condivisione.
Archiviazione il provisioning in Azure Stack Edge Pro
Nel dispositivo Azure Stack Edge Pro, il PersistentVolumes
provisioning statico viene creato usando le funzionalità di archiviazione del dispositivo. Quando si effettua il provisioning di una condivisione e si usa l'opzione di calcolo Edge è abilitata, questa azione crea automaticamente una risorsa PV nel cluster Kubernetes.
Per usare la suddivisione in livelli nel cloud, è possibile creare una condivisione cloud Edge con l'opzione Usa la condivisione con il calcolo Edge abilitata. Un pv viene creato di nuovo automaticamente per questa condivisione. Tutti i dati dell'applicazione scritti nella condivisione Edge vengono a livelli nel cloud.
È possibile creare condivisioni SMB e NFS per effettuare il provisioning statico di PVS nel dispositivo Azure Stack Edge Pro. Una volta effettuato il provisioning del pv, si invierà un PVC per richiedere questa risorsa di archiviazione. Di seguito è riportato un esempio di distribuzione yaml
di PVC che richiede l'archiviazione e usa le condivisioni di cui è stato effettuato il provisioning.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-smb-flexvol
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
volumeName: <nfs-or-smb-share-name-here>
storageClassName: ""
Per ottenere il valore del volumeName
campo, selezionare il punto di montaggio locale per i moduli di calcolo Edge quando si seleziona la condivisione SMB o NFS dopo la creazione. Corrisponde al nome della condivisione.
Per altre informazioni, vedere Distribuire un'applicazione con stato tramite provisioning statico in Azure Stack Edge Pro tramite kubectl.
Per accedere alla stessa risorsa di archiviazione con provisioning statico, le opzioni di montaggio del volume corrispondenti per le associazioni di archiviazione per IoT sono le seguenti. /home/input
è il percorso in cui il volume è accessibile all'interno del contenitore.
{
"HostConfig": {
"Mounts": [
{
"Target": "/home/input",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
},
{
"Target": "/home/output",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
}]
}
}
Azure Stack Edge Pro include anche una chiamata predefinita StorageClass
ase-node-local
che usa un'archiviazione su disco dati collegata al nodo Kubernetes. Questo StorageClass
supporta il provisioning dinamico. È possibile creare automaticamente un StorageClass
riferimento nelle applicazioni pod e un pv viene creato automaticamente. Per altre informazioni, vedere il dashboard di Kubernetes su cui eseguire una query per ase-node-local StorageClass
.
Per altre informazioni, vedere Distribuire un'applicazione con stato tramite provisioning dinamico in Azure Stack Edge Pro tramite kuebctl.
Scegliere il tipo di archiviazione
Potrebbe essere necessario scegliere il tipo di archiviazione a seconda del carico di lavoro che si sta distribuendo.
Se si vuole
ReadWriteMany
la modalità di accesso per laPersistentVolumes
posizione in cui i volumi vengono montati come in lettura/scrittura da molti nodi che distribuiscono, usare il provisioning statico per le condivisioni SMB/NFS.Se le applicazioni distribuite hanno un requisito di conformità POSIX, ad esempio applicazioni come MongoDB, PostgreSQL, MySQL o Prometheus, usare la Archiviazione Class predefinita. Le modalità di accesso sono
ReadWriteOnce
o il volume viene montato come lettura/scrittura da un singolo nodo.
Per altre informazioni sulle modalità di accesso, vedere Modalità di accesso ai volumi Kubernetes.
Passaggi successivi
Per informazioni su come effettuare il provisioning statico di un oggetto PersistentVolume
, vedere:
Per informazioni su come effettuare il provisioning dinamico di un oggetto StorageClass
, vedere: