Contactez-nous
-
kubernetes

Kubernetes pour les nuls

Les applications conteneurisées sont devenues très populaires ces dernières années. La plateforme d’orchestration de conteneurs Kubernetes a elle aussi été massivement adoptée par les entreprises. C’est en ce sens que j’ai décidé de m’y intéresser.

kubernetes pour les nuls

Sommaire

Pourquoi j’ai eu envie de découvrir Kubernetes ?

J’ai eu l’occasion de mener plusieurs projets avec Docker pour conteneuriser des applications afin de faciliter leur déploiement. Cela m’a permis de construire des applications et de rassembler toutes les dépendances, l’OS et le code au sein d’un conteneur. Le processus de déploiement s’est vu simplifié et accéléré.

Vous l’aurez compris, les conteneurs m’ont permis de faciliter le développement et le déploiement des applications. Mais je me suis vite retrouvé avec plusieurs dizaines de conteneurs à gérer. Plusieurs problématiques sont alors apparues :

  • Comment mettre à jour les conteneurs sans interruption de service ?
  • Comment les monitorer ?
  • Comment absorber les pics de charges ?

C’est en me posant ces questions que je me suis interrogé et intéressé à Kubernetes. Il s’agit d’un outil d’orchestration de conteneurs permettant de les créer et de les déployer. Il permet d’automatiser d’un grand nombre de processus manuels associés aux déploiements, à la gestion et à la mise à l’échelle des applications.

Pour rappel, Docker a pour rôle de packager et de déployer sur un serveur les applications dans des conteneurs. Kubernetes permet d’améliorer les processus, permettant de déployer facilement de nouvelles versions sur des centaines (voire des milliers) de serveurs. Le tout sans l'interruption de service.

Comment je me suis formé à Kubernetes ?

Pour découvrir et me former à cet orchestrateur, il n’y a pas de secret, il faut “mettre les mains dans le cambouis”.

J’entends par là, déployer et utiliser un cluster Kubernetes. Cependant, mettre en place un cluster avec peu ou pas d’expérience sur cette technologie n’est pas évident. Heureusement, après quelques recherches sur Internet, j’ai trouvé un projet s’intitulant Minikube, outil permettant d’avoir un cluster à nœud unique et très “user-friendly”. Il est très facile à installer (disponible sur Linux, macOS et Windows). Vous retrouverez la documentation d’installation juste ici https://kubernetes.io/fr/docs/tasks/tools/install-minikube/ Cet outil m’a permis de déployer un cluster Kubernetes local directement pour mon poste de travail et prêt à l’emploi.

Disclaimer : Minikube n’est pas du tout prod ready. Il est à utiliser uniquement à des fins de tests et d'apprentissage, car son architecture n’est pas résiliente.

Une fois que j'avais mon cluster “up and running”, j’ai pu commencer à me familiariser avec ce dernier en déployant une application. J’ai utilisé la ligne de commande avec kubectl, outil me permettant de déployer des applications, d’inspecter et de gérer les ressources de mon cluster.

Pour revenir plus en détails sur mon processus de formation, j’ai suivi la documentation officielle de Kubernetes, que vous pouvez retrouver ici : https://kubernetes.io/docs/tutorials/kubernetes-basics/_print/

Ce “Learn Kubernetes Basics” nous propose 6 modules :

  1. Création d’un cluster
  2. Déploiement d’une application
  3. Exploration de l’application
  4. Exposer publiquement l’application
  5. Mise à l’échelle de l’application
  6. Mettre à jour son application

J’ai trouvé ce tutoriel très bien fait, adapté aux débutants et didactique. On découvre l’orchestrateur tout en douceur.

Ce que j’ai apprécié, ce sont les informations apportées sur chacun des modules. Il y a des parties pratiques qui permettent de comprendre chaque étape pas à pas. J’ai pu mettre tout de suite en application les notions fraîchement acquises.

Ce tutoriel bénéficie de Katacoda qui vous met à disposition un terminal virtuel directement dans votre navigateur faisant tourner Minikube. Il n’y a pas besoin d’installer quelconque logiciel ou de faire des configurations. Tout ce qu’il faut, c’est une connexion internet et un navigateur. Donc, aucune excuse ! 😛

Les difficultés rencontrées

Kubernetes est un environnement difficile qui nécessite du temps et de la pratique pour saisir tout son potentiel.

Les difficultés que j’ai rencontrées ont été au niveau de la compréhension des différents composants d’un cluster Kubernetes (les control plane, les workers, le scheduler, l’API server, kube-proxy, kubelet… 🤯) et surtout leur rôle et comment ils interagissent entre eux…

Pour continuer sur les composants, j’ai eu du mal à comprendre certaines notions clés de kubernetes. Plus spécifiquement sur ce qu’est un Pod, qu’est ce qui le différencie d’un conteneur ? d’un déploiement ?

La notion de service m’a également fait chauffer le cerveau. Tout d’abord, il faut comprendre ce qu’est un service au sens Kubernetes. Ensuite, il y a plusieurs types de services. Je n’ai pas trouvé cette partie facile à appréhender. Je me suis questionné sur leurs différences et dans quel cas faut-il utiliser l’un plus que l’autre ?

Je mentionnerai également les fichiers au format YAML. Personnellement, je n’ai pas perçu cela comme une difficulté. J’étais déjà habitué à travailler avec ce format. Mais si ce n’est pas votre cas, cela pourra être délicat. Brièvement, l’objectif d’un fichier YAML est de fournir des instructions sur la façon dont vous souhaitez que votre déploiement soit exécuté (dans le cadre d’un déploiement kubernetes).

Ce que j’ai retenu

Kubernetes n’est pas une technologie facile à comprendre et encore moins à implémenter.

Au travers les 6 modules Learn Kubernetes Basics, j’ai pu déployer un cluster Kubernetes local avec Minikube. J’ai appris à utiliser la ligne de commande avec kubectl pour interagir avec le cluster et les applications. Puis comprendre toutes les étapes qui se cachent derrière un déploiement Kubernetes.

Ce tutoriel nous fait pratiquer exclusivement avec kubectl, ce qui m’a permis de voir et de comprendre chaque étape dans le processus de déploiement d’une application.

Je conseille également d'être curieux, de ne pas hésiter à suivre les “See Also” qui mènent vers d’autres tutoriels et explications. Cela m’a permis d'approfondir le sujet et ma compréhension de l’orchestrateur.

Selon moi, il est impératif de comprendre et de connaître le monde des conteneurs. Comment ils sont créés et comment ils sont exécutés. Mon expérience sur Docker m’a beaucoup aidé dans ma découverte et dans ma compréhension de Kubernetes.

Sans aucun doute, il va falloir l’utiliser davantage pour le maîtriser et être à l’aise avec cet orchestrateur.

Kubernetes est le leader du marché de l’orchestration de conteneurs et il vaut la peine de l’apprendre si vous vous intéressez aux problématiques énoncées en amont !

Et après ?

Comme je l’ai évoqué précédemment, il va falloir pratiquer encore et encore pour exploiter pleinement cette technologie. Maintenant que j’ai les bases, que j’ai compris l'intérêt de Kubernetes, je vais aller plus loin dans ma découverte.

Je pense notamment à faire des tests avec des architectures plus complexes. Mais aussi m’informer sur d’autres composants clés comme les ingress, les configmaps, les volumes, les secrets… Bref, il y a encore beaucoup de travail, et une énorme marge de progression !

Si vous souhaitez aller plus loin dans votre compréhension et utilisation de cette technologie, WeScale dispense des formations Kubernetes et peut vous accompagner dans l’aventure ! 😃

Formations

Formez vous à Kubernetes

  • Kubernetes / Conteneurs

    Que vous soyez néophyte ou non sur la technologie Kubernetes, appropriez-vous le socle d'infrastructure Cloud Native par excellence.