Questa pagina include i passaggi per la risoluzione dei problemi relativi ad alcuni errori e problemi comuni.
Istanza NON RIUSCITA
Lo stato FAILED
indica che i dati dell'istanza sono stati persi e che l'istanza
deve essere eliminata.
Le istanze Parallelstore in stato FAILED
continuano a essere fatturate finché 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
va in timeout;
o se i comandi di test di rete come self_test
o daos health net-test
vanno in timeout, 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 due possibili motivi sono:
L'agente DAOS potrebbe aver selezionato l'interfaccia di rete errata durante la configurazione
Potrebbe essere necessario 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 potrebbe mostrare diverse interfacce di rete comeeth0
,docker0
,ens8
,lo
e così via.Arresta 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 che includi 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 dell'intervallo di subnet 172.17.0.0/16. Per ulteriori informazioni, consulta la sezione Problemi noti.
ENOSPC
quando c'è capacità inutilizzata nell'istanza
Se la tua istanza utilizza lo striping minimo o bilanciato (impostazione predefinita), potresti riscontrare
errori ENOSPC
anche se i file esistenti non utilizzano tutta la capacità dell'istanza. Ciò si verifica probabilmente durante la scrittura di file di grandi dimensioni, in genere superiori
a 8 GiB, 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 alla chiusura di dfuse. Nella maggior parte dei casi, dfuse è stato terminato
per esaurimento della memoria. Utilizza le annotazioni del pod
gke-parallelstore/[cpu-limit|memory-limit]
per allocare più risorse al
container collaterale Parallelstore. Puoi impostare
gke-parallelstore/memory-limit: "0"
per rimuovere la limitazione della memoria sidecar
se non sai quanta memoria vuoi allocare. Tieni presente che questa operazione
funziona solo con i cluster standard; con i cluster Autopilot non puoi
utilizzare il valore 0
per annullare l'impostazione dei limiti e delle richieste di risorse del container sidecar. Devi
impostare esplicitamente un limite di risorse più elevato per il container 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 workload non possono essere avviati, controlla gli eventi del pod:
kubectl describe pod POD_NAME -n NAMESPACE
Le seguenti soluzioni riguardano 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 a upgrade, questo avviso è normale e dovrebbe essere temporaneo. Affinché i pod del driver CSI siano funzionali dopo le operazioni del cluster, sono necessari alcuni minuti.
In caso contrario, verifica che il driver CSI sia abilitato sul cluster. Per i dettagli, consulta Abilitare il driver CSI. Se il CSI è abilitato,
ogni nodo mostra un pod denominato parallelstore-csi-node-id
in esecuzione.
Errori AttachVolume.Attach
Dopo la pianificazione del pod su un nodo, il volume verrà collegato al nodo e il pod di montaggio verrà creato se utilizzi il montaggio del nodo.
Questo avviene sul controller e coinvolge il passaggio AttachVolume di attachdetach-controller.
Codice di errore | Avviso di evento pod | Soluzione |
InvalidArgument |
|
I flag di montaggio non validi vengono passati a PersistentVolume o StorageClass. Per ulteriori dettagli, consulta le opzioni di montaggio dfuse supportate. |
NotFound |
|
L'istanza Parallelstore non esiste. Verifica che l'attributo volumeHandle di PersistentVolume abbia il formato corretto. |
Errori MountVolume.MountDevice
Una volta collegato a un nodo, il volume verrà preparato per il nodo.
Ciò avviene sul nodo e comporta il passaggio MountVolume.MountDevice da kubelet.
Codice di errore | Avviso di evento pod | Soluzione |
FailedPrecondition |
|
Questo errore è in genere causato dall'eliminazione manuale del pod di montaggio. Elimina tutti i carichi di lavoro che utilizzano la PVC e esegui nuovamente il deployment. Verrà creato un nuovo pod di montaggio. |
DeadlineExceeded |
|
Si è verificato un problema durante la connessione all'istanza Parallelstore. Verifica che la tua rete VPC e i tuoi punti di accesso siano configurati correttamente. |
Errori MountVolume.SetUp
Una volta eseguito lo staging del volume sul nodo, il volume verrà montato e fornito al container sul pod. Ciò avviene sul nodo e comporta il passaggio MountVolume.SetUp in kubelet.
Supporto per pod
Codice di errore | Avviso di evento pod | Soluzione |
ResourceExhausted |
|
Il processo dfuse è terminato, il che è solitamente causato da una condizione di esaurimento della memoria (OOM). Valuta la possibilità di
aumentare il limite di memoria del container sidecar utilizzando l'annotazione
gke-parallelstore/memory-limit .
Se non sai quanta memoria vuoi allocare al
sidecar parallelstore, ti consigliamo di impostare
|
Interrotta |
|
L'operazione di montaggio del volume è stata interrotta a causa della limitazione di frequenza o di operazioni esistenti. Questo avviso è normale e dovrebbe essere temporaneo. |
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
gke-parallelstore/volumes: "true" del pod sia impostata correttamente.
|
Montaggio del nodo
Codice di errore | Avviso di 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 temporaneo. |
InvalidArgument |
MountVolume.SetUp failed for volume "volume" : rpc
error: code = InvalidArgument desc =
|
Se hai fornito argomenti non validi in StorageClass o nel 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 di Parallelstore non esiste. Se il pod di montaggio è stato eliminato per errore, ricrea 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 di montaggio non è stato avviato. Controlla i log del pod mounter per individuare eventuali errori. |
Risoluzione dei problemi relativi alle reti VPC
Autorizzazione negata per aggiungere il 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 significa che non disponi dell'autorizzazione IAM servicenetworking.services.addPeering
sul tuo account utente.
Consulta la sezione 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())" )
Quindi, aggiungi 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
La creazione dell'istanza potrebbe non riuscire con il seguente errore di intervallo esaurito:
ERROR: (gcloud.alpha.Parallelstore.instances.create) FAILED_PRECONDITION: Invalid
resource state for "NETWORK_RANGES_NOT_AVAILABLE": IP address range exhausted
Se visualizzi questo messaggio di errore, segui la guida VPC per ricreare l'intervallo IP o estendere l'intervallo IP esistente.
Se stai ricreando un'istanza Parallelstore, devi ricreare l'intervallo IP anziché estenderlo.
Manutenzione bloccata a causa di un budget per l'interruzione dei pod restrittivo
La console Google Cloud potrebbe visualizzare il seguente messaggio di errore che indica che la manutenzione non può procedere perché è configurato un budget di interruzione dei pod (PDB) per consentire zero eliminazioni di pod:
GKE can't perform maintenance because the Pod Disruption Budget allows for 0 Pods evictions.
Se visualizzi questo messaggio di errore, identifica il pod problematico completando i seguenti passaggi:
Fai clic sul messaggio di errore per aprire il pannello con le informazioni sull'errore.
Controlla la sezione Budget di interruzione dei pod (PDB) non permissivi per trovare il nome del pod.
Se il pod è
parallelstorecsi-mount
, puoi ignorare questo errore perché non impedirà la manutenzione. Per qualsiasi altro pod, esamina il PDB.