Questa pagina spiega come eseguire il provisioning dell'archiviazione SSD locale sui cluster Google Kubernetes Engine (GKE) e come configurare i workload per utilizzare i dati dall'archiviazione temporanea supportata da SSD locale collegata ai nodi del cluster.
Per scoprire di più sul supporto degli SSD locali su GKE, consulta la sezione Informazioni sullo spazio di archiviazione SSD locale.
Prima di iniziare
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializzala. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo
gcloud components update
.
Crea un cluster o pool di nodi con archiviazione temporanea supportata da SSD locale
Utilizza Google Cloud CLI per creare un cluster o un pool di nodi con spazio di archiviazione effimero basato su SSD locale.
Utilizza l'opzione --ephemeral-storage-local-ssd
per collegare l'archiviazione
temporanea locale completamente gestita
supportata dai volumi SSD locali. Questo spazio di archiviazione è legato al ciclo di vita dei tuoi pod.
Quando i pod richiedono l'archiviazione temporanea, GKE
li pianifica per l'esecuzione su nodi con volumi SSD locali configurati come archiviazione
temporanea. Se vuoi un controllo più specializzato o granulare sugli SSD locali, ti consigliamo di utilizzare lo spazio di archiviazione a blocchi non elaborati supportato da SSD locali.
Se hai abilitato la scalabilità automatica del cluster, GKE esegue lo scale up dei nodi quando il cluster ha bisogno di più spazio di archiviazione temporaneo. I tuoi pod possono accedere ai dati sui volumi SSD locali tramite
il volume emptyDir
.
Il comando gcloud CLI che esegui per creare il cluster o il pool di nodi dipende dalla generazione della serie di macchine del tipo di macchina selezionato. Ad esempio, i tipi di macchine N1 e N2 appartengono rispettivamente a una serie di macchine di prima e seconda generazione, mentre i tipi di macchine C3 appartengono a una serie di macchine di terza generazione.
Crea un cluster con SSD locale
1ª o 2ª generazione
Se utilizzi un tipo di macchina di una serie di macchine di prima o seconda generazione,
crea il cluster specificando l'opzione --ephemeral-storage-local-ssd count=NUMBER_OF_DISKS
. Questa opzione esegue il provisioning del numero specificato di volumi SSD locali
su ogni nodo da utilizzare per l'archiviazione temporanea di kubelet.
Queste impostazioni si applicano solo al pool di nodi predefinito. Se i node pool successivi richiedono l'SSD locale, specificalo durante la creazione del node pool.
Per creare un cluster in esecuzione su GKE versione 1.25.3-gke.1800 o successive in cui il pool predefinito utilizza volumi SSD locali, esegui questo comando:
gcloud container clusters create CLUSTER_NAME \
--ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
--machine-type=MACHINE_TYPE \
--release-channel CHANNEL_NAME
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.NUMBER_OF_DISKS
: il numero di volumi SSD locali da provisionare su ogni nodo. Questi volumi vengono combinati in un unico volume logico durante la configurazione del nodo. Il numero massimo di volumi varia in base al tipo di macchina e alla regione. Tieni presente che una parte della capacità dell'SSD locale è riservata all'uso del sistema.MACHINE_TYPE
: il tipo di macchina da utilizzare. Questo campo è obbligatorio, in quanto l'SSD locale non può essere utilizzato con il tipoe2-medium
predefinito.CHANNEL_NAME
: un canale di rilascio che include versioni di GKE successive alla 1.25.3-gke.1800. Se preferisci non utilizzare un canale di rilascio, puoi anche utilizzare il flag--cluster-version
anziché--release-channel
, specificando una versione valida successiva alla 1.25.3-gke.1800. Per determinare le versioni valide, utilizza il comandogcloud container get-server-config
.
3ª o 4ª generazione
Se utilizzi un tipo di macchina di una serie di macchine di terza o quarta generazione, non devi specificare alcuna opzione SSD locale durante la creazione di un cluster. Il numero di dischi collegati a ciascun nodo dipende dal tipo di macchina.
Per creare un cluster, esegui questo comando:
gcloud container clusters create CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--cluster-version CLUSTER_VERSION
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster.MACHINE_TYPE
: il tipo di macchina da utilizzare da una serie di macchine di terza o quarta generazione.CLUSTER_VERSION
: una versione del cluster GKE che supporta l'SSD locale sui tipi di macchine di una serie di macchine di terza o quarta generazione.
Crea un pool di nodi con SSD locale
1ª o 2ª generazione
Per creare un pool di nodi in esecuzione su GKE versione 1.25.3-gke.1800 o successive che utilizza volumi SSD locali, esegui il comando seguente:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--ephemeral-storage-local-ssd count=NUMBER_OF_DISKS \
--machine-type=MACHINE_TYPE
Sostituisci quanto segue:
POOL_NAME
: il nome del nuovo pool di nodi.CLUSTER_NAME
: il nome del cluster.NUMBER_OF_DISKS
: il numero di volumi SSD locali da provisionare su ogni nodo. Questi volumi vengono combinati in un unico volume logico durante la configurazione del nodo. Il numero massimo di volumi varia in base al tipo di macchina e alla regione. Tieni presente che una parte della capacità dell'SSD locale è riservata all'utilizzo da parte del sistema.MACHINE_TYPE
: il tipo di macchina da utilizzare. Questo campo è obbligatorio, in quanto l'SSD locale non può essere utilizzato con il tipoe2-medium
predefinito.
3ª o 4ª generazione
Se utilizzi un tipo di macchina di una serie di macchine di terza o quarta generazione, non devi specificare alcuna opzione SSD locale durante la creazione di un pool di nodi. Il numero di volumi collegati a ogni nodo dipende dal tipo di macchina.
Per creare un pool di nodi, esegui questo comando:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE \
--node-version NODE_VERSION
Sostituisci quanto segue:
POOL_NAME
: il nome del nuovo pool di nodi.CLUSTER_NAME
: il nome del cluster.MACHINE_TYPE
: il tipo di macchina da utilizzare da una serie di macchine di terza o quarta generazione.NODE_VERSION
: una versione del pool di nodi GKE che supporta l'SSD locale sui tipi di macchine di una serie di macchine di terza o quarta generazione.
I nodi nel pool di nodi vengono creati con un'etichetta cloud.google.com/gke-ephemeral-storage-local-ssd=true
. Puoi verificare le etichette eseguendo questo comando:
kubectl describe node NODE_NAME
Utilizzare l'archiviazione temporanea basata su SSD locale con i cluster Autopilot
Puoi utilizzare gli SSD locali per l'archiviazione temporanea quando configuri i pod in uno dei seguenti modi:
- Selezioni esplicitamente una serie di macchine per eseguire i pod e specifichi il
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
nodeSelector o una prenotazione di capacità con SSD locali. Per saperne di più sulla selezione delle serie di macchine in Autopilot, consulta Ottimizzare il rendimento dei pod Autopilot scegliendo una serie di macchine. - Richiedi un tipo di GPU che supporti gli SSD locali e specifica
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
nodeSelector o una prenotazione di capacità che disponga di SSD locali. Le GPU NVIDIA H100 (80 GB) e NVIDIA A100 (80 GB) utilizzano sempre SSD locali per l'archiviazione temporanea e non puoi specificare il selettore di nodi per queste GPU. Per scoprire di più sulla richiesta di GPU su Autopilot, consulta Richiedere GPU nei container.
Consulta Serie di macchine che supportano l'SSD locale in Autopilot per un elenco delle serie di macchine compatibili con gli SSD locali.
Richiedere gli SSD locali direttamente nei manifest dei workload
Per utilizzare l'SSD locale per l'archiviazione temporanea, aggiungi
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
nodeSelector al manifest
del carico di lavoro. Ad esempio, il seguente manifest del pod seleziona gli SSD locali come
spazio di archiviazione temporaneo per i pod GPU:
apiVersion: v1
kind: Pod
metadata:
name: l4-localssd-pod
spec:
containers:
- name: my-gpu-container
image: nvidia/cuda:11.0.3-runtime-ubuntu20.04
command: ["/bin/bash", "-c", "--"]
args: ["while true; do sleep 600; done;"]
resources:
requests:
cpu: 16
memory: 64Gi
ephemeral-storage: 800Gi
limits:
cpu: 16
memory: 64Gi
ephemeral-storage: 800Gi
nvidia.com/gpu: 8
nodeSelector:
cloud.google.com/gke-accelerator: nvidia-l4
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
Richiedere SSD locali con prenotazioni di capacità
Se utilizzi una prenotazione di capacità di Compute Engine per prenotare macchine con SSD locali, Autopilot collega gli SSD locali disponibili dalla prenotazione ai tuoi nodi e non devi selezionarli esplicitamente nel manifest del workload. Per scoprire di più sull'utilizzo delle prenotazioni con Autopilot, consulta Utilizzare le prenotazioni di capacità nei cluster Autopilot.
Ad esempio, il seguente file manifest del pod seleziona una prenotazione specifica che dispone di SSD locali:
apiVersion: v1
kind: Pod
metadata:
name: local-ssd-pod
spec:
nodeSelector:
cloud.google.com/machine-family: MACHINE_SERIES
cloud.google.com/reservation-name: localssd-count-reservation
cloud.google.com/reservation-affinity: "specific"
containers:
- name: my-container
image: "k8s.gcr.io/pause"
resources:
requests:
cpu: 6
memory: "25Gi"
ephemeral-storage: "100Gi"
limits:
cpu: 12
memory: "50Gi"
ephemeral-storage: "200Gi"
Sostituisci MACHINE_SERIES
con una serie di macchine supportata che supporti anche gli SSD locali. Se la serie di macchine specificata non supporta gli SSD locali, il
deployment non va a buon fine e viene visualizzato un errore.
Serie di macchine che supportano l'SSD locale in Autopilot
I cluster Autopilot supportano l'utilizzo di SSD locali per l'archiviazione temporanea con le seguenti serie di macchine:
(solo con prenotazione della capacità) |
(solo con prenotazione della capacità) |
(solo con prenotazione della capacità) |
(solo con prenotazione della capacità) |
(solo con prenotazione della capacità) |
(sempre in bundle) |
(solo con prenotazione della capacità) |
(sempre in bundle) |
(sempre in bundle) |
Utilizzo del parametro API legacy
L'opzione --local-ssd-count
è un parametro API legacy che supporta l'SSD locale SCSI.
La serie di macchine di terza generazione di Compute Engine non supporta SCSI
e supporta solo NVMe. Utilizza questa opzione solo con i cluster Windows Server.
Se attualmente utilizzi il parametro API legacy sui cluster Linux, ti consigliamo di utilizzare l'opzione --ephemeral-storage-local-ssd
.
SSD locale sui cluster Windows Server
Quando utilizzi l'SSD locale con i tuoi cluster che eseguono i node pool Windows Server, devi accedere al nodo e formattare il volume prima di utilizzarlo. Nell'esempio seguente, il volume SSD locale è formattato con il file system NTFS. Puoi anche creare directory all'interno del volume. In questo esempio, le directory si trovano nel disco D.
PS C:\> Get-Disk | Where partitionstyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ntfs -Confirm:$false
PS C:\> mkdir D:\test-ssd
Accedere ai volumi SSD locali
Il seguente esempio mostra come accedere all'archiviazione temporanea supportata da SSD locale.
Archiviazione temporanea come volume emptyDir
Un pool di nodi GKE può essere configurato per utilizzare l'SSD locale per l'archiviazione temporanea, inclusi i volumi emptyDir
.
Il seguente manifest di pod utilizza un emptyDir
e un selettore di nodi cloud.google.com/gke-ephemeral-storage-local-ssd
. Puoi applicare una
tecnica simile per i manifest di Deployment o StatefulSet.
Quando scegli la richiesta di risorse di archiviazione temporanea, tieni conto della capacità SSD locale riservata all'uso del sistema.
apiVersion: v1
kind: Pod
metadata:
name: POD_NAME
spec:
containers:
- name: CONTAINER_NAME
image: "registry.k8s.io/pause"
resources:
requests:
ephemeral-storage: "200Gi"
volumeMounts:
- mountPath: /cache
name: scratch-volume
nodeSelector:
cloud.google.com/gke-ephemeral-storage-local-ssd: "true"
volumes:
- name: scratch-volume
emptyDir: {}
Risoluzione dei problemi
Per le istruzioni per la risoluzione dei problemi, consulta Risolvere i problemi di archiviazione in GKE.