Dans Kubernetes, la gestion des ressources et le nettoyage automatique des images sont essentiels pour maintenir la performance des nœuds. Cet article décrit commment configurer la réservation d'espace pour le kubelet et paramétrer la suppression des images périmées dans un environnement Kubernetes 1.28.x.
Réservation d'espace pour les ressources système
Le kubelet permet de réserver des ressources CPU et mémoire pour les processus système et les composants Kubernetes via le champ kube-reserved. Cette configuration s'effectue généralement dans le fichier de configuration du kubelet ou dans les fichiers d'initialisation de kubeadm.
Par exemple, pour réserver 3 Gi de mémoire et 1500m de CPU, vous pouvez définir les paramètres suivants dans le fichier de configuration du kubelet :
kube-reserved:
cpu: "1500m"
memory: "3Gi"
Alternativement, dans un fichier d'initialisation pour kubeadm (par exemple, init-config.yaml), vous pouvez intégrer ces paramètres dans les arguments supplémentaires du kubelet :
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
kube-reserved: "cpu=1500m,memory=3Gi"
image-gc-high-threshold: "75"
image-gc-low-threshold: "55"
Cette approche garantit que les ressources réservées sont déduites de la capacité totale du nœud, évitant ainsi la surallocation pour les pods applicatifs.
Paramétrage de la suppression des images périmées
Le kubelet nettoie automatiquement les images obsolètes en fonction de deux seuils : imageGCHighThresholdPercent et imageGCLowThresholdPercent. Ces valeurs déterminent respectivement le pourcentage d'utilisation du disque à partir duquel le nettoyage démarre et s'arrête.
Pour configurer ces seuils, modifiez le fichier /var/lib/kubelet/config.yaml en ajoutant :
imageGCHighThresholdPercent: 80
imageGCLowThresholdPercent: 60
Dans cet exemple, le kubelet commencera à supprimer les images anciennes lorsque l'utilisation du disque atteindra 80%, et cessera une fois celle-ci redescendue à 60%. Les images inutilisées ou les plus anciennes sont ciblées en priorité, selon les politiques internes du kubelet.
Pour appliquer ces modifications, redémarrez le kubelet :
sudo systemctl daemon-reload
sudo systemctl restart kubelet
Ajustement du nombre maximal de pods par nœud
Par défaut, chaque nœud Kubernetes peut exécuter jusqu'à 110 pods. Pour augmenter cette limite, configurez l'option maxPods dans le fichier de configuration du kubelet.
Modifiez /var/lib/kubelet/config.yaml pour définir, par exemple, une limite de 200 pods :
maxPods: 200
Redémarrez ensuite le kubelet pour que le changement prenne effet :
sudo systemctl restart kubelet.service
Vous pouvez vérifier la nouvelle configuration en interrogeant l'état du nœud depuis le plan de contrôle, par exemple avec kubectl describe node <nom-du-nœud>.