Questa pagina mostra come utilizzare l'hardware di archiviazione esterna, come i dischi permanenti di Compute Engine, come volumi temporanei nei carichi di lavoro Google Kubernetes Engine (GKE). Dovresti già conoscere i volumi e gli StorageClasses di Kubernetes.
Quando utilizzare l'archiviazione temporanea in Kubernetes
L'archiviazione temporanea è utile in qualsiasi situazione in cui i carichi di lavoro hanno bisogno dei dati solo durante il ciclo di vita dell'applicazione, ad esempio per pipeline di elaborazione 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 archiviazione temporanea nei pod. Questo approccio spesso richiede un'attenta pianificazione degli spazi.
I volumi temporanei generici di Kubernetes ti consentono di richiedere esplicitamente lo spazio di archiviazione temporaneo per i tuoi pod utilizzando oggetti PersistentVolumeClaim. GKE esegue il provisioning dinamico dei dischi permanenti di Compute Engine e collega i dischi ai tuoi nodi. Questo tipo di archiviazione temporanea è utile in situazioni come le seguenti:
- I tuoi carichi di lavoro hanno requisiti di prestazioni elevate, quindi devi controllare l'hardware di archiviazione.
- Hai bisogno di spazio di archiviazione temporaneo a breve termine specifico per il container.
- Vuoi evitare di utilizzare
emptyDir
per il provisioning dello spazio di archiviazione temporaneo. I volumiemptyDir
sono comunque utili nelle situazioni in cui vuoi che più container condividano i dati nello spazio di archiviazione temporaneo. - Vuoi una capacità di archiviazione temporanea superiore rispetto ai valori predefiniti integrati di GKE.
- Vuoi evitare di dover pianificare le dimensioni e il tipo del disco di avvio del nodo in anticipo per i cluster GKE in modalità Standard.
Tipi di archiviazione temporanea in GKE
In generale, puoi utilizzare la capacità di archiviazione del disco di avvio o i dischi permanenti dedicati come archiviazione temporanea nei pod e nei container. La seguente tabella descrive le differenze:
Tipo di archiviazione | Come utilizzarlo | Descrizione |
---|---|---|
Disco di avvio - Dischi permanenti | Monta un volume utilizzando Per le istruzioni, consulta la sezione Creazione di volumi. |
L'archiviazione temporanea richiesta viene acquisita da una parte riservata del disco di avvio del nodo. Questa è l'impostazione predefinita sia nei cluster Autopilot che in quelli Standard. Utile quando i pod hanno richieste di archiviazione temporanee di piccole dimensioni o quando vuoi condividere i dati temporanei tra più container all'interno del pod. Pilota automatico
Standard Nessun limite di dimensione, ma richiede un'attenta pianificazione delle dimensioni del disco di avvio dei nodi e del tipo di hardware di archiviazione. Per maggiori dettagli su come GKE calcola la prenotazione di archiviazione temporanea nel disco di avvio del nodo, consulta Prenotazione di archiviazione temporanea locale. |
Dischi SSD locali |
Per le istruzioni, consulta Eseguire 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 nei nodi Autopilot che eseguono GPU A100 (80 GB).
Da utilizzare quando hai bisogno di archiviazione temporanea con velocità effettiva elevata. Per maggiori dettagli, consulta Informazioni sugli SSD locali per GKE. |
Dischi permanenti dedicati |
Questo documento fornisce istruzioni per richiedere questo tipo di archiviazione temporanea. |
Google Cloud esegue il provisioning dinamico dell'hardware esterno richiesto, lo collega ai tuoi nodi e monta il volume richiesto nel tuo pod. Da utilizzare quando i pod hanno richieste di archiviazione temporanea di grandi dimensioni o quando vuoi controllare il tipo di Persistent Disk sottostante. Questi volumi hanno le seguenti proprietà:
Per maggiori dettagli su questo tipo di volume temporaneo, consulta Volumi temporanei generici. |
Prezzi
Lo spazio di archiviazione di cui esegui il provisioning tramite volumi temporanei generici come descritto in questa guida viene fatturato in base ai prezzi dei dischi di Compute Engine.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize 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 progetto Google Cloud per l'hardware di archiviazione. Per gestire la tua quota, consulta Visualizzare le quote per il progetto.
Creazione di un oggetto StorageClass
La creazione di un oggetto StorageClass di Kubernetes personalizzato consente di specificare il tipo di archiviazione di cui eseguire il provisioning in base ai requisiti di prezzo e prestazioni. Questo passaggio è facoltativo, ma consigliato. Se vuoi utilizzare StorageClass predefinito di GKE, che ha il tipo di Persistent Disk pd-balanced
, salta questo passaggio.
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 Persistent Disk che vuoi, ad esempiopd-ssd
. Per un elenco dei tipi supportati, consulta Tipi di dischi permanenti nella documentazione di Compute Engine.Crea il oggetto StorageClass:
kubectl create -f ephemeral-pd-class.yaml
Richiedi capacità di archiviazione temporanea in un pod
Per eseguire il provisioning, collegare e utilizzare l'hardware esterno per l'archiviazione temporanea, aggiungi il volume corrispondente al manifest del pod e aggiungi un montaggio del volume alla 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 PersistentVolumeClaim Kubernetes che richiede un nuovo PersistentVolume 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. In questo esempio viene utilizzatoReadWriteOnce
, che monta l'oggetto PersistentVolume su un singolo nodo per consentire l'accesso da parte di uno o più pod sul nodo. Per maggiori dettagli, consulta Modalità di accesso..spec.storageClassName
: facoltativamente, il nome dell'oggetto StorageClass che hai creato. Se ometti questo campo, GKE utilizza il valore predefinito di StorageClass ed esegue il provisioning di un Persistent Diskpd-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 di PersistentVolumeClaim e collega il disco al nodo. GKE monta il volume nel pod e fornisce al container la capacità richiesta.
Verifica che GKE abbia montato un volume temporaneo
Crea una sessione 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 di shell:
exit