Je souhaite résoudre la pression excessive du disque sur mes composants master Amazon Elastic Kubernetes Service (Amazon EKS).
Brève description
La pression du disque sur les composants master Kubernetes se produit lorsque l'espace disque disponible chute à un faible niveau. Pour réduire la pression sur le disque, augmentez la taille du volume EBS ou ajoutez de nouveaux composants master au groupe de nœuds pour augmenter la capacité du disque. Vous pouvez également ajuster les seuils de récupération de mémoire d’images Kubelet, configurer la rotation du journal d'exécution des conteneurs et nettoyer manuellement les images inutilisées pour gérer efficacement l'utilisation du disque.
Il est important de surveiller et de gérer le stockage éphémère pour éviter les problèmes de pression sur le disque et pour vous assurer que vos clusters Kubernetes fonctionnent correctement.
Si la pression du disque est excessive, un message d'erreur peut s’afficher.
Pour le nœud, un message d’erreur similaire à l’exemple suivant peut s’afficher :
"Warning DiskPressure ... kubelet, worker-node DiskPressure on node"
Pour Kubelet, un message d’erreur similaire à l’exemple suivant peut s’afficher :
"Disk usage on image filesystem is over the high threshold, trying to free bytes down to the low threshold"
Pour confirmer le problème, exécutez la commande df -h pour vérifier l'utilisation du disque sur le composant master.
Exemple de sortie :
/dev/nvme0n1p1 20G 18G 2.2G 90% /
........
Remarque : Dans l'exemple précédent, le système de fichiers racine /dev/nvme0n1p1 est utilisé à 90 %. L'utilisation élevée entraîne des problèmes de pression sur le disque et d'échec du récupérateur de mémoire.
Résolution
Augmenter la taille du volume EBS
Pour augmenter l'espace disque disponible, augmentez la taille du volume EBS attaché au composant master. Pour plus d'informations, consultez la section Comment augmenter ou diminuer la taille de mon volume EBS ?
Remarque : Plutôt que de redimensionner vos volumes éphémères, il est recommandé de provisionner de nouvelles instances avec la taille de disque souhaitée. Utilisez les nouvelles instances pour remplacer l'ancienne. Ensuite, les nouvelles instances présentent la bonne taille de disque et s'alignent sur l'état d'esprit immuable de l'infrastructure.
Ajouter un nouveau composant master au groupe de nœuds
Ajoutez un nouveau composant au groupe ou au pool de composants pour augmenter le volume de disque du cluster afin de répartir la charge de travail sur plusieurs composants. Cela permet d'alléger la pression du disque sur n'importe quel composant.
Définir des seuils personnalisés pour le récupérateur de mémoire Kubelet
Configurez le Kubelet pour lancer la récupération de mémoire d’images à différents seuils d'utilisation du disque. Pour ce faire, définissez les arguments --image-gc-high-threshold et --image-gc-low-threshold afin de permettre une plus grande quantité de mémoire tampon. Par exemple, définissez le seuil haut sur 70 % et le seuil bas sur 60 % pour conserver une plus grande quantité d'espace disque disponible. Cette configuration permet au Kubelet d'effectuer la collecte de récupération d’images avant que le disque ne soit complètement saturé.
Pour plus d'informations sur la configuration de ces arguments sur vos composants master, consultez la section Comment configurer les composants master Amazon EKS pour nettoyer le cache d'images à un pourcentage spécifié d'utilisation du disque ?
Vérifier et ajuster la rotation du journal d'exécution du conteneur
Les applications conteneurisées écrivent des journaux sur stdout et stderr, et les fichiers journaux sont gérés par l’exécution du conteneur. Il est recommandé d'ajuster les paramètres de rotation des journaux pour l'exécution du conteneur sur vos composants master.
Pour configurer la rotation de votre journal, pour containerd, utilisez les options de containerd.runc.log dans le fichier de configuration /etc/cotainerd/config/toml. Définissez les options de log_file_max et log_file_max_size pour contrôler le nombre maximal de fichiers journaux ayant fait l’objet d’une rotation et la taille maximale de chaque fichier journal.
Nettoyer les images de conteneur inutilisées
Si Kubelet ne peut pas effectuer automatiquement de récupération de mémoire d’images, nettoyez manuellement les images de conteneur inutilisées sur le composant master. Pour supprimer les images inutilisées ou inutilisées et libérer de l'espace disque important, utilisez la commande crictl rmi --prune.
Gérer votre stockage éphémère
Pour garantir la stabilité à long terme et le bon fonctionnement de vos applications, il est recommandé de gérer correctement le stockage éphémère. Si vous ne définissez pas de limites pour le stockage éphémère, un pod peut consommer la totalité de l'espace disque du nœud sur lequel il s'exécute.
Pour atténuer ce risque, définissez des demandes et des limites de stockage éphémères appropriées pour vos pods. Effectuez les opérations suivantes pour déterminer les limites :