Apprendre Kubernetes en montant un cluster K3s
Mise à jour :
Kubernetes et K3s sont devenus des termes essentiels dans nos domaines, en particulier dans celui de l’orchestration de conteneurs. Mais qu’est-ce que cela signifie réellement et pourquoi est-ce important pour ceux qui débutent dans l’informatique en nuage ou cherchent à optimiser leurs applications ?
Pour les petites équipes ou les environnements avec des ressources limitées, Kubernetes peut sembler intimidant ou surdimensionné. C’est là que K3s entre en scène. K3s est une distribution légère de Kubernetes. Elle a été spécialement conçue pour être rapide à installer, facile à gérer et moins gourmande en ressources, tout en offrant la plupart des fonctionnalités de Kubernetes. K3s est donc une solution idéale pour les débutants, les petits environnements, ou même pour ceux qui souhaitent expérimenter avec Kubernetes sans s’engager dans une installation plus lourde.
Pré-requis pour Installer K3s
Avant de plonger dans l’installation de K3s, il est important de s’assurer que vous disposez de l’environnement et des connaissances nécessaires. Cette section couvre les aspects essentiels pour préparer votre système et comprendre les bases de Kubernetes, ce qui est important pour une installation réussie et une gestion efficace de votre cluster K3s.
Configuration minimale requise
Pour installer et exécuter K3s de manière optimale, votre système doit répondre à certaines exigences. Voici les spécifications minimales recommandées :
- Système d’exploitation : Une distribution Linux récente. K3s peut être installé sur la plupart des distributions Linux, mais les versions courantes comme Ubuntu, Debian, ou CentOS sont recommandées pour une meilleure compatibilité et facilité d’utilisation.
- Processeur : Un CPU moderne avec au moins 1 GHz de fréquence. Plus le CPU est puissant, meilleure sera la performance de votre cluster.
- Mémoire : Au moins 512 Mo de RAM. Si vous prévoyez de déployer plusieurs applications ou services, une mémoire plus importante sera nécessaire.
- Espace disque : Minimum 1 Go d’espace disque disponible. Cela dépendra de la taille et du nombre d’applications que vous envisagez de déployer.
- Accès réseau : Une connexion Internet pour télécharger K3s et accéder aux images de conteneurs.
Comprendre les bases de Kubernetes
Avant d’installer K3s, il est important de comprendre certains concepts de base de Kubernetes. Même si K3s est simplifié, une compréhension de base des éléments suivants vous aidera à gérer votre cluster plus efficacement :
- Pods : Les plus petites unités déployables dans un cluster Kubernetes. Un pod représente un ou plusieurs conteneurs qui doivent être hébergés ensemble.
- Déploiements : Ils vous permettent de déclarer l’état souhaité pour vos pods. Kubernetes s’assure que l’état réel correspond à l’état souhaité.
- Services : Un moyen d’exposer une application exécutée sur un ensemble de pods en tant que service réseau.
Plus d’infos sur cette documentation.
Installer K3S sur un seul Noeud
Prérequis :
- Un serveur ou une machine virtuelle avec une distribution Linux (Ubuntu, CentOS, etc.).
- Accès root ou privilèges sudo.
Mettez à jour votre système pour vous assurer que toutes les dépendances sont à jour.
Exécutez la commande suivante pour installer K3s. Cette commande télécharge et installe K3s en tant que service sur votre système.
Après l’installation, vérifiez que K3s fonctionne correctement.
Cette commande devrait afficher votre nœud avec un statut Ready
.
Installer K3S sur un cluster de VM Ubuntu
Pour cette démonstration, je vais utiliser une machine hôte Ubuntu sur laquelle
je vais provisionner 3 VM (1 master + 2 workers) avec vagrant
et libvirt
.
En premier lieu, il faut installer vagrant
et ansible
. Je vous renvoie à mes
billets d’introduction sur
vagrant et
ansible pour cela.
Il faut ensuite cloner mon projet :
Il faut aussi créer le certificat racine avec
mkcert. Vous devriez retrouver
dans le répertoire ~/.local/share/mkcert/
les fichiers suivants :
Ensuite provisionnons nos 3 VM (pour le serveur plus sage de mettre 1GB de Ram) :
Installons k3s
sur tous les nodes :
Au bout de quelques minutes, vous devriez avoir accès à votre cluster k3s
.
Un petit contrôle de l’état des nodes du cluster :
Maintenant, vous pouvez utiliser les commandes classiques de kubectl
:
Quelques explications sur le provisioning
Voici le fichier Vagrantfile :
Après l’initialisation des variables et du tableau contenant tous les nodes,
nous entrons dans une boucle each
qui va permettre d’adapter la configuration
des nodes en fonction des paramètres tirés du tableau node. Cela permet de
configurer des nodes master et workers avec des ressources mem et cpu
différentes.
Après cette boucle, nous retrouvons une commande que j’utilise pour la première
fois. La commande push
permet de lancer des scripts depuis le noeud local.
Pourquoi avoir choisi cette option plutôt que de tout intégrer dans le playbook
lancé dans la boucle. Tout simplement que dans la boucle les playbooks ne sont
pas lancés une fois, mais à chaque fois qu’un node devient disponible. Du coup
le playbook des workers nodes se lance avant même que le token du master soit
créé. Cela a comme bénéfice de pouvoir simplifier l’écriture du playbook.
Gestion et surveillance
Une fois votre application “Hello World” déployée sur K3s, il est indispensable de savoir comment gérer et surveiller votre cluster pour assurer son bon fonctionnement et sa sécurité. Ce chapitre vous fournira des conseils pratiques sur la surveillance de l’état de votre cluster et sur les procédures de mise à jour et de maintenance.
Surveillance de l’état du cluster
Surveiller l’état de votre cluster K3s est essentiel pour détecter et résoudre rapidement les problèmes qui pourraient survenir.
- Utilisez
kubectl get nodes
: Cette commande vous permet de voir l’état de tous les nœuds dans votre cluster. Un nœud en bon état sera marqué commeReady
. - Surveillance des pods : La commande
kubectl get pods
vous donne des informations sur l’état de chaque pod dans votre cluster. Vous chercherez des états commeRunning
ouCompleted
et voudrez enquêter sur tout état commeError
ouCrashLoopBackOff
. - Logs : Les logs sont indispensables pour le débogage. Utilisez
kubectl logs [nom-du-pod]
pour obtenir des logs détaillés d’un pod spécifique. - Outils de surveillance externes : Envisagez d’utiliser des outils de surveillance tiers tels que Prometheus et Grafana pour une surveillance plus détaillée et des visualisations.
Mise à jour et maintenance
Garder votre cluster K3s à jour et bien entretenu est essentiel pour la sécurité et la performance.
- Mises à jour régulières : Suivez les annonces de nouvelles versions de K3s et planifiez les mises à jour pour bénéficier des dernières fonctionnalités et correctifs de sécurité.
- Stratégie de sauvegarde : Mettez en place une stratégie de sauvegarde régulière pour vos données de cluster. Cela inclut les configurations des applications et les données de cluster essentielles.
- Testez les mises à jour : Avant d’appliquer des mises à jour sur votre cluster en production, testez-les dans un environnement de staging pour vous assurer qu’elles ne perturbent pas vos applications.
- Documentation : Gardez une documentation à jour de votre architecture de cluster, de vos configurations et de vos procédures de maintenance. Cela est essentiel pour la résolution rapide des problèmes et la gestion des changements.
Déploiement de votre première application sur K3s
Maintenant que K3s est installé et prêt, il est temps de déployer une application. Pour les besoins de ce guide, nous allons déployer une simple application “Hello World”.
Déployer l’application “Hello World” sur K3s
Je vous ai fourni dans le projet un fichier nommé helloworld.yaml
:
Déployons-le, depuis votre fenêtre de Terminal, tapez la commande suivante :
Pour confirmer que les pods de votre application sont en cours d’exécution, tapez la commande suivante :
Vous avez maintenant déployé avec succès une application “Hello World” sur K3s . Cette expérience vous donne une base pour explorer des déploiements plus complexes et gérer votre cluster K3s de manière plus efficace.
Sécurisation de votre cluster K3s
La sécurité est un aspect important dans la gestion d’un cluster Kubernetes, y compris K3s . Cette section aborde les meilleures pratiques de sécurité et comment mettre en œuvre des politiques efficaces pour protéger votre cluster.
Destruction des VM
Il suffit de lancer la commande :
Et voilà.
Conclusion
Nous avons parcouru un chemin significatif dans l’exploration de K3s , depuis l’installation initiale jusqu’au déploiement d’une application. En déployant votre première application “Hello World”, vous avez franchi une étape importante dans le monde de l’orchestration de conteneurs avec Kubernetes.
Plus d’infos
Pour approfondir vos connaissances et compétences sur K3s et Kubernetes, voici quelques ressources utiles :
- La documentation officielle de K3s ↗ pour des informations détaillées et des guides.
N’oubliez pas que la pratique est la clé de la maîtrise de K3s . Expérimentez avec différents scénarios de déploiement, testez différentes configurations et explorez les nombreuses fonctionnalités que K3s a à offrir. Bonne continuation dans votre voyage avec K3s !