Hackathon#6 - Discover Kubernetes avec la Nico'Team

Publié le

11 juil. 2017

events

Les deux Nicos de notre KNPTeam avaient envie de tester Kubernetes. Comme leur projet client actuel contient en fait plusieurs projets et qu’il a été récemment dockerisé, il se prêtait parfaitement à l'expérience. Leurs objectifs pour ce hackathon :

  • apprendre comment répliquer des containers sur plusieurs machines.
  • Faire des crash tests et des tests de répartition de charge (pour avoir une politique de 0 down time).
  • découvrir d’éventuels patterns à suivre.

**Daily fin de jour 1 : Ce qu’on a réalisé **

Avant tout, RTFM pour se familiariser avec le vocabulaire de Kubernetes. L’équipe a converti les fichiers docker-compose en fichiers Kubernetes avec l’outil Kompose. Nico M. est parti sur Minikube (qui permet de faire tourner Kubernetes en local) pendant que Nico N. a essayé toutes les façons d’installer Kubernetes, avant de switcher lui aussi sur Minikube. L’équipe a déjà beaucoup appris au terme de ce premier jour. Prochaine étape : faire tourner l’API du projet client existant dessus.

Review fin du jour 2 : Ce qu’on a réalisé

  • Testé l’interface graphique, qui est pas mal.
  • Testé l’ajout de serveurs nginx : pour avoir 3 serveurs, il a suffit de créer des répliques du premier déploiement en une ligne de commande.
  • Simulé un serveur qui tombe : la demande initiale étant de 3 serveurs, si l’équipe en kill un, Kubernetes va automatiquement en recréer un nouveau.

Les commentaires de la team :

On aurait bien voulu automatiser encore davantage, faire des simulations de charge pour faire des autoscale, mais le temps a manqué. Kubernetes est bien complexe, et demande les connaissances d’un véritable admin sys. La partie la plus difficile a été l’install, puis le faire tourner en local.

En conclusion, c’est un outil très pratique, mais plutôt fait pour les grosses structures ayant un pôle infrastructure dédié.

Quelques commandes utilisées :

  • Pour convertir votre docker-compose.yml en objets utilisables par Kubernetes (fichiers yaml de configuration des services et déploiements k8s), nous avons utilisé Kompose :
kompose -f docker-compose.yml convert
  • Ensuite, nous avons utilisé Minikube pour créer un cluster local :
minikube start
  • Et nous avons construit nos images sur ce cluster pour qu’elles soient accessibles par k8s. Premièrement, il faut indiquer à docker qu’il doit utiliser l’environnement du cluster via la commande :
eval $(minikube docker-env)

Modifier le fichier**/etc/sysconfig/docker** en remplaçant la ligne

DOCKER_CERT_PATH=/etc/docker

par

if [ -z “${DOCKER_VERT_PATH}” ]; then
  DOCKER_VERT_PATH=/etc/docker
fi

Enfin, construire les images sur le cluster en utilisant la commande habituelle

docker build /path/to/dockerfile/directory -t image\_name
  • Pour finir, déployer l’application sur le cluster local minikube via la commande
kubectl create -f /path/to/yaml/objects/directory
  • L’appli est déployée. Dans notre cas, nous avions un déploiement nginx, (créé à partir de notre fichier docker-compose.yml), que nous pouvions voir grâce à la commande
kubectl get deployments

Pour ajouter d’autres instances de ce déploiement, il suffit d’indiquer à k8s combien de répliques nous voulons créer , par exemple :

kubectl scale --replicas=3 deployment/nginx

K8s s’occupe de créer les deux autres instances de nginx pour arriver à un total de 3, et ce même si l’une de ces instances vient à tomber.

Liens utiles

Plus d’infos sur notre Hackathon sur notre page Facebook - si vous voulez rejoindre la KNPTeam, on recrute pour des missions à Paris !

Publié par

Eve Vinclair-Berkemeier
Eve Vinclair-Berkemeier

People Manager @ KNPLabs

Scrum Mistress - AFOL at home and at work :D Helping hand for client projects and internal organization of our teams at KNP.

Commentaires