Questa pagina mostra come utilizzare l'hardware di archiviazione esterno, come i dischi permanenti Compute Engine, come volumi effimeri nei carichi di lavoro Google Kubernetes Engine (GKE). Dovresti già conoscere Kubernetes Volumi e StorageClasses.
Quando utilizzare lo spazio di archiviazione temporaneo in Kubernetes
L'archiviazione temporanea è utile in qualsiasi situazione in cui i carichi di lavoro richiedono i dati solo durante il ciclo di vita dell'applicazione, ad esempio per pipeline di elaborazione dei dati, job di machine learning, elaborazione batch, memorizzazione nella cache locale o analisi. Per impostazione predefinita, parte del disco di avvio del nodo GKE è disponibile per essere utilizzata come spazio di archiviazione temporaneo nei pod. Questo approccio richiede spesso un'attenta pianificazione degli spazi.
Kubernetes volumi temporanei generici ti consentono di richiedere esplicitamente le istanze per i tuoi pod mediante oggetti PersistentVolumeClaim. GKE esegue il provisioning dinamico dei dischi permanenti di Compute Engine e li collega ai tuoi nodi. Questo tipo di spazio di archiviazione temporaneo è utile in situazioni come le seguenti:
- I tuoi carichi di lavoro hanno requisiti di prestazioni elevate, quindi devi controllare hardware di archiviazione.
- Hai bisogno di spazio di archiviazione temporaneo a breve termine specifico del container.
- Vuoi evitare di utilizzare
emptyDir
per eseguire il provisioning dello spazio di archiviazione temporaneo.emptyDir
I volumi sono comunque utili nelle situazioni in cui vuoi che più container condividano i dati nello spazio di archiviazione temporaneo. - Vuoi più capacità di archiviazione temporanea rispetto a GKE predefiniti integrati.
- Vuoi evitare di dover pianificare in anticipo le dimensioni e il tipo di disco di avvio dei nodi per i cluster GKE in modalità standard.
Tipi di spazio di archiviazione temporanea in GKE
In generale, puoi utilizzare la capacità di archiviazione del disco di avvio Dischi permanenti come spazio di archiviazione temporaneo nei pod e nei container. Nella tabella seguente sono descritte le differenze:
Tipo di archiviazione | Come utilizzarlo | Descrizione |
---|---|---|
Disco di avvio - Dischi permanenti | Monta un volume utilizzando Per istruzioni, vedi Creazione di volumi. |
Lo spazio di archiviazione temporaneo richiesto viene recuperato da una parte riservata il disco di avvio del nodo. Questo è il valore predefinito sia nei cluster Autopilot sia nei cluster Standard. Da usare quando i pod hanno richieste di archiviazione temporanea di piccole dimensioni o quando vuoi di condividere i dati temporanei tra più container nel pod. Pilota automatico
Standard Nessun limite di dimensione, ma richiede un'attenta pianificazione delle dimensioni del disco di avvio del nodo e hardware di archiviazione. Per informazioni dettagliate su come GKE calcola la prenotazione dello spazio di archiviazione temporaneo nel disco di avvio del nodo, consulta Prenotazione dello spazio di archiviazione temporaneo locale. |
Dischi SSD locali |
Per istruzioni, vedi Esegui il provisioning dell'archiviazione temporanea con SSD locali. |
I dischi SSD locali utilizzano incrementi fissi di 375 GB supportati
nei cluster GKE in modalità Standard e in Autopilot
nodi che eseguono GPU A100 (80 GB).
Da utilizzare quando hai bisogno di archiviazione temporanea con velocità effettiva elevata. Per maggiori dettagli, consulta Informazioni sulle unità SSD locali per GKE. |
Dischi permanenti dedicati |
Questo documento fornisce istruzioni per richiedere lo spazio di archiviazione temporaneo di testo. |
Google Cloud esegue il provisioning dinamico dell'hardware esterno richiesto, lo collega ai tuoi nodi e monta il volume richiesto nel tuo pod. Da usare quando i pod hanno richieste di archiviazione temporanea di grandi dimensioni o quando vuoi il tipo di Persistent Disk sottostante. Questi volumi presentano le seguenti caratteristiche proprietà:
Per informazioni dettagliate su questo tipo di volume temporaneo, consulta Volumi temporanei generici. |
Prezzi
Spazio di archiviazione di cui esegui il provisioning tramite volumi temporanei generici come descritto in Questa guida viene fatturata in base ai prezzi dei dischi di Compute Engine.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente
eseguendo
gcloud components update
.
- Assicurati di avere un cluster GKE Autopilot o Standard che esegue la versione 1.23 o successive.
- Assicurati di disporre di una quota sufficiente nel tuo progetto Google Cloud per l'hardware di archiviazione. Per gestire la tua quota, vedi Visualizza le quote per il tuo progetto.
Creazione di un oggetto StorageClass
La creazione di un oggetto StorageClass personalizzato per Kubernetes ti consente di specificare il tipo di spazio di archiviazione
di provisioning in base ai tuoi requisiti di prezzo e prestazioni. Questo passaggio è facoltativo, ma consigliato. Se vuoi utilizzare l'ambiente predefinito di GKE
Salta questo passaggio per StorageClass, che ha il tipo di Persistent Disk pd-balanced
.
Salva il seguente manifest come
ephemeral-pd-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ephemeral-ssd provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: STORAGE_TYPE
Sostituisci
STORAGE_TYPE
con il nome del tipo di disco permanente che preferisci, ad esempiopd-ssd
. Per un elenco dei tipi supportati, consulta Tipi di dischi permanenti nella documentazione di Compute Engine.Crea l'oggetto StorageClass:
kubectl create -f ephemeral-pd-class.yaml
Richiedere la capacità di archiviazione temporanea in un pod
Per eseguire il provisioning, collegare e utilizzare l'hardware esterno come spazio di archiviazione temporaneo, aggiungi il token volume corrispondente al manifest del pod e aggiungi un montaggio del volume al container la specifica del container.
Salva il seguente manifest come
ephemeral-ssd-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: ephemeral-deployment spec: replicas: 1 selector: matchLabels: storage: ephemeral template: metadata: labels: storage: ephemeral spec: containers: - name: ephemeral-container image: nginx resources: requests: cpu: 500m memory: 2Gi ephemeral-storage: 2Gi volumeMounts: - mountPath: "/short-term" name: ephemeral-volume volumes: - name: ephemeral-volume ephemeral: volumeClaimTemplate: metadata: labels: type: ephemeral spec: accessModes: ["ReadWriteOnce"] storageClassName: "ephemeral-ssd" resources: requests: storage: 1Ti
Questo manifest crea un nuovo oggetto Kubernetes PersistentVolumeClaim che richiede un nuovo volume permanente denominato
ephemeral-volume
con le seguenti proprietà:spec.volumes.ephemeral
: il tipo di volumeephemeral
..spec.accessModes
: la modalità di accesso al volume, che determina l'accesso in lettura/scrittura dai pod e la condivisione del volume tra i nodi. Questo esempio utilizzaReadWriteOnce
, che monta il volume persistente su un singolo nodo per essere acceduto da uno o più pod sul nodo. Per maggiori dettagli, consulta la sezione Modalità di accesso..spec.storageClassName
: facoltativo, il nome della classe di archiviazione che hai creato. Se ometti questo campo, GKE utilizza la StorageClass predefinita e esegue il provisioning di un disco permanentepd-balanced
..spec.resources.requests.storage
: la capacità di archiviazione che vuoi.
Crea il deployment:
kubectl create -f ephemeral-ssd-deployment.yaml
GKE esegue il provisioning di un disco Compute Engine che soddisfa i requisiti del claim del volume permanente e lo collega al nodo. GKE monta il volume nel pod e fornisce la capacità richiesta al container.
Verifica che GKE abbia montato un volume temporaneo
Crea una sessione di shell nel pod:
kubectl exec -it deploy/ephemeral-deployment -- bash
Controlla i volumi montati:
df -h
L'output è simile al seguente:
Filesystem Size Used Available Use% Mounted on ... /dev/sdb 1006.9G 28.0K 1006.8G 0% /short-term /dev/sda1 94.3G 3.6G 90.6G 4% /etc/hosts /dev/sda1 94.3G 3.6G 90.6G 4% /dev/termination-log /dev/sda1 94.3G 3.6G 90.6G 4% /etc/hostname /dev/sda1 94.3G 3.6G 90.6G 4% /etc/resolv.conf ...
Esci dalla sessione shell:
exit