Comment configurer les nœuds de travail Amazon EKS pour nettoyer le cache d'image à un pourcentage donné de l'utilisation du disque ?

Dernière mise à jour : 10/06/2020

Je souhaite utiliser les nœuds de travail Amazon Elastic Kubernetes Service (Amazon EKS) pour nettoyer le cache d'image à un pourcentage donné de l'utilisation du disque.

Brève description

Pour nettoyer le cache d'image avec les nœuds de travail Amazon EKS, utilisez les arguments de nettoyage de mémoire kubelet suivants :

  • L'argument -image-gc-high-threshold définit le pourcentage d'utilisation du disque qui déclenche le nettoyage de la mémoire d'image. La valeur par défaut est 85 %.
  • L'argument -image-gc-low-threshold définit le pourcentage d'utilisation du disque que le nettoyage de la mémoire d'image tente de libérer. La valeur par défaut est 80 %.

Remarque : dans la solution suivante, les arguments de nettoyage de la mémoire kubelet sont utilisés pour nettoyer le cache d'image dans le nœud de travail lorsque l'utilisation du disque atteint 70 %. -image-gc-high-threshold a la valeur 70 %. -image-gc-low-threshold a la valeur 50 %.

Pour ajouter des arguments de nettoyage de la mémoire kubelet à un nouveau nœud de travail Amazon EKS, procédez comme suit dans les sections ci-dessous :

  1. Créer un nœud de travail avec des arguments de nettoyage de mémoire kubelet
  2. Vérifier que les nouveaux arguments de nettoyage de la mémoire kubelet se trouvent dans le point de terminaison configz du nœud

Pour ajouter des arguments de nettoyage de la mémoire kubelet à un nœud de travail Amazon EKS existant, procédez comme suit dans les sections ci-dessous :

  1. Ajouter les arguments de nettoyage de la mémoire kubelet à un nœud de travail existant
  2. Vérifier que les nouveaux arguments de nettoyage de la mémoire kubelet se trouvent dans le point de terminaison configz du nœud

Solution

Remarque : la solution suivante s'applique aux Amazon Machine Images (AMI) Linux optimisées pour Amazon EKS.

Créer un nœud de travail avec des arguments de nettoyage de mémoire kubelet

1.    Créez une instance Amazon Elastic Compute Cloud (Amazon EC2). Veillez à inclure les arguments kubelet -image-gc-low-threshold et -image-gc-high-threshold dans la section UserData de la page Étape 3 : Définir les informations d’instance.

Exemples :

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh your-cluster-name --kubelet-extra-args '--image-gc-low-threshold=50 --image-gc-high-threshold=70'

Remarque : remplacez nom_cluster_eks par le nom de votre cluster.

2.    Ajoutez le nœud de travail à votre cluster Amazon EKS.

3.    Pour vérifier les modifications dans les arguments, suivez les étapes dans Vérifier que les nouveaux arguments de nettoyage de la mémoire kubelet se trouvent dans la section de point de terminaison configz du nœud.

Ajouter les arguments de nettoyage de la mémoire kubelet à un nœud de travail existant

Important : les étapes suivantes nécessitent que vous vous connectiez à un nœud de travail existant avec SSH et que vous disposiez d'un accès sudo. Ces étapes doivent être effectuées sur tous les nœuds de travail existants de votre cluster Amazon EKS.

1.    Connectez-vous à un nœud de travail existant en utilisant SSH.

2.    Ouvrez le fichier /etc/kuberentes/kubelet/kubelet-config.json dans vos nœuds de travail.

Si le nœud de travail a été lancé à l'aide d'EKSCTL, ouvrez /etc/eksctl/kubelet.yaml.

Exemples :

sudo vi /etc/kubernetes/kubelet/kubelet-config.json

#WORKER NODES LAUNCHED USING EKSCTL

sudo vi /etc/eksctl/kubelet.yaml

3.    Ajoutez les arguments de nettoyage de la mémoire kubelet au fichier kubelet-config.json ou kubelet.yaml, en fonction de la façon dont vos nœuds de travail ont été lancés. Enregistrez le fichier.

Exemples :

{
  "kind": "KubeletConfiguration",
  "apiVersion": "kubelet.config.k8s.io/v1beta1",
  .
  .
  .
  "imageGCHighThresholdPercent": 70,         ==> Add the argument under the same alignment as the "kind"
  "imageGCLowThresholdPercent": 50,
  "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: 50

4.    Pour redémarrer le service kubelet dans le nœud de travail, exécutez la commande suivante :

sudo service kubelet restart

5.    Pour vérifier les modifications dans les arguments, suivez les étapes dans Vérifier que les nouveaux arguments de nettoyage de la mémoire kubelet se trouvent dans la section de point de terminaison configz du nœud.

Vérifier que les nouveaux arguments de nettoyage de la mémoire kubelet se trouvent dans le point de terminaison configz du nœud

1.    Pour obtenir le nom de vos nœuds de travail, exécutez la commande suivante :

kubectl get nodes

2.    Pour ouvrir une connexion au serveur d'API, exécutez la commande suivante :

kubectl proxy

3.    Pour vérifier la configuration du nœud, ouvrez un nouveau terminal, puis exécutez la commande suivante :

curl -sSL "http://localhost:8001/api/v1/nodes/node_name/proxy/configz" | python3 -m json.tool

Remarque : remplacez nom_du_nœud par le nom de votre nœud dans la liste des nœuds récupérés à l'étape 1. Si curl et Python ne sont pas disponibles, vous pouvez ouvrir l'URL dans un navigateur Web.

La commande précédente renvoie la sortie de kubeletconfig, qui inclut vos paramètres du fichier bootstrap.sh .

Exemples :

{
"kubeletconfig": {
  .
  .
  "imageGCHighThresholdPercent": 70,          <=== The new value is set to 70 as given in UserData
  "imageGCLowThresholdPercent": 50,           <=== The new value is set to 50 as given in UserData
  .
  .
}
}

Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?