2. Histoire de Kubernetes
Lorsque nous examinons l'histoire de Kubernetes , il est facile de comprendre la motivation qui
a poussé les inventeurs de l'outil, à créer ce systèmed'orchestration de conteneurs, atteignant
aujourd'hui un seuil de maturité assez exceptionnel.
3. Pourquoi cet intérêt pour les conteneurs ?
L'histoire de Kubernetes a commencé chez Google, la société avait besoin
d'une infrastructure énorme afin de mettre à la portée de tous, son moteur
de recherche et les publicités associées. La croissance prévue est juste
astronomique, pour lequel diverses idées ont été soulevées.
4. Création de la première solution, le projet Borg
Il avait notammentcommencé par construire un systèmede gestion de cluster appelé Borg. Voici une
explicationsimple du mode de fonctionnementdu systèmeBorg de Google:
Lorsque vous avez une machine standard et que vous souhaitez exécuter plusieurs processus dessus, c'est
le systèmed'exploitation qui gère l'ordonnancement. C'est lui qui détermine quel processus a accès à quel
processeur, quel processus a accès à quelles parties mémoire, quels sont les processus qui doivent être
gelés ou disparaître dans les cas de pénurie de ressources. Véritablement Borg fait la même chose mais à
l'échelle d'un cluster, c'est en quelque sorte, un OS pour cluster. Lorsque vous désirez exécuter un job, vous
le faite depuis Borg, vous dites simplement au planificateur de cluster Borg ce que vous voulez, comme par
exemple "lance-moi 300 répliques de mon application web". Ensuite le planificateur Borg identifie les
machines du cluster qui disposeront de la capacité disponible pour exécuter votre service et envoie une
demande d'exécution du service aux nœuds (machines qui constituent votre Cluster).
5. Google a initialement conçu Borg
pour répondre à ses propres
besoins internes, Borg restait le
principal système de gestion des
conteneurs au sein de Google en
raison de son ampleur et de
l'étendue de ses fonctionnalités.
Par la suite Google développe
Omega, qui est une progéniture
de Borg, afin d'améliorer
l'ingénierie logicielle de
l'écosystème Borg.
6. L'arrivé du projet Kubernetes
Arrive alors en 2014 Kubernetes souvent abrégé k8s, "k + 8 caractères + s",
écrit en Go et né à partir du projet Borg et Omega. Ces deux derniers ont
été développés en tant que systèmes purement internes à Google, à
l'inverse de Kubernetes, qui est quant à lui maintenant devenu une version
opensource de ses prédécesseurs avec des fonctionnalités améliorées
permettant de résoudre les anciens problèmes de gestion des clusters,
ainsi qu'un support accru de la part d'IBM, Cisco et Redhat.
7. Public visé
Ce cours est conçu pour les débutants ayant besoin de comprendre la
technologie Kubernetes à partir de zéro. Ce cours vous donnera une
compréhensionsuffisante de la technologie, qui vous permettra plus tard
d’atteindre des niveaux d’expertise beaucoup plus élevés.
8. Prérequis
Avant de poursuivre ce cours, vous devez au minimum avoir
une compréhensionde base sur les commandes Linux et sur
la technologie Docker, Si vous maîtrisez Docker, plus
précisément Docker Swarm, alors il vous sera très facile de
comprendre les conceptsde Kubernetes et d’avancer
rapidement sur la piste d’apprentissage, mais ce n'est pas
non plus indispensable.
9. Découvrez des astuces et méthodes pour optimiser vos images Docker.
Apprenez à réduire la taille de l'image, à accélérer le temps de
construction et à améliorer les performances de vos images Docker.
10. Lorsque vous commencezà travailler avec Kubernetes(K8), de nombreusesnouvelles
terminologies sont à apprendre, à comprendre et à mémoriser. Ne serait-il pas
formidable qu'au lieu d'avoir à chercher une définition de chaque terminologie, que
vous puissiez accéder à l'ensemble de la terminologie clé de Kubernetes dans une
seule liste ?
Des explications sur tous les objets et composants nécessaires à la compréhension de
Kubernetes avant de s'attaquer plus tard, dans les chapitres postérieurs à la partie
pratique.
11. Les objets Kubernetes
Kubernetes a pour objectif principal de dissimuler la complexité de la
gestion d’un parc de conteneurs, et pour cela, différents objets existent
pour vous faciliter la vie, dont notamment :
13. Les composants des nodes
Kubernetes suit l’architecture maître-esclave, le maître plus
communément appelé master existe principalement pour gérer
votre cluster Kubernetes. . Les esclaves sont quant à eux plus
connus sous le nom de workers (on les appellent aussi minions )
et ne sont là que pour fournir de la capacité et n'ont pas le
pouvoir d'ordonner à une autre node ce qu'il peut ou ne peut pas
faire. Les composants clés du master et worker sont définis dans la
section suivante.
18. Communication avec le cluster
Pour communiquer avec le cluster
Kubernetes, on peut utiliser le binaire
kubectl, ou une interface web de
management nommé Dashboard.
19. kubeclt (ligne de commande)
L'outil en ligne de commande Kubernetes,
kubectl, vous permet d'exécuter des
commandes sur les clusters Kubernetesafin de
créer et gérer des objets k8s et interagir avec
l'API Kubernetes. Vous pouvez utiliser kubectl
pour déployer des applications, inspecter et
gérer les ressourcesdu cluster et afficher les
logs.
20. Dashboard (interface web)
Dashboard est l'interface utilisateur
Web officielle de Kubernetes.Il
fournit une vue d'ensemble des
applications en cours d'exécution sur
votre cluster Kubernetes. Il permet
aux administrateurs de surveiller et
gérer les opérations de leurs clusters
Kubernetes, dépanner les
applications conteneurisées et gérer
les ressourcesdu cluster.
21. Pour les utilisateurs qui souhaitent essayer Kubernetes au quotidien,
il existe une multitude de solutions dont la solution Minikube.
Minikube est un outil facilitantl’exécution locale de Kubernetes. Il
exécute un cluster Kubernetes à nœud unique dans une machine
virtuelle (VM), dès lors votre VM devient à la fois un nœud de type
Master et Worker.
22. Hyperviseur
On va d'abord commencer par vérifier si la virtualisation est
prise en charge sous notre machine Linux :
Vérifiez ensuite que la sortie est non vide. Si c'est bien le cas, alors vouspouvez passer à l'étape suivante.
23. La prochaine étape consiste à installer un hyperviseur,
dans mon cas je vais utiliser VirtualBox. Pour ceux qui
souhaitent utiliser leur machine physique en tant que
nœud, je vous monterai plus tard comment s'y prendre
lorsque nous aborderons la création de notre cluster
Kubernetes.
24. kubectl
Il est recommandé au préalable d'installer kubectl, afin d'interagir avec notre cluster
Kubernetes.
Pour ce faire, premièrement commençonspar installer le binaire kubectl :
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s
https://storage.googleapis.com/kubernetes-
release/release/stable.txt)/bin/linux/amd64/kubectl &&
chmod +x kubectl
25. Après cela, déplaçons le binaire kubectl dans le dossier d'exécution des utilisateurs :
sudo mv ./kubectl /usr/local/bin/kubectl
26. Enfin, testons notre installation en vérifiant la version de kubectl :
kubectl version
28. Une fois les prérequis satisfaits, on peut à ce moment-là, passer à
l'étape d'installation de Minikube. À cet effet, nous allons
commencer par télécharger le binaire Minikube, comme suit :
30. Analysons ensuite le bon déroulement de notre installation en révélant la version de
notre Minikube :
Résultat
31. Création du cluster Kubernetes avec Minikube
À présent, il est temps de démarrer Minikube afin de créernotre premierclusterKubernetes.La
commande que nous allons exécuter va créer et configurer une machine virtuelle qui exécute un
cluster Kubernetes à un seul nœud, elle configureraégalement notre installationde kubectl de
manière à communiquer avec notre cluster.
48. Félicitations ! Si vous êtes arrivé
jusqu'ici, et maintenant, si vous
souhaitez une suite, n'hésitez
pas à me contacter. Vous
trouverez satisfaction avec moi,
que vous soyez seul(e) ou une
équipe souhaitant maîtriser
cette technologie.
Jaouad Assabbour