Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Abilita la riparazione automatica dei nodi e analizza i problemi di integrità dei nodi
L’integrità del nodo si riferisce allo stato operativo e alla capacità di un nodo di eseguire efficacemente i carichi di lavoro. Un nodo integro mantiene la connettività prevista, dispone di risorse sufficienti e può eseguire correttamente i pod senza interruzioni. Per informazioni su come ottenere dettagli sui nodi, consulta Visualizzazione dello stato di integrità dei nodi e Recuperare i log dei nodi per un nodo gestito usando kubectl e S3.
Per aiutare a mantenere i nodi integri, Amazon EKS offre l’agente di monitoraggio dei nodi e la riparazione automatica dei nodi.
Importante
L’agente di monitoraggio dei nodi e la riparazione automatica dei nodi sono disponibili solo su Linux. Queste funzionalità non sono disponibili su Windows.
Agente di monitoraggio del nodo
L’agente di monitoraggio dei nodi legge automaticamente i log dei nodi per rilevare determinati problemi di integrità. Analizza i log dei nodi per rilevare i guasti e mostra varie informazioni sullo stato dei nodi worker. Sui nodi worker è applicato un NodeCondition dedicato per ciascuna categoria di problemi rilevati, come problemi di archiviazione e di rete. Le descrizioni dei problemi di salute rilevati sono disponibili nella dashboard di osservabilità. Per ulteriori informazioni, consulta Problemi di integrità dei nodi.
L’agente di monitoraggio dei nodi è incluso come funzionalità per tutti i cluster in modalità automatica Amazon EKS. Per altri tipi di cluster, è possibile aggiungere l’agente di monitoraggio come componente aggiuntivo di Amazon EKS. Per ulteriori informazioni, consulta Creare un componente aggiuntivo Amazon EKS.
Riparazione automatica del nodo
La riparazione automatica dei nodi è una funzionalità aggiuntiva che monitora continuamente lo stato dei nodi, reagendo automaticamente ai problemi rilevati e sostituendo i nodi quando possibile. Ciò aiuta la disponibilità complessiva del cluster con un intervento manuale minimo. Se un controllo dell’integrità ha esito negativo, il nodo è automaticamente isolato in modo che non siano pianificati nuovi pod sul nodo.
Di per sé, la riparazione automatica dei nodi può reagire alle condizioni Ready di kubelet e di tutti gli oggetti del nodo che sono eliminati manualmente. Se abbinato all’agente di monitoraggio dei nodi, la riparazione automatica dei nodi può reagire a più condizioni che altrimenti non sarebbero rilevate. Queste condizioni aggiuntive includono KernelReady, NetworkingReady e StorageReady.
Questo ripristino automatico dei nodi risolve automaticamente i problemi intermittenti dei nodi, come la mancata adesione al cluster, i kubelet che non rispondono e l'aumento degli errori dell'acceleratore (dispositivo). La maggiore affidabilità aiuta a ridurre i tempi di inattività delle applicazioni e a migliorare le operazioni del cluster. La riparazione automatica dei nodi non è in grado di gestire determinati problemi segnalati come DiskPressure, MemoryPressure e PIDPressure. Amazon EKS attende 10 minuti prima di agire su AcceleratedHardwareReady NodeConditions e 30 minuti per tutte le altre condizioni.
Inoltre, i gruppi di nodi gestiti disabiliteranno automaticamente le riparazioni dei nodi per motivi di sicurezza in due scenari. Tutte le operazioni di riparazione precedentemente in corso continueranno per entrambe le situazioni.
-
Se è stato attivato uno spostamento zonale per il cluster tramite Application Recovery Controller (ARC), tutte le operazioni di riparazione successive sono interrotte.
-
Se il gruppo di nodi ha più di cinque nodi e più del 20% dei nodi del gruppo di nodi non sono integri, le operazioni di riparazione sono interrotte.
È possibile abilitare la riparazione automatica dei nodi durante la creazione o la modifica di un gruppo di nodi gestito.
-
Quando si utilizza la console Amazon EKS, attivare la casella di controllo Abilita riparazione automatica dei nodi per il gruppo di nodi gestito. Per ulteriori informazioni, consulta Creare un gruppo di nodi gestiti per il cluster.
-
Quando si utilizza AWS CLI, aggiungere
--node-repair-config enabled=trueal comandoeks create nodegroupoeks update-nodegroup-config. -
Per un esempio
eksctlClusterConfigche utilizza un gruppo di nodi gestito con riparazione automatica del nodo, consulta 44-node-repair.yamlsu GitHub.
Amazon EKS offre un controllo più granulare sul comportamento di riparazione automatica del nodo attraverso quanto segue:
-
maxUnhealthyNodeThresholdCountemaxUnhealthyNodeThresholdPercentage-
Questi campi consentono di specificare una soglia di conteggio o percentuale di nodi non integri, oltre la quale le azioni di riparazione automatica dei nodi saranno interrotte. Ciò fornisce un maggiore controllo sul “raggio di impatto” delle riparazioni automatiche dei nodi.
-
È possibile impostare il conteggio assoluto o la percentuale assoluta, ma non entrambi.
-
-
maxParallelNodesRepairedCountemaxParallelNodesRepairedPercentage-
Tali campi consentono di specificare il numero massimo di nodi che possono essere riparati contemporaneamente o in parallelo, espresso come conteggio o percentuale di tutti i nodi non integri. In questo modo è possibile controllare in modo più preciso il ritmo delle sostituzioni dei nodi.
-
Come per la soglia non integra, è possibile impostare il conteggio assoluto o la percentuale assoluta, ma non entrambi.
-
-
nodeRepairConfigOverrides-
Si tratta di una struttura complessa che consente di impostare sostituzioni granulari per azioni di riparazione specifiche. Tali sostituzioni controllano l’azione di riparazione e il tempo di ritardo della riparazione prima che un nodo sia considerato idoneo per la riparazione.
-
I campi specifici di tale struttura sono:
-
nodeMonitoringCondition: la condizione non integra segnalata dall’agente di monitoraggio dei nodi. -
nodeUnhealthyReason: il motivo per cui l’agente di monitoraggio di nodi ha identificato il nodo come non integro. -
minRepairWaitTimeMins: il tempo minimo (in minuti) in cui la condizione di riparazione e il motivo non integro devono persistere prima che il nodo sia idoneo alla riparazione. -
repairAction: l’azione che il sistema di riparazione deve intraprendere quando sono soddisfatte le condizioni di cui sopra.
-
-
Se si utilizza questo campo, è necessario specificare tutti i campi della struttura. È anche possibile fornire un elenco di tali sostituzioni.
-
nodeMonitoringConditionenodeUnhealthyReasonsono input di testo manuali che si impostano per indicare che si desidera deviare dal comportamento predefinito del sistema. -
I campi
minRepairWaitTimeMinserepairActionconsentono di specificare le deviazioni dal comportamento predefinito del sistema.
-
Problemi di integrità dei nodi
Le tabelle seguenti descrivono i problemi di integrità dei nodi che possono essere rilevati dall’agente di monitoraggio dei nodi. Esistono due tipi di problemi:
-
Condizione: un problema del terminale che richiede un’azione di riparazione come la sostituzione o il riavvio dell’istanza. Quando la riparazione automatica è abilitata, Amazon EKS eseguirà un’azione di riparazione, sostituendo o riavviando il nodo. Per ulteriori informazioni, consulta Condizioni dei nodi.
-
Evento: un problema temporaneo o una configurazione non ottimale del nodo. Non sarà effettuata alcuna operazione di riparazione automatica. Per ulteriori informazioni, consulta Eventi dei nodi.
Problemi di integrità dei nodi del kernel
La condizione di monitoraggio riguarda KernelReady per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.
| Nome | Gravità | Descrizione |
|---|---|---|
|
ForkFailedOutOfPID |
Condizione |
Una chiamata fork o exec non è riuscita per via dell’esaurimento degli ID di processo o della memoria del sistema, il che può essere causato da processi zombie o dall’esaurimento della memoria fisica. |
|
AppBlocked |
Evento |
L’attività è stata bloccata per un lungo periodo di tempo dalla pianificazione, in genere a causa del blocco in ingresso o in uscita. |
|
AppCrash |
Evento |
Un’applicazione sul nodo si è bloccata. |
|
ApproachingKernelPidMax |
Evento |
Il numero di processi si avvicina al numero massimo di PID disponibili per l’attuale impostazione kernel.pid_max, dopodiché non è possibile avviare altri processi. |
|
ApproachingMaxOpenFiles |
Evento |
Il numero di file aperti è simile al numero massimo di file aperti possibili date le impostazioni correnti del kernel, dopodiché l’apertura di nuovi file avrà esito negativo. |
|
ConnTrackExceededKernel |
Evento |
Il rilevamento delle connessioni ha superato il valore massimo per il kernel e non è stato possibile stabilire nuove connessioni, il che può causare la perdita di pacchetti. |
|
ExcessiveZombieProcesses |
Evento |
I processi che non possono essere recuperati completamente si accumulano in gran numero, il che indica problemi di applicazione e può portare al raggiungimento dei limiti dei processi di sistema. |
|
KernelBug |
Evento |
Un bug del kernel è stato rilevato e segnalato dal kernel Linux stesso, sebbene a volte ciò può essere causato da nodi con un elevato utilizzo della CPU o della memoria, con conseguente ritardo nell’elaborazione degli eventi. |
|
LargeEnvironment |
Evento |
Il numero di variabili di ambiente per questo processo è maggiore del previsto, il che potenzialmente è causato da molti servizi con enableServiceLinks impostato su vero, che possono causare problemi prestazionali. |
|
RapidCron |
Evento |
Un cron job è eseguito più velocemente di ogni cinque minuti su questo nodo, il che può influire sulle prestazioni se il processo consuma risorse significative. |
|
SoftLockup |
Evento |
La CPU si è bloccata per un periodo di tempo specificato. |
Problemi di integrità dei nodi di rete
La condizione di monitoraggio riguarda NetworkingReady per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.
| Nome | Gravità | Descrizione |
|---|---|---|
|
InterfaceNotRunning |
Condizione |
Questa interfaccia sembra non essere in esecuzione o ci sono problemi di rete. |
|
InterfaceNotUp |
Condizione |
Questa interfaccia sembra non essere avviata o ci sono problemi di rete. |
|
IPAMDNotReady |
Condizione |
IPAMD non riesce a connettersi al server API. |
|
IPAMDNotRunning |
Condizione |
Il processo |
|
MissingLoopbackInterface |
Condizione |
L’interfaccia di loopback non è presente in questa istanza, il che causa l’interruzione dei servizi a seconda della connettività locale. |
|
BandwidthInExceeded |
Evento |
I pacchetti accodati o rilasciati perché la larghezza di banda aggregata in ingresso ha superato il valore massimo per l’istanza. |
|
BandwidthOutExceeded |
Evento |
I pacchetti sono stati accodati o rilasciati perché la larghezza di banda aggregata in uscita ha superato il valore massimo per l’istanza. |
|
ConntrackExceeded |
Evento |
Il rilevamento delle connessioni ha superato il valore massimo per l’istanza e non è stato possibile stabilire nuove connessioni, il che può determinare la perdita di pacchetti. |
|
IPAMDNoIPs |
Evento |
IPAM-D ha esaurito gli indirizzi IP. |
|
IPAMDRepeatedlyRestart |
Evento |
Si sono verificati più riavvii del servizio IPAMD. |
|
KubeProxyNotReady |
Evento |
Kube-proxy non è riuscito a controllare o elencare le risorse. |
|
LinkLocalExceeded |
Evento |
I pacchetti sono stati accodati o rilasciati perché il PPS del traffico verso i servizi proxy locali ha superato il valore massimo per l’interfaccia di rete. |
|
MissingDefaultRoutes |
Evento |
Mancano le regole di routing predefinite. |
|
MissingIPRules, MissingIPRoutes |
Evento |
Nella tabella di routing mancano le regole di routing per i seguenti IP dei pod. |
|
NetworkSysctl |
Evento |
Le impostazioni sysctl di rete di questo nodo sono potenzialmente errate. |
|
PortConflict |
Evento |
Se un pod utilizza hostPort, può scrivere regole iptables che sostituiscono le porte già occupate dell’host, impedendo potenzialmente l’accesso al server API a |
|
PPSExceeded |
Evento |
I pacchetti sono stati accodati o rilasciati perché il PPS bidirezionale ha superato il valore massimo per l’istanza. |
|
UnexpectedRejectRule |
Evento |
È stata rilevata una regola |
Problemi di integrità dei nodi neuronali
La condizione di monitoraggio riguarda AcceleratedHardwareReady per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.
| Nome | Gravità | Descrizione |
|---|---|---|
|
NeuronDMAError |
Condizione |
Un motore DMA ha rilevato un errore irreversibile. |
|
NeuronHBMUncorrectableError |
Condizione |
Un HBM ha riscontrato un errore non correggibile e ha prodotto risultati errati. |
|
NeuronNCUncorrectableError |
Condizione |
È stato rilevato un errore di memoria non correggibile di Neuron Core. |
|
NeuronSRAMUncorrectableError |
Condizione |
Una SRAM su chip ha rilevato un errore di parità e ha prodotto risultati errati. |
Problemi di integrità dei nodi NVIDIA
Se la riparazione automatica è abilitata, le azioni di riparazione elencate iniziano 10 minuti dopo il rilevamento del problema. Per ulteriori informazioni sugli errori XID, consulta Errori Xid
La condizione di monitoraggio riguarda AcceleratedHardwareReady per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.
| Nome | Gravità | Descrizione | Azione di riparazione |
|---|---|---|---|
|
NvidiaDoubleBitError |
Condizione |
Un errore a doppio bit è stato prodotto dal driver della GPU. |
Replace (Sostituisci) |
|
NvidiaNVLinkError |
Condizione |
Gli errori NVLink sono stati segnalati dal driver della GPU. |
Replace (Sostituisci) |
|
NvidiaXID13Error |
Condizione |
Vi è un’eccezione al motore grafico. |
Riavvio |
|
NvidiaXID31Error |
Condizione |
Si sospetta che vi siano problemi hardware. |
Riavvio |
|
NvidiaXID48Error |
Condizione |
Gli errori ECC a doppio bit sono segnalati dal driver. |
Riavvio |
|
NvidiaXID63Error |
Condizione |
Vi è un ritiro della pagina o una rimappatura delle righe. |
Riavvio |
|
NvidiaXID64Error |
Condizione |
Vi sono errori nel tentativo di ritirare una pagina o di eseguire una rimappatura dei nodi. |
Riavvio |
|
NvidiaXID74Error |
Condizione |
Vi è un problema con la connessione dalla GPU a un’altra GPU o NVSwitch tramite NVLink. Ciò può indicare un guasto hardware del collegamento stesso o può indicare un problema con il dispositivo all’estremità remota del collegamento. |
Replace (Sostituisci) |
|
NvidiaXID79Error |
Condizione |
Il driver della GPU ha tentato di accedere alla GPU tramite la connessione PCI Express e ha rilevato che la GPU non è accessibile. |
Replace (Sostituisci) |
|
NvidiaXID94Error |
Condizione |
Vi sono errori di memoria ECC. |
Riavvio |
|
NvidiaXID95Error |
Condizione |
Vi sono errori di memoria ECC. |
Riavvio |
|
NvidiaXID119Error |
Condizione |
Il GSP è scaduto per rispondere alle richieste RPC provenienti da altri bit del driver. |
Replace (Sostituisci) |
|
NvidiaXID120Error |
Condizione |
Il GSP ha risposto in tempo, ma con un errore. |
Replace (Sostituisci) |
|
NvidiaXID121Error |
Condizione |
C2C è l’interconnessione del chip. Consente la condivisione della memoria tra CPU, acceleratori e altro. |
Replace (Sostituisci) |
|
NvidiaXID140Error |
Condizione |
È possibile che il driver della GPU abbia rilevato errori non correggibili nella memoria della GPU, tali da interrompere la capacità del driver GPU di contrassegnare le pagine per l’offlining dinamico delle pagine o la rimappatura delle righe. |
Replace (Sostituisci) |
|
NvidiaPageRetirement |
Evento |
Il driver della GPU ha contrassegnato una pagina di memoria come ritirata. Ciò può verificarsi se si riscontra un singolo errore a doppio bit o due errori a singolo bit nello stesso indirizzo. |
Nessuno |
|
NvidiaXID[Code]Warning |
Evento |
Qualsiasi occorrenza di XID diversa da quelle definite in questo elenco determina questo evento. |
Nessuno |
|
DCGMError |
Condizione |
La connessione al processo host del sistema di gestione della GPU dei data center (DCGM) è stata interrotta o non è stato possibile stabilirla. |
Nessuno |
|
DCGMDiagnosticError |
Condizione |
Si è verificato un problema durante l’esecuzione della diagnostica attiva DCGM. |
Nessuno |
|
DCGMDiagnosticFailure |
Condizione |
Un caso di test della suite di test della diagnostica attiva DCGM non è riuscito. |
Nessuno |
Problemi di integrità del nodo di runtime
La condizione di monitoraggio riguarda ContainerRuntimeReady per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.
| Nome | Gravità | Descrizione |
|---|---|---|
|
PodStuckTerminating |
Condizione |
Un pod è o è rimasto bloccato nella terminazione per un periodo di tempo eccessivo, il che può essere causato da errori CRI che impediscono la progressione dello stato del pod. |
|
%sRepeatedRestart |
Evento |
Riavvio di qualsiasi servizio systemd sul nodo (formattato utilizzando il nome dell’unità con la maiuscola nel titolo). |
|
ContainerRuntimeFailed |
Evento |
Il runtime del container non è riuscito a creare un container, probabilmente correlato a eventuali problemi segnalati se si verificano ripetutamente. |
|
KubeletFailed |
Evento |
Il kubelet è entrato in uno stato di errore. |
|
LivenessProbeFailures |
Evento |
È stato rilevato un errore della sonda liveness, che potrebbe indicare problemi nel codice dell’applicazione o nei valori di timeout insufficienti se si verificano ripetutamente. |
|
ReadinessProbeFailures |
Evento |
È stato rilevato un errore della sonda di preparazione, che potrebbe indicare problemi nel codice dell’applicazione o nei valori di timeout insufficienti se si verificano ripetutamente. |
|
ServiceFailedToStart |
Evento |
Impossibile avviare un’unità systemd. |
Problemi di integrità dei nodi di storage
La condizione di monitoraggio riguarda StorageReady per i problemi riportati nella tabella seguente con una gravità pari a “Condizione”.
| Nome | Gravità | Descrizione |
|---|---|---|
|
XFSSmallAverageClusterSize |
Condizione |
La dimensione media del cluster XFS è piccola, il che indica un’eccessiva frammentazione dello spazio libero che può impedire la creazione di file nonostante gli inode o lo spazio libero disponibili. |
|
EtcHostsMountFailed |
Evento |
Il montaggio del kubelet generato |
|
IODelays |
Evento |
Ritardo di ingresso o uscita rilevato in un processo, che potrebbe indicare un approvvigionamento input-output insufficiente, se eccessivo. |
|
KubeletDiskUsageSlow |
Evento |
Kubelet sta segnalando un utilizzo lento del disco durante il tentativo di accedere al filesystem, il che potrebbe indicare problemi di input-output del disco insufficienti o del filesystem. |