Questa pagina mostra come utilizzare l'hardware di archiviazione esterno, ad esempio i dischi permanenti di Compute Engine, come volumi temporanei nei workload Google Kubernetes Engine (GKE). Dovresti già avere familiarità con Kubernetes Volumi e StorageClasses.
Quando utilizzare lo spazio di archiviazione temporaneo in Kubernetes
Lo spazio di archiviazione temporaneo è utile in qualsiasi situazione in cui i workload hanno bisogno dei 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, una parte del disco di avvio del nodo GKE è disponibile per l'utilizzo come spazio di archiviazione temporaneo nei pod. Questo approccio spesso richiede un'attenta pianificazione dello spazio.
I volumi temporanei generici di Kubernetes consentono di richiedere esplicitamente lo spazio di archiviazione temporaneo per i pod utilizzando gli oggetti PersistentVolumeClaim. GKE esegue il provisioning dinamico dei dischi permanenti di Compute Engine Persistent Disks e li collega ai nodi. Questo tipo di spazio di archiviazione temporaneo è utile in situazioni come le seguenti:
- I workload hanno requisiti di prestazioni elevate, quindi devi controllare l'hardware di archiviazione.
- Hai bisogno di spazio di archiviazione temporaneo a breve termine specifico per i container.
- Vuoi evitare di utilizzare
emptyDirper eseguire il provisioning dello spazio di archiviazione temporaneo. I volumiemptyDirsono ancora utili nelle situazioni in cui vuoi che più container condividano i dati nello spazio di archiviazione temporaneo. - Vuoi una capacità di archiviazione temporanea maggiore rispetto ai valori predefiniti integrati di GKE.
- Vuoi evitare di dover pianificare in anticipo le dimensioni e il tipo del disco di avvio del nodo per i cluster GKE in modalità Standard.
Tipi di spazio di archiviazione temporaneo in GKE
In generale, puoi utilizzare la capacità di archiviazione del disco di avvio o i dischi permanenti dedicati come spazio di archiviazione temporaneo nei pod e nei container. La tabella seguente descrive le differenze:
| Tipo di archiviazione | Come utilizzarlo | Descrizione |
|---|---|---|
| Disco di avvio - Dischi permanenti | Monta un volume utilizzando Per le istruzioni, vedi Creazione di volumi. |
Lo spazio di archiviazione temporaneo richiesto viene prelevato da una parte riservata del disco di avvio del nodo. Questo è il valore predefinito sia nei cluster Autopilot che in quelli Standard. Utilizza questa opzione quando i pod hanno piccole richieste di spazio di archiviazione temporaneo o quando vuoi condividere i dati temporanei tra più container nel pod. Autopilot
Standard Nessun limite di dimensioni, ma richiede un'attenta pianificazione delle dimensioni del disco di avvio del nodo e tipo di hardware di archiviazione. Per informazioni dettagliate su come GKE calcola la prenotazione dello spazio di archiviazione temporaneo nel disco di avvio del nodo, vedi Prenotazione dello spazio di archiviazione temporaneo locale. |
| Dischi SSD locali |
Per le istruzioni, vedi Eseguire il provisioning dello spazio di archiviazione temporaneo 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).
Utilizza questa opzione quando hai bisogno di uno spazio di archiviazione temporaneo con un throughput elevato. Per maggiori dettagli, vedi Informazioni sugli SSD locali per GKE. |
| Dischi permanenti dedicati |
Questo documento fornisce istruzioni per richiedere questo tipo di spazio di archiviazione temporaneo tipo. |
Google Cloud esegue il provisioning dinamico dell'hardware esterno richiesto lo collega ai nodi e monta il volume richiesto nel pod. Utilizza questa opzione quando i pod hanno richieste di spazio di archiviazione temporaneo di grandi dimensioni o quando vuoi controllare il tipo di Persistent Disk sottostante. Questi volumi hanno le seguenti proprietà:
Per informazioni dettagliate su questo tipo di volume temporaneo, vedi 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à,
installala e poi
inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il
gcloud components updatecomando. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
- Assicurati di avere un cluster GKE Autopilot o Standard che esegue la versione 1.23 o successive.
- Assicurati di avere una quota sufficiente nel tuo Google Cloud progetto per l' hardware di archiviazione. Per gestire la quota, vedi Visualizzare e gestire le quote.
Creare un oggetto StorageClass
La creazione di un oggetto StorageClass di Kubernetes personalizzato consente di specificare il tipo di spazio di archiviazione di cui eseguire il provisioning in base ai requisiti di prezzo e prestazioni. Questo passaggio è facoltativo, ma consigliato. Se vuoi utilizzare l'oggetto 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_TYPESostituisci
STORAGE_TYPEcon il nome del tipo di Persistent Disk che vuoi, ad esempiopd-ssd. Per un elenco dei tipi supportati, vedi 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 volume corrispondente al manifest del pod e 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: 1TiQuesto manifest crea un nuovo oggetto PersistentVolumeClaim di Kubernetes che richiede un nuovo oggetto PersistentVolume denominato
ephemeral-volumecon 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 dei volumi tra i nodi. Questo esempio utilizzaReadWriteOnce, che monta l'oggetto PersistentVolume su un singolo nodo per l'accesso da parte di uno o più pod sul nodo. Per maggiori dettagli, vedi Modalità di accesso..spec.storageClassName: facoltativamente, il nome dell'oggetto StorageClass che hai creato. Se ometti questo campo, GKE utilizza l'oggetto StorageClass predefinito 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 di Compute Engine che soddisfa i requisiti dell'oggetto PersistentVolumeClaim e lo collega al nodo. GKE monta il volume nel pod e fornisce la capacità richiesta al container.
Verificare che GKE abbia montato un volume temporaneo
Crea una sessione shell nel pod:
kubectl exec -it deploy/ephemeral-deployment -- bashControlla i volumi montati:
df -hL'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