Ongoing service disruptions
For the most recent update on ongoing service disruptions affecting the AWS Middle East (UAE) Region (ME-CENTRAL-1), refer to the AWS Health Dashboard. For information on AWS Service migration, see How do I migrate my services to another region?
Come posso risolvere il problema della pressione sul disco nei miei nodi worker Amazon EKS?
Desidero risolvere il problema della pressione sul disco nei miei nodi worker Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrizione
La pressione sul disco nei nodi worker Kubernetes si verifica quando lo spazio disponibile su disco scende a livelli bassi. Per ridurre la pressione sul disco, aumenta le dimensioni del volume EBS o aggiungi nuovi nodi worker al gruppo di nodi per fornire maggiore capacità del disco. Puoi anche regolare le soglie di rimozione delle immagini inutili (garbage collection) del Kubelet, configurare la rotazione del log di runtime del container ed eliminare manualmente le immagini inutilizzate per gestire efficacemente l'utilizzo del disco.
È importante monitorare e gestire l'archiviazione temporanea per prevenire problemi di pressione sul disco e assicurarsi che i cluster Kubernetes funzionino correttamente.
Se la pressione sul disco è eccessiva, potresti ricevere un messaggio di errore.
Per il nodo, potresti ricevere un messaggio di errore simile al seguente:
"Warning DiskPressure ... kubelet, worker-node DiskPressure on node"
Per il Kubelet, potresti ricevere un messaggio di errore simile al seguente:
"Disk usage on image filesystem is over the high threshold, trying to free bytes down to the low threshold"
Per approfondire il problema, controlla l'utilizzo del disco sul nodo worker eseguendo il comando df -h.
Esempio di output:
/dev/nvme0n1p1 20G 18G 2.2G 90% / ........
Nota: nell'esempio precedente, il filesystem root /dev/nvme0n1p1 è utilizzato al 90%. L'utilizzo elevato causa problemi di pressione sul disco e di mancata rimozione delle immagini inutili.
Risoluzione
Aumenta le dimensioni del volume EBS
Per aumentare lo spazio disponibile su disco, aumenta le dimensioni del volume EBS collegato al nodo worker. Per ulteriori informazioni, consulta Come posso aumentare o diminuire le dimensioni del volume di EBS?
Nota: anziché ridimensionare i volumi temporanei, è consigliabile eseguire il provisioning di nuove istanze con le dimensioni del disco desiderate. Utilizza le nuove istanze per sostituire la vecchia istanza. Una volta compiuta tale operazioni, le nuove istanze hanno le dimensioni del disco corrette e sono in linea con la mentalità dell'infrastruttura immutabile.
Aggiungi un nuovo nodo worker al gruppo di nodi
Aggiungi un nuovo nodo al gruppo o al pool di nodi per aggiungere altro volume di disco al cluster in modo da distribuire il carico di lavoro su più nodi. Questo allevia la pressione sul disco in ogni singolo nodo.
Imposta soglie personalizzate per il garbage collector del Kubelet
Configura il Kubelet per avviare la rimozione delle immagini inutili (garbage collection) a diverse soglie di utilizzo del disco. A tal fine, imposta gli argomenti --image-gc-high-threshold e --image-gc-low-threshold per consentire più buffer. Ad esempio, imposta la soglia massima al 70% e la soglia minima al 60% per mantenere un buffer più ampio di spazio libero su disco. Questa configurazione consente al Kubelet di eseguire la rimozione delle immagini inutili prima che il disco raggiunga un livello di riempimento critico.
Per ulteriori informazioni sulla configurazione di questi argomenti per i nodi worker, consulta Come posso configurare i nodi worker di Amazon EKS per pulire la cache delle immagini a una percentuale specifica di utilizzo del disco?
Controlla e regola la rotazione del log di runtime del container
Le applicazioni containerizzate scrivono i log su stdout e stderr. I file di log sono gestiti dal runtime del container. È consigliabile modificare le impostazioni di rotazione dei log per il runtime del container sui nodi worker.
Per configurare la rotazione del log, per containerd, utilizza le opzioni containerd.runc.log nel file di configurazione /etc/cotainerd/config/toml. Imposta le opzioni log_file_max e log_file_max_size per controllare il numero massimo di file di log ruotati e la dimensione massima di ogni file di log.
Elimina le immagini del container inutilizzate
Se il Kubelet non è in grado di eseguire automaticamente una rimozione delle immagini inutili (garbage collection), elimina manualmente le immagini del container inutilizzate dal nodo worker. Per rimuovere le immagini orfane o inutilizzate e liberare una notevole quantità di spazio su disco, utilizza il comando crictl rmi --prune.
Gestisci l'archiviazione temporanea
Per una stabilità a lungo termine e un funzionamento regolare delle applicazioni, è consigliabile gestire correttamente l'archiviazione temporanea. Se non imposti limiti l'archiviazione temporanea, un pod potrebbe consumare l'intero spazio su disco del nodo su cui viene eseguito.
Per mitigare questo rischio, imposta le richieste e i limiti di archiviazione temporanea appropriati per i pod. Effettua le seguenti azioni per determinare i limiti:
- Per identificare i requisiti di archiviazione del pod, analizza le esigenze di archiviazione dell'applicazione, i dati temporanei e tutti gli altri file archiviati temporaneamente. Dopodiché, puoi stimare i requisiti di archiviazione per ogni pod.
- Per impostare richieste e limiti di archiviazione temporanea, definisci la quantità minima di spazio necessario per il corretto funzionamento del pod. Quindi, il pianificatore Kubernetes può allocare ai pod nodi con risorse di archiviazione sufficienti.
Esempio:apiVersion: v1 kind: Pod metadata: name: my-app spec: containers: - name: my-app-container image: my-app:latest resources: requests: ephemeral-storage: "1Mi" limits: ephemeral-storage: "2Mi"
- Argomenti
- Containers
- Lingua
- Italiano
