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
.
Esegui
ifconfig
per elencare le interfacce di rete disponibili. Un output di esempio può mostrare diverse interfacce di rete comeeth0
,docker0
,ens8
,lo
e così via.Interrompi daos_agent.
Modifica
/etc/daos/daos_agent.yml
per escludere le interfacce di rete indesiderate. Rimuovi il commento dalla rigaexclude_fabric_ifaces
e aggiorna i valori. Le voci incluse sono specifiche per la tua situazione. Ad esempio:exclude_fabric_ifaces: ["docker0", "ens8", "lo"]
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 |
|
I flag di montaggio non validi vengono passati a PersistentVolume o StorageClass. Per ulteriori dettagli, consulta le opzioni di montaggio di dfuse supportate. |
NotFound |
|
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 |
|
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 |
|
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 |
|
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 |
Interrotta |
|
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 |
|
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
oroles/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:
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())" )
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.