Guide d’Administration Kubernetes

L'Équipe Alphorm
L'Équipe Alphorm 7e lecture en min

Après avoir exploré les bases dans notre article précédent « Kubernetes : Guide Complet pour DevOps », nous allons maintenant nous concentrer sur l’administration Kubernetes, une étape cruciale dans votre parcours vers la maîtrise complète de cette technologie révolutionnaire. Nous explorerons deux aspects essentiels : l’utilisation de kubectl en tant qu’interface de ligne de commande principale pour interagir avec les clusters Kubernetes et le déploiement efficace d’applications. Nous mettrons l’accent sur les meilleures pratiques pour garantir la scalabilité, la fiabilité et la facilité de maintenance de vos applications dans le cadre de l’administration Kubernetes.

Découverte Approfondie de kubectl : Commandes Essentielles pour l'Administration Kubernetes

kubectl offre un contrôle sans précédent sur votre infrastructure dans le cadre de l’administration Kubernetes. Que ce soit pour gérer des pods, des déploiements, des services ou des ressources personnalisées, kubectl est votre allié incontournable. Chaque commande kubectl offre un contrôle précis sur votre environnement, en allant de la récupération d’informations élémentaires sur les pods et services à la gestion avancée des déploiements et configurations dans l’administration Kubernetes.

Interface kubectl pour administrer Kubernetes

Affichage des Ressources Kubernetes

Pour afficher les ressources, on suit cette forme de commande : kubectl get <type de la ressource> ou le nom peut être nodes, pods, services, replicaset, deployment, etc.

Commande kubectl pour afficher les ressources Kubernetes

Pour obtenir plus d’informations sur les ressources listées, ajoutez le flag -o wide à la commande précédente.

Commande kubectl pour afficher les ressources avec plus de détails

Affichage de l'État des Ressources Kubernetes

Pour obtenir des détails spécifiques sur la ressource dans votre cluster Kubernetes, utilisez la commande suivante

				
					  kubectl describe <type de la ressource>.
				
			
Commande kubectl describe pour afficher l'état des ressources Kubernetes

Création de Ressources Kubernetes

La commande kubectl create est utilisée pour créer une ressource à partir de zéro

				
					kubectl create <nom_ressource>
				
			

Par exemple, imaginons que nous devons créer un service nommé « alphorm-service » pour exposer notre application. Vous pouvez exécuter la commande suivante

				
					  kubectl create service clusterip alphorm-service --tcp=80:80 :
				
			
Commande kubectl create pour créer des ressources Kubernetes

Cette commande crée un nouveau service de type ClusterIP nommé « alphorm-service », qui expose le port 80 de notre application.

Gestion des Contextes kubeconfig dans Kubernetes

Pour afficher le contexte actuellement utilisé dans votre configuration kubeconfig dans le cadre de l’administration Kubernetes, vous pouvez utiliser la commande :

				
					kubectl config current-context.
				
			

Cette commande est utile pour savoir dans quel contexte vous travaillez actuellement.

Commande kubectl config current-context pour afficher le contexte actuel de la configuration

De plus, vous pouvez gérer les contextes kubeconfig en utilisant d’autres sous-commandes telles que get, use, delete . Par exemple :

  • Pour afficher tous les contextes disponibles : kubectl config get-contexts
  • Pour changer de contexte : kubectl config use-context [nom-du-contexte]
  • Pour supprimer un contexte : kubectl config delete-context [nom-du-contexte]

Affichage des Journaux Kubernetes

Pour afficher les journaux (logs) d’un conteneur en cours d’exécution à l’intérieur d’un pod Kubernetes dans le cadre de l’administration Kubernetes, nous utilisons la commande suivante :

				
					kubectl logs <nom-du-pod> [options]
				
			

[Options ] : Permet de spécifier des options supplémentaires, telles que -f pour suivre les logs en temps réel ou –tail pour afficher les dernières lignes de logs.

Commande kubectl logs pour afficher les journaux des pods Kubernetes

Cette commande est particulièrement utile pour le débogage et la surveillance des applications déployées dans un cluster Kubernetes.

Suppression de Ressources Kubernetes

La gestion des ressources est également essentielle dans l’administration Kubernetes. Vous pouvez supprimer des ressources à l’aide de la commande :

				
					kubectl delete <ressource> <nom> .
				
			

Par exemple, pour supprimer un déploiement nommé « alphorm-deployment« , vous pouvez utiliser la commande suivante :

				
					 kubectl delete deployment alphorm-deployment
				
			
Commande kubectl delete pour supprimer un déploiement Kubernetes

Cela supprimera complètement le déploiement et tous les pods associés.

Il existe de nombreuses autres commandes utiles dans kubectl pour gérer efficacement votre cluster dans le cadre de l’administration Kubernetes. Voici un tableau complémentaire de certaines de ces commandes :

Commande
Description
kubectl edit [resource]
Modifier une ressource Kubernetes en éditant directement sa définition YAML dans un éditeur de texte.
kubectl rollout
Gérer le déploiement d’une nouvelle version d’une application en effectuant un déploiement progressif (rolling update) ou en revenant à une version précédente.
kubectl scale
Mettre à l’échelle le nombre de répliques d’un déploiement, d’un réplica set ou d’un stateful set.
kubectl port-forward
Rediriger les ports d’un pod Kubernetes localement sur votre machine.
kubectl rollout history
Afficher l’historique des déploiements pour une ressource donnée.
kubectl get events
Afficher les événements relatifs aux ressources de votre cluster Kubernetes.
kubectl top node
Afficher les informations de consommation des ressources CPU et mémoire des nœuds de votre cluster Kubernetes.
kubectl version
Afficher la version de kubectl et du serveur Kubernetes.
kubectl api-resources
Afficher les ressources disponibles dans l’API Kubernetes, avec leurs noms abrégés, leurs noms complets et leurs groupes.
kubectl set image
Mettre à jour l’image d’un conteneur .
kubectl label
Ajouter ou modifier des libellés sur des ressources Kubernetes.

Ces commandes vous aideront à explorer et à gérer efficacement votre cluster Kubernetes.

Pour découvrir l’intégralité de notre formation complète sur Kubernetes, veuillez suivre ce lien : Formation Kubernetes 2023. Rejoignez-nous et laissez-nous vous accompagner dans l’essor de vos compétences et de votre carrière.

Astuce Pratique : L'auto-complétion

Lorsque vous utiliserez le terminal , vous pourrez bénéficier de l’auto-complétion des commandes kubectl. Par exemple, si vous tapez kubectl g[tab] [tab] po[tab] [tab] --all[tab][tab], le terminal complétera automatiquement les commandes et les options disponibles, vous permettant ainsi d’économiser du temps et de réduire les erreurs de saisie. Pour cela vous lancez les commandes suivantes:

  • Installez le package bash-completion en exécutant la commande suivante dans votre terminal :
				
					sudo apt-get install -y bash-completion
				
			

Ajoutez la configuration de l’auto-complétion kubectl à votre fichier ~/.bashrc en exécutant la commande suivante :

				
					echo "source <(kubectl completion bash)" >> ~/.bashrc
				
			

Appliquez les modifications à votre session Bash actuelle en exécutant la commande :

				
					 source/.bashrc
				
			

Déploiement d'une Application Kubernetes pour une Administration Optimale

Le déploiement d’applications dans un cluster Kubernetes peut être abordé de différentes manières, mais deux approches principales prédominent : l’approche impérative et l’approche déclarative. Ces deux méthodes offrent des avantages distincts et sont utilisées en fonction des besoins spécifiques du projet et des préférences de l’équipe de développement.

Approche Impérative en Administration Kubernetes

L’approche impérative consiste à spécifier explicitement les actions à effectuer pour créer ou déployer une application. Ainsi, pour créer un déploiement, nous devons exécuter la commande suivante :

				
					kubectl create deployment <nom-deploiement> --image=<nom-image>
				
			
Commande kubectl create deployment pour créer un déploiement Kubernetes

Et voila notre déploiement est bien créé:

Commande kubectl get deployments pour lister les déploiements Kubernetes

Nous pouvons ajouter différentes options supplémentaires pour répondre aux besoins spécifiques du déploiement. Par exemple, vous pouvez spécifier des options telles que –replicas pour définir le nombre de répliques du déploiement ou –port pour spécifier le port du conteneur et donc la commande est la suivante .

				
					kubectl create deployment <nom-deploiement> --image=<nom-image> --replicas=<nombre_replicas>

				
			
Commande kubectl avec options supplémentaires pour déploiement Kubernetes

Et pour voir les pods de ce déploiement, nous tapons la commande suivante :

				
					kubectl get pods
				
			
Commande kubectl get pods pour lister les pods dans Kubernetes

Et pour créer vos propres pods, vous pouvez utiliser cette commande :

				
					kubectl run <nom-pod> --image=<nom-image>
				
			

Et pour exécuter des commandes à l’intérieur des conteneurs d’un pod spécifique, ce qui est extrêmement utile pour le débogage et la maintenance des applications déployées nous utilisons la commande suivante

				
					kubectl exec -it <nom-du-pod> -- /bin/sh
				
			
Commande kubectl exec pour exécuter des commandes à l'intérieur des conteneurs Kubernetes

Utilisation des Fichiers YAML pour Kubernetes

Dans cette section, nous introduirons le fichier de configuration YAML dans Kubernetes, expliquant leur rôle et leur utilisation dans la définition des ressources et des configurations dans un cluster Kubernetes.

Les fichiers de configuration YAML dans Kubernetes sont structurés en des parties principales, chacune jouant un rôle essentiel dans la définition et la gestion des ressources du cluster. Comprendre ces parties est crucial pour une utilisation efficace de Kubernetes :

  • Déclarations initiales: comprennent des informations de base sur le type de ressource, telles que son API version et son kind. L’API version spécifie la version de l’API Kubernetes utilisée par la ressource, tandis que le kind indique le type de ressource elle-même, comme Deployment, Service, Pod, etc.
Structure de la déclaration initiale dans un fichier YAML pour Kubernetes
  • Metadata : contient des métadonnées descriptives sur la ressource, telles que son nom, son namespace, ses labels et ses annotations. Ces métadonnées sont utilisées par Kubernetes pour identifier et organiser les ressources dans le cluster.
Structure des métadonnées dans un fichier YAML
  • Specification: définit les caractéristiques et le comportement attendu de la ressource. Cela inclut des éléments tels que le type de la ressource, les paramètres de configuration spécifiques à la ressource, ainsi que d’autres options de configuration propres à chaque type de ressource.
Structure du spec dans un fichier YAML
  • Status: est automatiquement générée et mise à jour par Kubernetes pour refléter l’état actuel de la ressource dans le cluster. Cette section est principalement utilisée pour la surveillance et le diagnostic des ressources dans le cluster.
Structure du status dans un fichier YAML pour Kubernetes

Approche Déclarative en Administration Kubernetes

L’approche déclarative, en revanche, consiste à décrire l’état désiré du système sans préciser explicitement les étapes à suivre pour y parvenir. Au lieu de cela, les utilisateurs définissent les ressources Kubernetes à l’aide de fichiers de configuration YAML ou JSON , décrivant les caractéristiques et les spécifications souhaitées pour les pods, les services, les déploiements, etc puis Kubernetes prend ensuite en charge la gestion et la configuration des ressources pour atteindre cet état déclaré.

Pour illustrer cette approche, considérons un fichier YAML nommé « mon-deploiement.yaml » qui décrit un déploiement Kubernetes. Voici à quoi pourrait ressembler ce fichier :

Exemple de fichier YAML pour déployer une application dans Kubernetes

Pour appliquer ces spécifications et créer ou mettre à jour le déploiement dans le cluster Kubernetes, nous utilisons la commande avec le fichier YAML :

				
					 kubectl apply -f nom_fichier
				
			
Commande kubectl apply pour déployer une application avec un fichier YAML

Et pour supprimer le déployment créé vous tapez la commande suivante:

				
					kubectl delete -f nom_fichier
				
			
Commande kubectl delete -f pour supprimer un déploiement défini par un fichier YAML

Avantages et Utilisation en Administration Kubernetes

  • L’approche impérative est souvent privilégiée pour les tâches ponctuelles ou pour des opérations rapides et spécifiques, offrant une flexibilité immédiate et une approche intuitive pour les utilisateurs.
  • L’approche déclarative: favorise la reproductibilité, la cohérence et la gestion à long terme des applications et des infrastructures. Elle est couramment utilisée dans les environnements de production et pour la gestion de configurations complexes.

En maîtrisant ces concepts, vous avez franchi une étape importante dans votre voyage avec Kubernetes. L’administration d’un cluster et le déploiement d’applications peuvent sembler complexes, mais avec la pratique et la compréhension des outils tels que kubectl, vous pouvez devenir un expert en Kubernetes. Continuez à explorer et à expérimenter avec Kubernetes . Bonne chance dans vos aventures Kubernetes !

Conclusion

Maîtriser l’administration Kubernetes vous permet d’optimiser la gestion de vos clusters et de garantir la performance et la fiabilité de vos applications. En utilisant efficacement les commandes kubectl et en adoptant les meilleures pratiques de déploiement, vous pouvez améliorer la scalabilité et la maintenance de vos systèmes. Continuez à explorer et à expérimenter avec Kubernetes pour devenir un expert en administration Kubernetes, prêt à relever tous les défis de l’orchestration des conteneurs. Et par la suite nous allons traiter le volet de la gestion des clusters Kubernetes.

 
 
Partager cet article
Par L'Équipe Alphorm Démocratiser la Connaissance Informatique pour Tous !
Suivre :
L'Équipe Alphorm, c'est la démocratisation de la connaissance informatique. Passionnés et dévoués, nous sommes là pour vous guider vers le succès en rendant la technologie accessible à tous. Rejoignez notre aventure d'apprentissage et de partage. Avec nous, le savoir IT devient une ressource inspirante et ouverte à tous dans un monde numérique en constante évolution.