Usa dischi permanenti dedicati come volumi temporanei


In questa pagina viene illustrato come utilizzare l'hardware di archiviazione esterno, ad esempio i dischi permanenti di Compute Engine, come volumi temporanei Carichi di lavoro di Google Kubernetes Engine (GKE). Dovresti già conoscere Kubernetes Volumi e StorageClasses.

Quando utilizzare l'archiviazione temporanea in Kubernetes

L'archiviazione temporanea è utile in tutte le situazioni in cui i carichi di lavoro hanno bisogno solo durante il ciclo di vita dell'applicazione, ad esempio durante l'elaborazione pipeline, job di machine learning, elaborazione batch, memorizzazione nella cache locale o analisi. Per impostazione predefinita, parte del disco di avvio del nodo GKE può essere utilizzata archiviazione temporanea nei tuoi pod. Questo approccio richiede spesso un'attenta pianificazione degli spazi.

Kubernetes volumi temporanei generici ti consentono di richiedere esplicitamente le istanze di archiviazione per i tuoi pod mediante oggetti PersistentVolumeClaim. GKE esegue dinamicamente il provisioning di Compute Engine Dischi permanenti e collegamenti i dischi ai nodi. Questo tipo di archiviazione temporanea è utile in situazioni ad esempio:

  • 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 e condividere i dati nello spazio di archiviazione temporaneo.
  • Vuoi più capacità di archiviazione temporanea rispetto a GKE predefiniti integrati.
  • Vuoi evitare di dover pianificare le dimensioni del disco di avvio del nodo e di digitarlo 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 Dischi permanenti come spazio di archiviazione temporaneo nei pod e nei container. La la seguente tabella descrive le differenze:

Tipo di archiviazione Come utilizzarlo Descrizione
Disco di avvio - Dischi permanenti

Monta un volume utilizzando emptyDir nella specifica del pod e richiedere la capacità che ti serve.

Per istruzioni, vedi Creazione di volumi.

Lo spazio di archiviazione temporaneo richiesto viene recuperato da una parte riservata il disco di avvio del nodo. Questa è l'impostazione predefinita sia in Autopilot di 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

  • La richiesta deve essere compresa tra 10 MiB e 10 GiB.
  • Il tipo di hardware di archiviazione è preconfigurato.

Standard

Nessun limite di dimensione, ma richiede un'attenta pianificazione delle dimensioni del disco di avvio del nodo e hardware di archiviazione.

Per maggiori dettagli su come GKE calcola lo spazio di archiviazione temporaneo nel disco di avvio del nodo, Prenotazione dello spazio di archiviazione temporaneo locale.

Dischi SSD locali
  1. Crea un pool di nodi con dischi SSD locali collegati e un di macchine virtuali.
  2. Monta un volume utilizzando emptyDir con lo strumento e la capacità di archiviazione.
  3. Usa un nodeSelector per posizionare i pod sui nodi con SSD locale collegato i dischi permanenti.

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, vedi Informazioni sulle unità SSD locali per GKE.

Dischi permanenti dedicati
  1. Facoltativamente, crea un oggetto StorageClass Kubernetes per l'hardware.
  2. Monta un volume utilizzando il tipo di volume ephemeral nel la specifica del pod.

Questo documento fornisce istruzioni per richiedere lo spazio di archiviazione temporaneo di testo.

Google Cloud esegue dinamicamente il provisioning dell'oggetto esterno richiesto l'hardware, lo ha collegato ai tuoi nodi e monta il volume richiesto all'interno del 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à:

  • Fino a 64 TiB in modalità Autopilot e Standard modalità
  • Sono supportati hardware specializzati come volumi supportati da SSD.
  • Network Attached Storage.
  • per ottenere spazio di archiviazione, usa Kubernetes Volumes, invece di usare emptyDir per condividere il disco di avvio del nodo.

Per maggiori dettagli 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.
  • Abilita l'API Google Kubernetes Engine .
  • Se vuoi utilizzare Google Cloud CLI per questa attività, install e poi initialize con gcloud CLI. Se hai già installato gcloud CLI, scarica la versione più recente eseguendo gcloud components update.
  • Assicurati di avere un GKE Autopilot o uno Standard con la versione 1.23 o successive.
  • Assicurati di disporre di una quota sufficiente nel tuo progetto Google Cloud per 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.

  1. 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 desiderato, ad esempio pd-ssd. Per un elenco di tipi supportati, consulta Tipi di dischi permanenti nella documentazione di Compute Engine.

  2. Crea l'oggetto StorageClass:

    kubectl create -f ephemeral-pd-class.yaml
    

Richiedere 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.

  1. 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 di Kubernetes richiede un nuovo PersistentVolume denominato ephemeral-volume con il seguente codice proprietà:

    • spec.volumes.ephemeral: il tipo di volume ephemeral.
    • .spec.accessModes: la modalità di accesso al volume, che determina l'accesso in lettura/scrittura dai pod e dalla condivisione dei volumi tra i nodi. Questo esempio utilizza ReadWriteOnce, che monta il 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 del classe di archiviazione che è stato creato. Se ometti questo campo, GKE utilizza il valore predefinito StorageClass ed esegue il provisioning di un Persistent Disk pd-balanced.
    • .spec.resources.requests.storage: la capacità di archiviazione che vuoi.
  2. Crea il deployment:

    kubectl create -f ephemeral-ssd-deployment.yaml
    

GKE esegue il provisioning di un disco Compute Engine che soddisfa di PersistentVolumeClaim e collega il disco al nodo. GKE monta il volume nel pod e fornisce la capacità richiesta al container.

Verifica che GKE abbia montato un volume temporaneo

  1. Crea una sessione di shell nel pod:

    kubectl exec -it deploy/ephemeral-deployment -- bash
    
  2. 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
    ...
    
  3. Esci dalla sessione di shell:

    exit
    

Passaggi successivi