Come posso configurare i nodi worker di Amazon EKS per pulire la cache delle immagini a una percentuale specifica di utilizzo del disco?
Desidero utilizzare i nodi worker di Amazon Elastic Kubernetes Service (Amazon EKS) per pulire la cache delle immagini al raggiungimento di una percentuale specifica di utilizzo del disco.
Breve descrizione
Per pulire la cache delle immagini con i nodi worker di Amazon EKS, utilizza i seguenti argomenti del processo di rimozione di oggetti inutili (garbage collection) del kubelet:
- L'argomento --image-gc-high-threshold definisce la percentuale di utilizzo del disco che attiva la rimozione di oggetti inutili (garbage collection) per l’immagine. Il valore predefinito è 85%.
- L'argomento**--image-gc-low-threshold** definisce il valore lowThresholdPercent. Il kubelet elimina le immagini finché l'utilizzo del disco non raggiunge tale valore. Il valore predefinito è 50%.
Nota: nella risoluzione seguente, gli argomenti del processo di rimozione di oggetti inutili (garbage collection) del kubelet puliscono la cache delle immagini nel nodo worker quando l'utilizzo del disco raggiunge il 70%. --image-gc-high-threshold è impostato al 70%. --image-gc-low-threshold è impostato al 50%.
In base al caso d'uso, segui i passaggi di risoluzione per aggiungere il processo di rimozione di oggetti inutili (garbage collection) del kubelet al file di configurazione predefinito o a un nodo esistente. Quindi, verifica che nell’endpoint del nodo siano presenti gli argomenti.
Per ulteriori informazioni, consulta la sezione Rimozione di oggetti inutili (garbage collection) di container e immagini inutilizzati sul sito Web di Kubernetes.
Soluzione
Nota: la seguente soluzione si applica alle AMI Linux ottimizzate per Amazon EKS.
Aggiungi gli argomenti del processo di rimozione di oggetti inutili (garbage collection) del kubelet al file kubelet-config predefinito
Utilizza la funzionalità Modello di avvio personalizzato di Amazon EKS per aggiungere gli argomenti del processo di rimozione di oggetti inutili (garbage collection) del kubelet al file kubelet-config predefinito in Amazon Machine Image (AMI). Quando crei il modello di avvio, specifica gli argomenti in UserData.
- Il comando seguente aggiorna il file KUBELET_CONFIG nell’AMI. Imposta imageGCHighThresholdPercent=70 e imageGCLowThresholdPercent=60. Per ulteriori informazioni, consulta la sezione Configurare i dettagli dell’istanza.
Nota: sostituisci your-cluster-name con il nome del tuo cluster Amazon ECS. Se non usi il file kubelet-config predefinito, aggiorna il nome del file.#!/bin/bash set -o xtrace KUBELET_CONFIG=/etc/kubernetes/kubelet/kubelet-config.json # Inject imageGCHighThresholdPercent value unless it has already been set. if ! grep -q imageGCHighThresholdPercent $KUBELET_CONFIG; then echo "$(jq ".imageGCHighThresholdPercent=70" $KUBELET_CONFIG)" > $KUBELET_CONFIG fi # Inject imageGCLowThresholdPercent value unless it has already been set. if ! grep -q imageGCLowThresholdPercent $KUBELET_CONFIG; then echo "$(jq ".imageGCLowThresholdPercent=60" $KUBELET_CONFIG)" > $KUBELET_CONFIG fi /etc/eks/bootstrap.sh your-cluster-name
- Crea un gruppo nodi worker con il modello di avvio.
Aggiungi gli argomenti del processo di rimozione di oggetti inutili (garbage collection) del kubelet a un nodo worker esistente
Importante: i passaggi seguenti richiedono la connessione a un nodo worker esistente con SSH e l'accesso sudo. È necessario completare questi passaggi in tutti i nodi worker esistenti nel cluster Amazon EKS.
-
Apri il file /etc/kubernetes/kubelet/kubelet-config.json nei tuoi nodi worker. Se hai avviato il nodo worker con EKSCTL, apri /etc/eksctl/kubelet.yaml:
sudo vi /etc/kubernetes/kubelet/kubelet-config.json #WORKER NODES LAUNCHED USING EKSCTL sudo vi /etc/eksctl/kubelet.yaml
-
In base a come hai avviato i tuoi nodi worker, aggiungi gli argomenti del proesso di rimozione di oggetti inutili (garbage collection) del kubelet al file kubelet-config.json o kubelet.yaml. Quindi, salva il file:
{ "kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", . . . "imageGCHighThresholdPercent": 70, ==> Add the argument under the same alignment as the "kind" "imageGCLowThresholdPercent": 60, "maxPods": ... } #WORKER NODES LAUNCHED USING EKSCTL kind: KubeletConfiguration kubeReserved: cpu: 70m ephemeral-storage: 1Gi memory: 1843Mi serverTLSBootstrap: true imageGCHighThresholdPercent: 70 ==> Add the arguments under the alignment "Kind" in the yaml file imageGCLowThresholdPercent: 60
-
Per riavviare il servizio kubelet nel nodo worker, esegui il seguente comando:
sudo service kubelet restart
Verifica che i nuovi argomenti del processo di rimozione di oggetti inutili (garbage collection) del kubelet siano nell'endpoint configz del nodo
-
Per ottenere il nome dei nodi worker, esegui il comando seguente:
kubectl get nodes
-
Per aprire una connessione al server API, esegui il comando:
kubectl proxy
-
Per controllare il nodo configz, apri una nuova finestra terminale. Esegui il seguente:
curl -sSL "http://localhost:8001/api/v1/nodes/node_name/proxy/configz" | python3 -m json.tool
Nota: sostituisci node_name con il nome del tuo nodo dall'elenco dei nodi recuperato in precedenza. Se non sono disponibili cURL e Python, apri l'URL in un browser Web.
Questo comando restituisce l'output di kubeletconfig. Questo output include le impostazioni del file bootstrap.sh. Considera l'esempio seguente:
{"kubeletconfig": { . . "imageGCHighThresholdPercent": 70, <=== The new value is set to 70 as given in UserData "imageGCLowThresholdPercent": 60, <=== The new value is set to 50 as given in UserData . . } }
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 7 mesi fa