Comment puis-je configurer un Kubernetes Metrics Server et un Horizontal Pod Autoscaler sur Amazon EKS ?

Dernière mise à jour : 18/05/2020

Je souhaite configurer un Kubernetes Metrics Server et un Horizontal Pod Autoscaler (HPA) sur Amazon Elastic Kubernetes Service (Amazon EKS).

Résolution

Configurer l'environnement

1.    Créez une instance Amazon Elastic Compute Cloud (Amazon EC2).

2.    Installez kubectl sur votre instance Amazon EC2.

3.    Installez et configurez la version la plus récente de l'interface de ligne de commande AWS (CLI AWS) sur votre instance EC2.

4.    Configurez le fichier kubeconfig pour qu'il pointe vers le cluster Amazon EKS.

Créer un Kubernetes Metrics Server

1.    Pour installer Metrics Server, exécutez la commande suivante :

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

2.    Pour vérifier si Metrics Server est en cours d'exécution, exécutez la commande suivante :

kubectl get pods -n kube-system -l k8s-app=metrics-server

Le résultat ressemble à ce qui suit :

kubectl get pods -n kube-system -l k8s-app=metrics-server
metrics-server-85cc795fbf-79d72   1/1     Running   0          22s

Créer un déploiement php-apache et un service

1.    Pour créer un déploiement php-apache, exécutez la commande suivante :

kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example

2.    Pour définir les requêtes de CPU, exécutez la commande suivante :

kubectl patch deployment php-apache -p='{"spec":{"template":{"spec":{"containers":[{"name":"hpa-example","resources":{"requests":{"cpu":"200m"}}}]}}}}'

Important : si vous ne configurez pas correctement la valeur pour cpu, la métrique d'utilisation du CPU pour le pod ne sera pas définie et le HPA ne pourra pas être mis à l'échelle.

3.    Pour exposer le déploiement en tant que service, exécutez la commande suivante :

kubectl create service clusterip php-apache --tcp=80

4.    Pour créer un HPA, exécutez la commande suivante :

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

5.    Pour vérifier si le HPA a été créé, exécutez la commande suivante.

kubectl get hpa

6.    Pour créer un pod et vous connecter au déploiement que vous avez précédemment créé, exécutez la commande suivante :

kubectl run --generator=run-pod/v1 -i --tty load-generator --image=busybox /bin/sh

7.    Pour tester une charge sur le pod dans l'espace de nom que vous avez utilisé à l'étape 1, exécutez le script suivant :

while true; do wget -q -O- http://php-apache; done

Remarque : pour quitter la boucle while et la session tty du pod générateur de charge, appuyez sur CTRL+C pour annuler la boucle, puis sur CTRL+D pour quitter la session.

8.    Pour voir comment le HPA dimensionne le pod en fonction des métriques d'utilisation du CPU, exécutez la commande suivante (de préférence depuis une autre fenêtre de terminal) :

kubectl get hpa -w

Le Metrics Server est désormais configuré et opérationnel et vous pouvez l'utiliser pour obtenir des métriques basées sur les ressources.

9.    Pour nettoyer les ressources utilisées pour tester le HPA, exécutez les commandes suivantes :

kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator

Cette page vous a-t-elle été utile ?

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


Vous avez besoin d'aide ?