Gestione dell'archiviazione Kubernetes nel dispositivo Azure Stack Edge Pro GPU

SI APPLICA A:Yes for Pro GPU SKUAzure Stack Edge Pro - GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure 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 come StorageClass.

  • 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 di PersistentVolumes tipi diversi rispetto alle modalità di accesso e alle dimensioni. Per queste esigenze, è necessaria la StorageClass 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:

Static provisioning via PersistentVolumes

Si verificano i passaggi seguenti:

  1. 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.

  2. 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.

  3. 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:

Dynamic provisioning via StorageClasses

Si verificano i passaggi seguenti:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Local share creation in Azure portal for static provisioning

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.

Cloud share creation in Azure portal for static provisioning

È 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.

Built-in storage class in Kubernetes dashboard

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 la PersistentVolumes 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: