Jour 2 : Découvrir Kubernetes et Monter son Premier Cluster pour la Certification CKA
Kubernetes est l’outil le plus utilisé pour orchestrer les conteneurs dans les environnements Cloud Native et DevOps. Il permet de gérer le déploiement des applications tout en assurant leur scalabitié, leur résilience et une gestion optimisée. Pour préparer le CKA sur de bonnes bases, il est donc important de comprendre l’architecture de Kubernetes et de savoir configurer son propre cluster afin de maîtriser ses composants, pratiquer et expérimenter, et répondre aux exigences de l’examen.
Dans cet article, nous couvrirons les bases de Kubernetes et son utilisation. Vous apprendrez à configurer un cluster Multi-node avec Kind, à installer et utiliser le client Kubernetes, kubectl, et à exécuter vos premières commandes pour interagir avec un cluster. Ces compétences constituent une première étape importante dans votre préparation à la certification.
Jour 2
Bienvenue dans la deuxième étape de votre parcours vers la certification Certified Kubernetes Administrator (CKA). Dans cet article, nous explorerons :
- L’architecture de Kubernetes et le rôle de ses composants principaux.
- Les spécificités de l’examen CKA, incluant les ressources disponibles et la version de Kubernetes utilisée.
- La configuration d’un cluster Multi-node avec Kind et l’utilisation de l’outil kubectl.
- Les premières commandes pratiques pour interagir avec votre cluster Kubernetes.
Comme pour le premier jour, ce tutoriel est conçu pour combiner théorie et pratique afin de renforcer vos compétences techniques et votre confiance avant l’examen.
- 1. Introduction à l’Architecture Kubernetes
- 2. Aperçu de l’examen Certified Kubernetes Administrator (CKA)
- 3. Configuration d’un cluster Kubernetes Multi-node avec Kind
- 4. Premiers Pas avec kubectl
- 5. Conclusion
1. Introduction à l’Architecture Kubernetes
L’architecture de Kubernetes est structurée pour orchestrer des conteneurs en répartissant les responsabilités entre deux types de nœuds principaux : les nœuds maîtres (Master Nodes) et les nœuds de travail (Worker Nodes). Les Master Nodes sont responsables de la gestion et du contrôle de l’ensemble du cluster, tandis que les Worker Nodes exécutent les charges de travail conteneurisées. Cette séparation des rôles garantit la disponibilité, la résilience et l’évolutivité du système dans son ensemble.
1.1. Les Composants Principaux du Master Node
Le Master Node (aussi appelé Control Plane) est le cerveau du cluster Kubernetes. Il contrôle l’ensemble des opérations du cluster et gère les états désirés des applications déployées. Voici ses composants principaux :
- API Server :
- Point d’entrée pour toutes les interactions avec le cluster.
- Reçoit les requêtes via l’interface REST et les transmet aux autres composants pour traitement.
- Également utilisé par le client
kubectl
pour interagir avec Kubernetes.
- etcd :
- Base de données clé-valeur distribuée qui stocke l’état du cluster, y compris les configurations, les métadonnées et les informations sur les objets Kubernetes.
- Essentiel pour garantir la cohérence et la récupération de l’état en cas de panne.
- Controller Manager :
- Regroupe plusieurs contrôleurs responsables de la gestion automatique des objets Kubernetes (par exemple, assurer qu’un nombre minimal de replicas d’un pod est en cours d’exécution).
- Surveille l’état actuel du cluster et agit pour maintenir l’état désiré.
- Scheduler :
- Assigne les pods nouvellement créés aux nœuds disponibles en fonction des ressources et des contraintes définies (par exemple, la CPU, la RAM ou les labels des nœuds).
- Optimise l’utilisation des ressources du cluster.
1.2. Les Composants des Worker Nodes
Les Worker Nodes sont les machines où les conteneurs sont exécutés. Chaque nœud de travail contient plusieurs composants qui assurent la gestion des ressources locales et l’exécution des charges de travail :
- Kubelet :
- Agent qui exécute et surveille les pods de son nœud.
- Communique avec l’API Server pour recevoir des instructions et rapporter l’état des pods.
- Kube Proxy :
- Composant réseau qui assure la communication entre les services et les pods.
- Gère les règles de routage et d’équilibrage de charge pour les services exposés.
- Container Runtime :
- Logiciel responsable de l’exécution des conteneurs sur le nœud. Kubernetes supporte plusieurs runtimes, notamment Docker, containerd, et CRI-O (tout moteur compatible avec la Container Runtime Interface ou CRI).
- Garantit l’isolation et l’exécution des conteneurs de manière efficace.
- Pods :
- Les pods sont les unités de base de déploiement dans Kubernetes et regroupent un ou plusieurs conteneurs qui partagent le même réseau et les mêmes volumes.
- Rôle du Kubelet : Kubelet s’assure que les pods planifiés sur le nœud fonctionnent correctement, interagit avec le runtime pour démarrer/arrêter les conteneurs et remonte l’état des pods à l’API Server.
- Rôle de Kube-Proxy : Kube-Proxy gère la connectivité réseau entre les pods et assure le routage des requêtes vers les bons pods, en équilibrant la charge si nécessaire.
Sur quoi s'exécute un Node ?
Les nœuds Kubernetes peuvent être déployés sur une variété de plateformes, notamment des machines physiques, des machines virtuelles ou des environnements conteneurisés. Kubernetes est conçu pour être agnostique vis-à-vis de l’infrastructure, permettant aux utilisateurs de déployer leur cluster sur un environnement hétérogène.
Comment est assurée la haute disponibilité d’un cluster Kubernetes ?
La haute disponibilité (HA) dans Kubernetes repose sur plusieurs stratégies :
- Réplication des Master Nodes : En configurant plusieurs Master Nodes (au minimum 3), on réduit le risque de point unique de défaillance. Ces Master Nodes partagent les responsabilités en utilisant etcd comme base de données distribuée.
- Gestion des Worker Nodes : Kubernetes détecte automatiquement les pannes des Worker Nodes et rééquilibre les pods affectés sur d’autres nœuds fonctionnels.
- Load Balancing et Heartbeats : Des mécanismes tels que les équilibrages de charge (load balancers) et les sondes de “vitalité” (liveness probes) garantissent que le trafic est dirigé vers des composants opérationnels.
2. Aperçu de l’examen Certified Kubernetes Administrator (CKA)
L’examen Certified Kubernetes Administrator (CKA) évalue les compétences pratiques des candidats pour administrer et gérer des clusters Kubernetes. Il est conçu pour valider une expertise opérationnelle dans un environnement réel.
2.1. Structure et objectifs de l’examen
L’examen est d’une durée de 2 heures et se concentre sur des scénarios pratiques. Les candidats doivent résoudre des problèmes concrets et effectuer des tâches liées à la gestion des clusters Kubernetes. Les principaux objectifs couverts incluent :
- La gestion et la configuration des clusters.
- Le réseau et la connectivité.
- La sécurité, incluant les contrôles RBAC (Role-Based Access Control).
- La gestion des ressources et la maintenance des applications.
Une préparation adéquate et une pratique régulière des commandes sont donc importantes pour réussir dans ce format axé sur la pratique.
Informations Complètes
Vous trouverez toutes les informations sur la page dédiée de la Linux Foundation : https://training.linuxfoundation.org/certification/certified-kubernetes-administrator-cka-2/.
2.2. Version de Kubernetes utilisée
L’examen Certified Kubernetes Administrator (CKA) repose sur une version spécifique de Kubernetes. Il est fortement conseillé de vérifier cette version sur le site officiel avant de débuter votre préparation. Cela garantit que vos connaissances et vos exercices pratiques sont alignés avec les fonctionnalités et comportements propres à la version utilisée lors de l’examen. Kubernetes évoluant rapidement, certaines commandes ou fonctionnalités peuvent varier d’une version à l’autre, rendant cette vérification nécessaire.
Version de Kubernetes pour la CKA 2025
En ce début d’année 2025, et au moins jusqu’au 10 février, la version utilisée pour l’examen CKA est la v1.31. Pour découvrir les modifications spécifiques à l’examen CKA 2025, consultez la page dédiée : Program Changes - CKA 2025.
2.3. Documentation accessible pendant l’examen
Pendant l’examen, vous avez accès à certaines ressources en ligne pour vous aider :
- Kubernetes Documentation : La documentation officielle, essentielle pour rechercher des informations sur les concepts, commandes, et objets Kubernetes.
- Kubernetes Blog : Utile pour les actualités ou les articles pertinents sur Kubernetes, bien que rarement nécessaire pendant l’examen.
- Kubectl Reference : Une ressource indispensable pour retrouver rapidement les options et syntaxes des commandes
kubectl
.
Ces ressources vous permettront de confirmer ou de compléter vos connaissances pendant l’examen, mais elles doivent être utilisées efficacement, car le temps est limité. Il faut aussi noter que vous accèderez à cette documentation, comme au contenu de l’examen, au travers d’un espace virtualisé. Il faut donc bien vous y préparer.
3. Configuration d’un cluster Kubernetes Multi-node avec Kind
Kind (Kubernetes IN Docker) est un outil léger permettant de déployer des clusters Kubernetes pour le développement et les tests en local. Comme son nom l’indique, Kind fonctionne en exécutant les nœuds Kubernetes (Master Nodes et Worker Nodes) en tant que conteneurs Docker sur votre machine. Cela élimine la nécessité de machines physiques ou virtuelles séparées, rendant la configuration rapide, portable et idéale pour les environnements de test. Cette section vous guide étape par étape pour créer un cluster Multi-node à l’aide de Kind.
3.1. Pré-requis
Avant de commencer, assurez-vous que Docker est installé et et que le daemon Docker est bien démarré sur votre machine.
3.2. Installation de Kind
Il existe de nombreuses façons d’installer Kind sur une machine mais toutes sont très simples :
- A partir de binaires : https://kind.sigs.k8s.io/docs/user/quick-start/#installing-from-release-binaries.
- A partir d’un gestionnaire de paquet : https://kind.sigs.k8s.io/docs/user/quick-start/#installing-with-a-package-manager.
Voici des exemples d’installation selon votre système d’exploitation :
3.2.1. Sous Linux
3.2.2. Sous macOS
3.2.3. Sous Windows
3.2.4. Test de l’installation
Vous devriez voir la version qui s’affiche :
3.3. Création du Cluster Multi-Node
Une fois Kind installé, suivez ces étapes pour configurer un cluster Kubernetes avec plusieurs nœuds.
Étape 1 : Créer un fichier de configuration pour le cluster
Un fichier de configuration au format YAML est nécessaire pour définir la topologie de votre cluster. Voici un exemple de configuration pour un cluster comportant 1 Master Node et 2 Worker Nodes :
- Créez un fichier nommé
kind-cluster-config.yaml
:
Étape 2 : Déterminer l’image Kubernetes à utiliser
Par défaut, Kind utilise la dernière version de Kubernetes packagée pour cet outil. Cependant, dans le cadre de notre préparation à l’examen CKA, il est essentiel d’utiliser la même version que celle prévue pour l’examen.
Consultez la page des versions packagées de Kind pour identifier la version à utiliser. Recherchez la section listant les images disponibles pour la version actuelle.
Exemple :
- Pour cet article, la version utilisée lors de l’examen CKA début 2025 est v1.31. Nous retiendrons l’image suivante :
Étape 3 : Créer le cluster à partir du fichier de configuration
Utilisez la commande suivante pour créer le cluster en spécifiant le fichier de configuration et l’image correspondant à la version choisie :
- Explications des options :
--config kind-cluster-config.yaml
: Définit la topologie du cluster en se basant sur le fichier de configuration.--image
: Spécifie l’image Docker contenant la version exacte de Kubernetes à utiliser.--name multi-node-cluster
: Attribue un nom au cluster pour en simplifier la gestion.
Vous devriez voir les logs ci-dessous s’afficher :
Votre cluster Kubernetes Multi-node est maintenant configuré avec la version exacte utilisée dans l’examen CKA, pour ma part la v1.31.4
.
Voyons, à présent, comment interagir avec le cluster pour valider son fonctionnement.
Étape 4 : Vérifier la création du cluster
A l’heure actuelle, nous n’avons que deux commandes à notre dispositio pour effectuer des vérifications : kind
ainsi que le client docker
, car Kind repose sur des conteneurs Docker pour exécuter les nœuds Kubernetes. Voyons comment valider rapidement que le cluster est opérationnel.
1. Lister les clusters Kind actifs
Utilisez la commande suivante pour afficher les clusters créés avec Kind :
Vous devriez voir une sortie comme :
Cela confirme que votre cluster “multi-node-cluster” est actif.
2. Afficher les détails des nœuds
Pour vérifier les nœuds créés et leurs rôles, exécutez :
Cette commande affiche tous les conteneurs Docker correspondant aux nœuds du cluster, avec leurs rôles (control-plane ou worker) et leurs statuts.
Exemple de sortie :
Chaque conteneur représente un nœud de votre cluster Kubernetes. Dans cet exemple, un nœud de contrôle (control-plane
) et deux nœuds de travail (worker
, worker2
) ont été créés.
3. Vérifier les logs du cluster
Vous pouvez également consulter les journaux de Kind pour diagnostiquer d’éventuels problèmes au démarrage du cluster :
Exemple de sortie :
Cette commande exporte les journaux du cluster dans un répertoire local pour une analyse approfondie :
Avec ces vérifications, vous êtes assuré que votre cluster a été correctement configuré. Pour obtenir des informations plus détaillées et interagir pleinement avec le cluster, il est, à présent, nécessaire d’installer et de configurer le client kubectl
.
4. Premiers Pas avec kubectl
kubectl
est le client en ligne de commande officiel de Kubernetes. Il permet d’interagir avec le cluster, de gérer ses ressources, et d’obtenir des informations détaillées sur son état. Cette section vous guide dans l’installation de kubectl
et vous présente les commandes de base pour explorer et gérer votre cluster.
4.1. Téléchargement et installation
Les étapes ci-dessous illustrent des exemples valides pour installer kubectl
sur différents systèmes d’exploitation et le configurer afin d’interagir avec un cluster Kind.
Plusieurs méthodes sont disponibles pour installer kubectl
, en fonction de votre système d’exploitation et des gestionnaires de packages disponibles.
Ces exemples reflètent des pratiques actuelles et peuvent évoluer avec le temps. Pour obtenir des informations toujours à jour, référez-vous à la documentation officielle : https://kubernetes.io/docs/tasks/tools/install-kubectl/.
Voici quelques exemples adaptés aux principaux systèmes d’exploitation :
4.1.1. Installation sur Linux
- Téléchargez le binaire de
kubectl
:
- Rendez-le exécutable :
- Déplacez-le dans un répertoire inclus dans votre PATH :
4.1.2. Installation sur macOS
- Exécutez la commande d’installation :
4.1.3. Installation sur Windows
Vérifiez la dernière version stable du binaire
kubectl
depuis https://dl.k8s.io/release/stable.txt.Téléchargez-le, par exemple :
- Ajoutez le binaire dans votre PATH.
4.1.4. Vérifier et Configurer kubectl pour le cluster Kind
- Vérifiez l’installation dans votre shell:
- Vous devriez voir (aux versions près) :
- Kind configure automatiquement le fichier kubeconfig pour permettre à
kubectl
d’interagir avec le cluster. Pour vérifier que kubectl est bien configuré :
- Si la configuration est correcte, vous verrez les informations sur l’API Server et le Control Plane du cluster :
4.2. Commandes de base
Une fois kubectl
installé et configuré, vous pouvez utiliser les commandes suivantes pour explorer et interagir avec votre cluster.
4.2.1. Travailler avec les contextes
Pour le CKA
Dans Kubernetes, un contexte correspond à une combinaison de cluster, d’utilisateur et de namespace. Il est donc très important de travailler avec le bon contexte, surtout lors de l’examen CKA, où des erreurs de contexte peuvent entraîner une perte de temps ou des erreurs de configuration.
Familiarisez-vous dès maintenant avec la gestion des contextes pour éviter ces problèmes. Voici quelques commandes utiles pour travailler avec les contextes.
4.2.1.1. Afficher la configuration actuelle
Cette commande affiche la configuration complète actuelle, y compris les clusters, les utilisateurs, et les contextes définis dans le fichier kubeconfig.
- Exemple de sortie :
4.2.1.2. Ajouter un nouveau contexte
Pour ajouter un nouveau contexte, utilisez la commande suivante :
Par exemple :
4.2.1.3. Supprimer un contexte existant
Supprimez un contexte spécifique avec la commande suivante :
Par exemple :
4.2.1.4. Liste des contextes disponibles
- Exemple de sortie :
4.2.1.5. Afficher le contexte actif
- Exemple de sortie :
4.2.1.6. Définir un contexte par défaut
- Exemple de sortie :
En configurant correctement le contexte, vous vous assurez que toutes les commandes kubectl
exécutées pointent bien vers le bon cluster.
4.2.2. Vérification de l’état d’un cluster
- Affichez les informations générales sur un cluster donné :
- Exemple de sortie :
4.2.3. Liste des nœuds
- Affichez les nœuds du cluster et leurs statuts :
- Exemple de sortie :
4.2.4. Affichage des namespaces disponibles
- Listez tous les namespaces du cluster :
- Exemple de sortie :
4.2.5. Liste des pods dans un namespace
- Vérifiez s’il existe des pods déployés dans le namespace par défaut :
- Exemple de sortie :
- Vérifiez s’il existe des pods déployés dans le namespace
kube-system
:
- Exemple de sortie :
4.2.6. Obtenir des détails sur une ressource spécifique
- Obtenez des informations détaillées sur un nœud :
- Exemple de sortie :
- Obtenez des détails sur un pod :
- Exemple de sortie :
Ces commandes constituent une première base pour explorer et gérer votre cluster Kubernetes. Une maîtrise approfondie de ces outils vous aidera à progresser rapidement dans votre apprentissage et à éviter des erreurs majeures lors de l’examen.
5. Conclusion
Dans cet article, nous avons exploré des notions de base pour configurer et interagir avec un cluster Kubernetes. Nous avons couvert des concepts clés tels que l’architecture de Kubernetes, l’installation d’un cluster et du client kubectl
, et son utilisation via des commandes de base. Ces compétences constituent une base pour approfondir votre compréhension de Kubernetes et réussir l’examen CKA.
Prochaine Étape
Le prochain article de cette série se concentrera sur les pods dans Kubernetes, la plus petite unité déployable du système. Vous apprendrez ce qu’est un Pod, comment le créer, le gérer et interagir avec lui, tout en découvrant ses relations avec d’autres ressources du cluster.
Pour progresser dans votre apprentissage, il est essentiel de mettre en pratique régulièrement. N’hésitez pas à reproduire les commandes et configurations vues dans cet article sur un environnement de test. Une pratique continue renforcera votre maîtrise des concepts et développera votre confiance pour l’examen.
Bonne préparation et à bientôt pour le prochain chapitre de cette série !