Risoluzione dei problemi

Questa pagina include i passaggi per la risoluzione di alcuni problemi ed errori comuni.

Istanza FAILED

Lo stato FAILED indica che i dati dell'istanza sono stati persi e che l'istanza deve essere eliminata.

Le istanze Parallelstore in uno stato FAILED continuano a essere fatturate fino a quando non vengono eliminate.

Per recuperare lo stato di un'istanza, segui le istruzioni riportate in Gestire le istanze: recuperare un'istanza.

Per eliminare un'istanza, leggi Gestire le istanze: eliminare un'istanza.

Timeout durante il montaggio di dfuse o i test di rete

Se, durante il montaggio dell'istanza Parallelstore, il comando dfuse -m scade o se i comandi di test di rete come self_test o daos health net-test scadono, il problema potrebbe essere dovuto a un problema di connettività di rete.

Per verificare la connettività ai server Parallelstore, esegui

self_test --use-daos-agent-env -r 1

Se il test segnala un problema di connessione, i motivi possono essere due:

L'agente DAOS potrebbe aver selezionato l'interfaccia di rete sbagliata durante la configurazione

Potresti dover escludere le interfacce di rete che non sono in grado di raggiungere gli IP nell'elenco access_points.

  1. Esegui ifconfig per elencare le interfacce di rete disponibili. Un output di esempio può mostrare diverse interfacce di rete come eth0, docker0, ens8, lo e così via.

  2. Interrompi daos_agent.

  3. Modifica /etc/daos/daos_agent.yml per escludere le interfacce di rete indesiderate. Rimuovi il commento dalla riga exclude_fabric_ifaces e aggiorna i valori. Le voci incluse sono specifiche per la tua situazione. Ad esempio:

    exclude_fabric_ifaces: ["docker0", "ens8", "lo"]
    
  4. Riavvia daos_agent.

L'indirizzo IP dell'istanza o del client è in conflitto con gli indirizzi IP interni

Le istanze e i client Parallelstore non possono utilizzare un indirizzo IP dall'intervallo di subnet 172.17.0.0/16. Per ulteriori informazioni, consulta la sezione Problemi noti.

ENOSPC se nell'istanza è presente capacità inutilizzata

Se l'istanza utilizza la suddivisione minima o (valore predefinito) bilanciata, potresti riscontrare errori ENOSPC anche se i file esistenti non utilizzano tutta la capacità dell'istanza. Questo è probabile che si verifichi durante la scrittura di file di grandi dimensioni, in genere superiori a 8 GB, o durante l'importazione di questi file da Cloud Storage.

Utilizza la suddivisione massima dei file per ridurre la probabilità di questi errori.

Risoluzione dei problemi di Google Kubernetes Engine

La sezione seguente elenca alcuni problemi comuni e i passaggi per risolverli.

Transport endpoint is not connected nei pod del carico di lavoro

Questo errore è dovuto all'interruzione di dfuse. Nella maggior parte dei casi, dfuse è stato interrotto per esaurimento della memoria. Utilizza le annotazioni del pod gke-parallelstore/[cpu-limit|memory-limit] per allocare più risorse al container sidecar Parallelstore. Puoi impostare gke-parallelstore/memory-limit: "0" per rimuovere la limitazione di memoria del sidecar se non sai quanta memoria vuoi allocare. Tieni presente che questo funziona solo con i cluster standard. Con i cluster Autopilot, non puoi utilizzare il valore 0 per annullare l'impostazione delle richieste e dei limiti delle risorse dei contenitori sidecar. Devi impostare esplicitamente un limite di risorse più elevato per il contenitore sidecar.

Dopo aver modificato le annotazioni, devi riavviare il pod del carico di lavoro. L'aggiunta di annotazioni a un carico di lavoro in esecuzione non modifica dinamicamente l'allocazione delle risorse.

Avvisi relativi agli eventi dei pod

Se i pod del carico di lavoro non possono essere avviati, controlla gli eventi del pod:

kubectl describe pod POD_NAME -n NAMESPACE

Le seguenti soluzioni riguardano gli errori comuni.

Problemi di attivazione del driver CSI

Di seguito sono riportati gli errori comuni di attivazione del driver CSI:

MountVolume.MountDevice failed for volume "volume" : kubernetes.io/csi:
attacher.MountDevice failed to create newCsiDriverClient:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers
MountVolume.SetUp failed for volume "volume" : kubernetes.io/csi:
mounter.SetUpAt failed to get CSI client:
driver name parallelstore.csi.storage.gke.io not found in the list of registered CSI drivers

Questi avvisi indicano che il driver CSI non è attivato o non è in esecuzione.

Se il cluster è stato appena scalato, aggiornato o sottoposto ad upgrade, questo avviso è normale e dovrebbe essere transitorio. Sono necessari alcuni minuti prima che i pod del driver CSI diventino operativi dopo le operazioni del cluster.

In caso contrario, verifica che il driver CSI sia abilitato nel cluster. Per maggiori dettagli, consulta Attivare il driver CSI. Se il CSI è abilitato, ogni nodo mostra un pod denominato parallelstore-csi-node-id attivo e in esecuzione.

Errori AttachVolume.Attach

Dopo che il pod è stato pianificato su un nodo, il volume verrà collegato al nodo e verrà creato il pod del mounter se utilizzi il montaggio del nodo.

Questo accade sul controller e coinvolge il passaggio AttachVolume in attachdetach-controller.

Codice di errore Avviso evento pod Soluzione
InvalidArgument
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = InvalidArgument desc = an error occurred while preparing mount options: invalid mount options
I flag di montaggio non validi vengono passati a PersistentVolume o StorageClass. Per ulteriori dettagli, consulta le opzioni di montaggio di dfuse supportate.
NotFound
  • AttachVolume.Attach failed for volume "volume" : rpc error: code = NotFound desc = failed to get instance "instance"
L'istanza Parallelstore non esiste. Verifica che il valore volumeHandle del volume PersistentVolume abbia il formato corretto.

Errori MountVolume.MountDevice

Una volta collegato il volume a un nodo, questo verrà sottoposto a staging sul nodo.

Questo accade sul nodo e coinvolge il passaggio MountVolume.MountDevice di kubelet.

Codice di errore Avviso evento pod Soluzione
FailedPrecondition
  • MountVolume.MountDevice failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod "pod" expected to exist but was not found
Questo errore di solito è causato dall'eliminazione manuale del pod del mounter. Elimina tutti i carichi di lavoro che utilizzano la PVC e ridistribuiscili. Verrà creato un nuovo pod di montaggio.
DeadlineExceeded
  • MountVolume.MountDevice failed for volume "volume": rpc error: code = DeadlineExceeded desc = context deadline exceeded
Si è verificato un problema di connessione all'istanza Parallelstore. Verifica che la rete VPC e i punti di accesso siano configurati correttamente.

Errori MountVolume.SetUp

Dopo aver eseguito il commit del volume sul nodo, il volume verrà montato e fornito al container nel pod. Questo accade sul nodo e coinvolge il passaggio MountVolume.SetUp in kubelet.

Montaggio del pod

Codice di errore Avviso evento pod Soluzione
ResourceExhausted
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = ResourceExhausted desc = the sidecar container failed with error: signal: killed
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = ResourceExhausted desc = the sidecar container terminated due to OOMKilled, exit code: 137
Il processo dfuse è terminato, il che in genere è causato da una condizione di esaurimento della memoria (OOM). Valuta la possibilità di aumentare il limite di memoria del contenitore sidecar utilizzando l'annotazione gke-parallelstore/memory-limit.

Se hai dubbi sulla quantità di memoria da allocare al sidecar parallelstore, ti consigliamo di impostare gke-parallelstore/memory-limit: "0" per eliminare la limitazione della memoria impostata da Parallelstore.

Interrotta
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = NodePublishVolume request is aborted due to rate limit
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = An operation with the given volume key key already exists
L'operazione di montaggio del volume è stata interrotta a causa del limite di velocità o di operazioni esistenti. Questo avviso è normale e dovrebbe essere transitorio.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se hai fornito argomenti non validi in StorageClass o PersistentVolume, il log degli errori indica i campi con gli argomenti non validi. Per il provisioning dinamico, controlla la classe di archiviazione. Per il provisioning statico, controlla il volume permanente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = can not find the sidecar container in Pod spec Il contenitore sidecar Parallelstore non è stato inserito. Verifica che l'annotazione del pod gke-parallelstore/volumes: "true" sia impostata correttamente.

Supporto del nodo

Codice di errore Avviso evento pod Soluzione
Interrotta
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = NodePublishVolume request is aborted due to rate limit
  • MountVolume.SetUp failed for volume "volume" : rpc error: code = Aborted desc = An operation with the given volume key key already exists
L'operazione di montaggio del volume è stata interrotta a causa del limite di frequenza o di operazioni esistenti. Questo avviso è normale e dovrebbe essere transitorio.
InvalidArgument MountVolume.SetUp failed for volume "volume" : rpc error: code = InvalidArgument desc = Se hai fornito argomenti non validi in StorageClass o Volume permanente, il log degli errori indicherà i campi con gli argomenti non validi. Per il provisioning dinamico, controlla la classe di archiviazione. Per il provisioning statico, controlla il volume permanente.
FailedPrecondition MountVolume.SetUp failed for volume "volume" : rpc error: code = FailedPrecondition desc = mounter pod expected to exist but was not found Il pod di montaggio Parallelstore non esiste. Se il pod del mounter è stato eliminato per errore, crea di nuovo tutti i carichi di lavoro per richiedere la ricreazione.
DeadlineExceeded MountVolume.SetUp failed for volume "volume" : rpc error: code = DeadlineExceeded desc = timeout waiting for mounter pod gRPC server to become available Il server gRPC del pod del mounter non è stato avviato. Verifica la presenza di eventuali errori nei log del pod del mounter.

Risoluzione dei problemi relativi alle reti VPC

Autorizzazione negata per l'aggiunta del peering per il servizio servicenetworking.googleapis.com

ERROR: (gcloud.services.vpc-peerings.connect) User [$(USER)] does not have 
permission to access services instance [servicenetworking.googleapis.com]
(or it may not exist): Permission denied to add peering for service
'servicenetworking.googleapis.com'.

Questo errore indica che non disponi dell'autorizzazione IAM servicenetworking.services.addPeering nel tuo account utente.

Consulta Controllo dell'accesso con IAM per istruzioni su come aggiungere uno dei seguenti ruoli al tuo account:

  • roles/compute.networkAdmin o
  • roles/servicenetworking.networksAdmin

Impossibile modificare gli intervalli allocati in CreateConnection

ERROR: (gcloud.services.vpc-peerings.connect) The operation
"operations/[operation_id]" resulted in a failure "Cannot modify allocated
ranges in CreateConnection. Please use UpdateConnection.

Questo errore viene restituito quando hai già creato un peering VPC su questa rete con intervalli IP diversi. Esistono due possibili soluzioni:

Sostituisci gli intervalli IP esistenti:

gcloud services vpc-peerings update \
  --network=NETWORK_NAME \
  --ranges=IP_RANGE_NAME \
  --service=servicenetworking.googleapis.com \
  --force

In alternativa, aggiungi il nuovo intervallo IP alla connessione esistente:

  1. Recupera l'elenco degli intervalli IP esistenti per il peering:

    EXISTING_RANGES=$(
      gcloud services vpc-peerings list \
        --network=NETWORK_NAME \
        --service=servicenetworking.googleapis.com \
        --format="value(reservedPeeringRanges.list())"
    )
    
  2. Aggiungi poi il nuovo intervallo al peering:

    gcloud services vpc-peerings update \
      --network=NETWORK_NAME \
      --ranges=$EXISTING_RANGES,IP_RANGE_NAME \
      --service=servicenetworking.googleapis.com
    

Intervallo di indirizzi IP esaurito

Problema: la creazione dell'istanza non riesce con l'errore di intervallo esaurito:

ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted

Soluzione: segui la guida alla VPC per ricreare l'intervallo IP o estenderne uno esistente.

Se stai ricostruendo un'istanza Parallelstore, devi ricreare l'intervallo IP anziché estenderlo.