Volumi


Questa pagina fornisce una panoramica dei volumi in Kubernetes e del loro utilizzo con Google Kubernetes Engine (GKE).

Panoramica

I file su disco all'interno di un container sono la posizione più semplice in cui un'applicazione può scrivere dati, ma questo approccio presenta degli svantaggi. I file vanno persi quando il container si arresta in modo anomalo o si arresta per qualsiasi altro motivo. Inoltre, i file all'interno di un container sono inaccessibili agli altri container in esecuzione sullo stesso pod. L'astrazione volume Kubernetes risolve entrambi i problemi.

Concettualmente, un volume è una directory accessibile a tutti i container in un pod. L'origine del volume dichiarata nella specifica del pod determina il modo in cui viene creata la directory, il mezzo di archiviazione utilizzato e i contenuti iniziali della directory. Un pod specifica i volumi che contiene e il percorso in cui i container installano il volume.

I tipi di volume temporaneo hanno le stesse durate dei pod che contengono. Questi volumi vengono creati al momento della creazione del pod e persistono durante i riavvii dei container. Quando il pod viene terminato o eliminato, anche i suoi volumi.

Altri tipi di volume sono interfacce per uno spazio di archiviazione durevole che esistono indipendentemente da un pod. A differenza dei volumi temporanei, i dati in un volume supportato da un'archiviazione durevole vengono conservati quando il pod viene rimosso. Il volume viene solo smontato e i dati possono essere trasferiti a un altro pod. Invece di specificare direttamente i tipi di archiviazione durevole, devi utilizzare le risorse PersistentVolume per gestire il ciclo di vita dei tipi di archiviazione durevole.

Tipi di volumi

I volumi si differenziano per l'implementazione dello spazio di archiviazione e per i contenuti iniziali. Puoi scegliere l'origine del volume più adatta al tuo caso d'uso. Nelle sezioni seguenti sono descritte diverse sorgenti di volume comuni. Per un elenco completo dei tipi di volume, consulta la documentazione dei volumi Kubernetes.

emptyDir

Un volume emptyDir fornisce una directory vuota da cui i container nel pod possono leggere e scrivere. Quando il pod viene rimosso da un nodo per qualsiasi motivo, i dati in emptyDir vengono eliminati definitivamente. Un volume emptyDir viene archiviato su qualsiasi mezzo di backup del nodo, che può essere un disco, un'unità SSD o uno spazio di archiviazione di rete, a seconda dell'ambiente. I volumi emptyDir sono utili per lo spazio temporaneo e la condivisione di dati tra più container in un pod.

Tutti i montaggi emptyDir fanno parte dell'archiviazione temporanea dei nodi, che include anche il livello del container e i log scrivibili. Per impostazione predefinita, GKE Autopilot imposta lo spazio di archiviazione temporaneo su 1 GiB, per dare alla tua app un po' di spazio per creare alcuni file. Se ne hai bisogno, puoi ottimizzare lo spazio di archiviazione temporaneo nel deployment impostando una richiesta di risorse per ephemeral-storage.

Se utilizzi container con pool di nodi Linux, puoi impostare il campo emptyDir.medium su Memory per indicare a Kubernetes di montare un file system tmpfs (file system supportato da RAM). Tuttavia, ciò non è supportato nei container di Windows Server.

ConfigMap

Una risorsa ConfigMap fornisce un modo per inserire i dati di configurazione nei pod. È possibile fare riferimento ai dati archiviati in un oggetto ConfigMap in un volume di tipo ConfigMap e poi consumare tramite file in esecuzione in un pod. I file in un volume ConfigMap sono specificati da una risorsa ConfigMap.

Secret

Un volume Secret viene utilizzato per rendere disponibili alle applicazioni dati sensibili come password, token OAuth e chiavi SSH. È possibile fare riferimento ai dati archiviati in un oggetto Secret in un volume di tipo Secret e poi consumati attraverso file eseguiti in un pod.

downwardAPI

Un volume downwardAPI rende i dati dell'API Downward disponibili per le applicazioni. Questi dati includono informazioni sul pod e sul container in cui è in esecuzione un'applicazione. Ad esempio, un pod può essere configurato per esporre un oggetto DownwardAPIVolumeFile alle applicazioni che includono lo spazio dei nomi e l'indirizzo IP del pod. Per un elenco completo dei tipi di dati che puoi aggiungere, consulta Funzionalità dell'API Downward.

PersistentVolumeClaim

Un volume PersistentVolumeClaim può essere utilizzato dagli operatori di cluster per eseguire il provisioning di uno spazio di archiviazione durevole che possa essere utilizzato dalle applicazioni. Un pod utilizza un PersistentVolumeClaim per montare un volume supportato da questo spazio di archiviazione durevole.

Passaggi successivi