labos-cloud

Laboratoires pour diverses technologies utilisées dans le cloud

View on GitHub

Exercice 2

Interagir avec le cluster

Après la création du cluster pour l’exercice 1 et lors de l’exécution de la commande pour obtenir les informations du cluster, on obtient l’adresse ip du Master. Le cluster est aussi composé de 3 nodes. gcloud container clusters describe permet d’afficher de l’information détaillée sur le cluster; on voit l’adresse IP du Master, le initialNodeCount mais il ne semble pas y avoir d’information sur les noeuds individuels. L’aide-mémoire de kubectl indique comment visualiser et rechercher des ressources. kubectl get pods -o wide affiche plus de détails sur les pods, notamment sur quel noeud s’exécute chaque pod. Puisque les noeuds sont des machines virtuelles sur Google Compute Engine, il est possible de s’y connecter. Connectez-vous à un noeud exécutant un pod et inspectez les containers en cours d’exécution. Modifiez les valeurs pour le nom du déploiement et du pod dans le manifest du déploiement pour “apache-deployment”. Dans le manifest du service changez le nom pour “apache-service”, appliquez les modifications à votre cluster et inspectez de nouveau. Changer le nom d’un déploiement ne supprime pas l’ancien mais crée un nouveau déploiement distinct, ce qui explique pourquoi nous avons maintenant 4 pods.

noeud pod container

kubectl describe --help permet d’obtenir plus d’informations sur les ressources Kubernetes. Comparez le résultat aux valeurs dans les manifests. Le nombre de pods est défini par un ReplicaSet créé dans un déploiement. Pour changer le nombre de replicas, on peut utiliser la commande kubectl scale --replicas=3 deployment/apache-deployment. Pour activer la mise à l’échelle automatisée, il faut créer un Horizontal Pod Autoscaler. Cette ressource ajuste le nombre de pods en exécution selon une ou des métriques qu’il faut spécifier dans le manifest du déploiement. Modifiez le vôtre avec les valeurs suivantes puis appliquez les changements.

deployment ressources

Mise à l’échelle

Pour créer le HPA, utilisez kubectl autoscale deployment apache-deployment --cpu-percent=3 --min=1 --max=8 et nous aurons entre 1 et 8 pods basé sur la métrique d’utilisation du processeur à 3%. Pour voir l’autoscaler en action, watch kubectl get hpa. Notre application étant très peu sollicitée, générons de la charge de processeur en lançant un pod qui effectuera des requêtes à l’infini. Dans un second terminal connecté au même hôte, exécutez kubectl run -i --tty load-generator --rm --image=busybox --restart=Never -- /bin/sh -c "while sleep 0.01; do wget -q -O- http://apache-service; done". Vous pouvez lancez un 3e terminal et surveiller les pods. Sur GCP vous pouvez utiliser la Console, l’outil ligne de commande gcloud sdk et une connexion avec un outil tiers. Pour arrêter le générateur de charge, ctrl+c dans le second terminal.

autoscaling deployment

Pour mettre à l’échelle le cluster en ajoutant ou en retirant des noeuds, soit en créeant ou supprimant des machines virtuelles qui sont des ressources du fournisseur cloud et non de Kubernetes, on exécute gcloud container clusters resize test-kubernetes --num-nodes 5 pour avoir 5 noeuds. Il est aussi possible de configurer l’autoscaling de cluster selon vos besoins. Vous pouvez supprimer votre cluster quand vous aurez terminé.

Revenir à l’exercice 1 Poursuivre avec l’exercice 3