Comment bien se former à Kubernetes
Les serveurs en production ne sont assurément pas les meilleurs environnements pour se tester à essayer un nouvel outil. Cet article vous aide à configurer un cluster Kubernetes sur votre machine pour effectuer vos expérimentations.
S'ils ne sont pas déjà en production dans les entreprises, les containers sont et seront à coup sûr la prochaine étape de l’évolution des SI. Mettre en place son propre labo Kubernetes est un bon moyen de comprendre l'orchestration et la gestion de ces containers.
Ce didacticiel porte avant tout sur l'installation et le support du cluster, matériel compris. Cet environnement, qui servira avant tout à la formation, doit être une réplique d’une installation sur site de Kubernetes. Son déploiement s’appuie sur HashiCorp Vagrant, un outil en ligne de commande qui peut déployer des environnements virtuels. Il inclut trois machines virtuelles Linux et des versions spécifiques de Docker et de Kubernetes.
Toutefois, cet article n’a pas vocation à tout aborder. Il ne couvre par exemple pas la gestion des conteneurs à l'intérieur de ce cluster.
Vagrant et Kubernetes : les pré-requis
Pour commencer, installez Vagrant. Rendez-vous sur vagrantup.com, et téléchargez le programme d'installation pour votre OS. Vagrant fonctionne avec de nombreuses plateformes de virtualisation, mais ce didacticiel utilise Oracle VM VirtualBox (gratuite et open source) car elle est facile à utiliser. Installez donc la dernière version de VirtualBox.
Ensuite, installez le dépôt Git. Ce labo Kubernetes est disponible dans les fichiers Git de l'auteur ce cet article.
Les outils Git s'installent automatiquement lorsque l’on exécute pour la première fois une commande Git (voir Figure 1). Il existe une variété d'outils Git, comme l'application officielle GitHub Desktop (pour Windows par exemple).
Ce laboratoire a été créé sur Red Hat Fedora 25. Cet OS offre la possibilité d'utiliser la bonne version de Docker et permet un déploiement d'infrastructure Kubernetes assez simple. Kubernetes a la réputation d'être un projet complexe. Vous pouvez alors partager du code sur un dépôt GitHub avec d'autres membres de la communauté opérationnelle de Kubernetes.
Cloner ce labo Kubernetes
Une fois Git installé, clonez le dépôt depuis github.com/DemitasseNZ/KubernetesHomeLab. Allez dans le répertoire et tapez Vagrant up.
Le clonage prendra un certain temps, selon la connexion Internet. Le système télécharge une image VirtualBox de Fedora 25 et l'utilise pour créer trois VM : un master Kubernetes et deux slaves. Docker et Kubernetes se déploient ensuite sur les trois VM, toujours par téléchargement. Une fois le master finalisé, ce dernier initialise un cluster Kubernetes - ce qui prend quelques minutes de plus pour le mettre en place. Comme c'est toujours le cas avec un labo local, les spécifications de l’ordinateur portable déterminent la réactivité de votre espace d’expérimentation ; beaucoup de RAM, de disques durs SSD et un processeur rapide aideront en cela.
Utilisez le temps de téléchargement et d'installation pour en savoir plus sur Vagrant et sur comment bâtir l'infrastructure Kubernetes. Le fichier Vagrantfile permet de créer les trois machines virtuelles Fedora 25, chacune avec une adresse IP sur le réseau privé (voir Figure 3). La machine virtuelle maître tourne en premier et utilise le script master.sh pour terminer sa configuration. Les deux nœuds worker utilisent le script worker.sh.
Le script master (voir Figure 4) est plus complexe que celui du worker, car il doit configurer le cluster Kubernetes et la machine virtuelle maître que l'administrateur utilisera pour gérer le cluster. Le premier bloc de master.sh (en rouge) concerne l'installation de Docker, en particulier Docker version 17.03 dans cet article. La ligne qui démarre sed -i change une ligne dans un fichier de configuration Docker afin que celui-ci utilise les pilotes que Kubernetes préfère. Le deuxième bloc (en rose) installe Kubernetes et modifie à nouveau un fichier de configuration par souci de cohérence. Le troisième bloc (en bleu) crée le cluster Kubernetes et le plug-in de mise en réseau qui permet aux connexions réseau de fonctionner sur les nœuds. Les deux lignes du script de formation de cluster Kubernetes redirigent leur sortie dans un log. Il se situe dans /vagrant, qui est un dossier à l'intérieur de la machine virtuelle. Il correspond au dossier où se trouve le Vagrantfile.
Bien que l'installation nécessite un certain temps (voir Figure 5), il a fallu une demi-heure pour construire les VM et le cluster Kubernetes. Par exemple, le téléchargement de l'image de Fedora 25 a pris beaucoup de temps, mais vous ne répéterez pas cette étape si vous recréez un labo identique sur ce même ordinateur.
Le fichier log, Kubeinit.log (voir Figure 6), commence par les actions prises par kubeadm, une boîte à outils de bootstrapping pour clusters Kubernetes. Les logs montrent alors que le master est initialisé. Ensuite, le log donne la ligne de commande à utiliser pour relier les nœuds worker au cluster. Le token est un mot de passe pour que les nœuds rejoignent le cluster, tandis que le certificat d’autorité à la fin (ca-cert) assure qu'il a rejoint le bon.
Comment utiliser ce labo
Vagrant partage le dossier /home/vagrant entre les nœuds. Le script worker.sh est identique au script master, jusqu'à la fin du processus d'installation de Kubernetes, où la commande kubeadm join ... est extraite du log et exécutée. Vagrant ouvre une console pour le maître ; les deux nœuds restent headless, ce qui est la valeur par défaut de Vagrant. Utilisez ssh master vagrant pour ouvrir une session sur le master, ou utilisez la fenêtre de la console. Pour observer le cluster, connectez-vous à la console de la machine virtuelle maître comme utilisateur vagrant avec vagrant pour mot de passe. Ensuite, lancez sudo kubectl get nodes : vous avez trois nœuds, un maître et deux avec <none> comme rôle.
Ce didacticiel crée un cluster Kubernetes de base que l’on peut tester sans se soucier de problème de production. Pour arrêter le laboratoire et libérer ses 4 Go de RAM, utilisez vagrant halt. Vous pouvez utiliser vagrant destroy pour supprimer toutes les VM, puis vagrant up pour ré-initialiser. Pour que ces commandes fonctionnent, elles doivent être saisies dans le répertoire où réside le Vagrantfile.