Configurare l'alerting in Kubernetes permette di individuare rapidamente le variazioni rilevanti degli indicatori di resilienza, così da eliminarle prima che abbiano un impatto sul sistema.
Ecco i 10 alert più importanti da configurare per il suo cluster Kubernetes, tutti inclusi nella piattaforma di monitoraggio Kubernetes di PerfectScale. Con PerfectScale riceve notifiche in tempo reale sui rischi identificati.
PerfectScale fornisce alert tempestivi e affidabili per segnalare qualsiasi attività anomala del sistema.
Indicatori di resilienza
OOM
Gli eventi Out-of-Memory si verificano solitamente nelle seguenti situazioni:
- Il limite di memoria di un pod è impostato su un valore troppo basso. Un evento viene generato quando l'utilizzo di memoria del pod raggiunge il limite definito.
- Il nodo è in condizioni di memory pressure e tenta di effettuare l'eviction di alcuni pod. Documentazione ufficiale
CPU Throttling
Il CPU Throttling si verifica quando il pod raggiunge il limite di CPU definito e può introdurre latenza nei tempi di risposta dell'applicazione.
Kubernetes utilizza il meccanismo di quota di CFS per applicare il limite. La quota si basa sul periodo di tempo e non sulla potenza CPU disponibile.
cfs_period_usdefinisce il periodo di tempo ed è sempre pari a 100000us (100ms). Ad esempio, un container con un limite di 1 core subirà il throttling dopo 50ms su un nodo a 2 core e dopo 25ms su un nodo a 4 core, indipendentemente dal numero di core CPU effettivamente consumati.
RestartsObserved
Riavvii frequenti indicano la presenza di un problema con un alto potenziale di compromettere lo SLA desiderato.
Eviction
L'eviction indica la terminazione forzata e la rimozione di un pod in esecuzione da un nodo. Gli eventi di eviction si verificano solitamente a causa di pressione sulla memoria o sulla CPU di un nodo.
Quando viene rilevata un'eviction, viene generato immediatamente un alert per informare gli utenti. Si assicuri di aver configurato e assegnato al cluster il profilo di integrazione per ricevere notifiche tempestive su un canale Slack o MS Teams.
HPAAtMaxReplicasObserved
All'aumentare della domanda per un servizio o un'applicazione, l'HPA scala il sistema per gestire il carico aggiuntivo aggiungendo dinamicamente nuove repliche. Una volta raggiunto il limite massimo di repliche configurato, PerfectScale attiva l'indicatore HPAAtMaxReplicasObserved, a segnalare che il sistema non può scalare ulteriormente con le impostazioni attuali.
La gravità dell'indicatore varia in base al tempo in cui un workload resta in esecuzione al numero massimo di repliche. Ad esempio, più a lungo un workload rimane al massimo delle repliche, più alto sarà il livello di gravità dell'indicatore.
Indicatori di limit/request non impostati
CpuRequestNotSet
Impostare CPU requests corrette aiuta lo scheduler di Kubernetes ad allocare la giusta quantità di CPU per ciascun container, garantendo che la capacità dei nodi del cluster soddisfi la domanda.
MemRequestNotSet
Impostare MEMORY requests corrette aiuta lo scheduler di Kubernetes ad allocare la giusta quantità di memoria per ciascun container, garantendo che la capacità dei nodi del cluster soddisfi la domanda.
MemLimitNotSet
Impostare un MEMORY limit corretto aiuta a proteggere il worker node dagli OOM, prevenendo il rischio di sovra-allocazione della memoria.
A differenza della CPU, che è comprimibile (un nuovo ciclo ogni 100ms), la MEMORIA è incomprimibile e non può essere sovra-allocata.
Indicatori di UnderProvisioning
UnderProvisionedCpuRequest
Impostare CPU requests corrette aiuta lo scheduler di Kubernetes ad allocare la giusta quantità di CPU per ciascun container, garantendo che la capacità dei nodi del cluster soddisfi la domanda.
UnderProvisionedMemRequest
Impostare MEMORY requests corrette aiuta lo scheduler di Kubernetes ad allocare la giusta quantità di memoria per ciascun container, garantendo che la capacità dei nodi del cluster soddisfi la domanda.
UnderProvisionedMemLimit
Impostare un MEMORY limit corretto aiuta a proteggere il worker node dagli OOM, prevenendo il rischio di sovra-allocazione della memoria. Tuttavia, un MEMORY limit sottodimensionato può causare eventi OOM indesiderati a livello di pod, con il rischio di compromettere lo SLA desiderato.
Indicatori di spreco
OverProvisionedCpuRequest
Impostare CPU requests corrette aiuta lo scheduler di Kubernetes ad allocare la giusta quantità di CPU per ciascun container, garantendo che la capacità dei nodi del cluster soddisfi la domanda. In caso di CPU requests sovradimensionate, le risorse cloud vengono sprecate inutilmente perché allocate ma non utilizzate.
OverProvisionedMemoryRequest
Impostare MEMORY requests corrette aiuta lo scheduler di Kubernetes ad allocare la giusta quantità di memoria per ciascun container, garantendo che la capacità dei nodi del cluster soddisfi la domanda. Tuttavia, quando una memory request è sovradimensionata, si sprecano risorse cloud, allocate ma mai utilizzate.
FAQ
1. Che cos'è l'alerting in Kubernetes?
L'alerting in Kubernetes notifica agli utenti potenziali problemi all'interno del cluster.
2. Come posso configurare l'alerting in Kubernetes?
L'alerting può essere configurato utilizzando strumenti di monitoraggio come PerfectScale.
3. Quali sono i vantaggi dell'alerting in Kubernetes?
L'alerting aiuta a garantire un funzionamento senza intoppi e una risoluzione più rapida dei problemi.
4. Come posso personalizzare le regole di alerting in Kubernetes?
Gli utenti possono definire e configurare regole basate su metriche specifiche.
5. Quali sono le best practice per l'alerting in Kubernetes?
Tra le best practice rientra la configurazione di alert per gli indicatori chiave di performance.