Aller au contenu principal
Sommaire de la formation

Objets Kubernetes et les controllers

coolibra373 vues

Objets Kubernetes : Concepts et Objets Clés

Les objets Kubernetes sont les ressources de base permettant de gérer et d'organiser les applications dans un cluster. Nous couvrirons les concepts clés des principaux objets Kubernetes :

  • Objects & Concepts clés
  • Contrôleurs associés

  • Objects & Concepts clés

Les objets Kubernetes constituent les ressources fondamentales pour gérer et organiser des applications conteneurisées au sein du cluster. Chacun de ces objets a une fonction spécifique qui contribue à la résilience, la scalabilité, et la sécurité des applications.

  1. Pods : Un pod est l'unité de base de déploiement dans Kubernetes. Il représente un ou plusieurs conteneurs partageant le même espace de réseau et de stockage. Les pods sont généralement créés, supprimés et gérés par des contrôleurs plus avancés pour assurer la disponibilité et la stabilité des applications.

  2. Services : Les services permettent d’exposer les pods pour que les applications puissent communiquer entre elles ou être accessibles depuis l’extérieur du cluster. Ils offrent une couche d’abstraction pour rendre les applications disponibles, indépendamment des pods éphémères et leurs adresses IP changeantes.

  3. Replication Controllers : Ce contrôleur assure le maintien d’un nombre spécifié de répliques de pods pour garantir la haute disponibilité des applications. Si un pod échoue ou est supprimé, le Replication Controller crée de nouveaux pods pour compenser. Ce controller n'est plus recommandé. il faut utiliser les Deployments

  4. ReplicaSets : Évolution du Replication Controller, ReplicaSets introduit une sélection plus avancée des pods à gérer. Les ReplicaSets sont principalement utilisés avec les déploiements (Deployments) pour la gestion des répliques et des mises à jour.

  5. Deployments : Le déploiement (Deployment) est l’objet le plus couramment utilisé pour gérer l’état souhaité d’une application. Il permet de déployer, mettre à jour, et faire évoluer des applications de manière contrôlée, en garantissant la continuité de service.

  6. DaemonSets : Les DaemonSets assurent que chaque nœud du cluster exécute une instance spécifique de pod. Ils sont particulièrement utilisés pour déployer des applications de monitoring ou de log, qui nécessitent une présence sur chaque nœud.

  7. Jobs : Les jobs permettent d’exécuter des tâches de courte durée ou ponctuelles dans le cluster, en garantissant qu’elles s’exécutent jusqu’à leur achèvement. Ils sont souvent utilisés pour des tâches de calcul, des scripts de migration ou de nettoyage.

  8. CronJobs : Inspirés des tâches cron classiques, les CronJobs permettent de planifier des jobs à des moments spécifiques. Ils sont utiles pour les tâches récurrentes, comme les sauvegardes de données ou la génération de rapports périodiques.

  9. StatefulSets : Cet objet est conçu pour les applications nécessitant un état stable, comme les bases de données ou les applications d’état. Les StatefulSets garantissent un ordre d'exécution et des identifiants persistants pour chaque pod, permettant ainsi la gestion des identités des instances.

  10. ConfigMaps : ConfigMaps stocke les données de configuration sous forme de paires clé-valeur, séparant ainsi la configuration du code de l’application. Cela permet aux applications de récupérer facilement leurs configurations sans être modifiées ou redéployées.

  11. Secrets : Les Secrets stockent des informations sensibles, comme les mots de passe, tokens ou clés API, de manière sécurisée. Les secrets permettent de protéger les données sensibles, qui peuvent être injectées dans les pods via des variables d’environnement ou des volumes.

  12. Volumes : Kubernetes offre divers types de volumes pour fournir un espace de stockage temporaire aux pods, qui persiste uniquement pendant la durée de vie du pod.

  13. Persistent Volumes (PV) : Les PV fournissent un stockage persistant pour les données des pods. Ils permettent aux applications de conserver leurs données même si les pods sont recréés ou redémarrés.

  14. Persistent Volume Claims (PVC) : Les PVC revendiquent des ressources de stockage persistantes en fonction des besoins des applications. Elles permettent aux applications de demander une capacité de stockage spécifique sans connaître les détails du stockage sous-jacent.

  15. Namespaces : Les namespaces permettent de diviser les ressources dans le cluster en espaces isolés, permettant de créer des environnements logiquement séparés. Les namespaces sont utiles pour organiser des ressources selon des équipes, projets, ou environnements (ex: production, développement).

  16. ServiceAccounts : Les ServiceAccounts sont des comptes utilisés par les applications pour interagir avec les ressources Kubernetes. Chaque namespace contient par défaut une ServiceAccount nommée default, qui est associée automatiquement aux pods déployés s'ils ne spécifient pas une autre ServiceAccount.
  17. Roles : Les roles définissent les permissions spécifiques sur les ressources au sein d’un espace de noms particulier. Cela permet de contrôler l’accès en fonction des besoins d’une équipe ou d’un service donné.

  18. Role Bindings : Les Role Bindings associent des rôles à des utilisateurs/serviceAccount ou groupes au niveau du namespace, définissant ainsi les permissions d’accès aux ressources spécifiques.

  19. ClusterRoles : Contrairement aux Roles, les ClusterRoles définissent les autorisations au niveau du cluster. Ils permettent de gérer des permissions globales nécessaires à l’administration du cluster.

  20. ClusterRole Bindings : Les ClusterRole Bindings relient les ClusterRoles aux utilisateurs ou groupes, autorisant l’accès à des ressources et à des actions au niveau global du cluster.


Contrôleurs Associés

Les contrôleurs Kubernetes surveillent en permanence l’état actuel des objets et les ajustent pour maintenir l’état désiré :

  • Replication Controller : Assure la gestion des répliques de pods.
  • ReplicaSet Controller : Gère la mise à jour et la création de pods via ReplicaSets.
  • Deployment Controller : Supervise les mises à jour des déploiements et le maintien de l'état souhaité.
  • DaemonSet Controller : Gère le déploiement des DaemonSets sur chaque nœud.
  • Job Controller : S’occupe de la création et de l'exécution des jobs.
  • CronJob Controller : Planifie les jobs pour une exécution à des intervalles définis.
  • StatefulSet Controller : Assure la gestion des StatefulSets, en garantissant l'ordre et l'identité des pods.

 

Liste des ressources api

La commande kubectl api-resources est utilisée pour lister toutes les ressources API disponibles dans le cluster Kubernetes. Elle affiche les types de ressources que l’API Kubernetes peut gérer, ainsi que leurs groupes, versions et types de ressource. 

  • Explications de la sortie :

La commande kubectl api-resources renvoie un tableau avec les colonnes suivantes :

    1. NAME : Le nom de la ressource Kubernetes, qui est utilisé dans les autres commandes kubectl. Par exemple, pour les pods, le nom est pods.

    2. SHORTNAMES : Abréviations pratiques qui peuvent être utilisées à la place du nom complet dans les commandes kubectl. Par exemple, po pour pods, svc pour services.

    3. APIGROUP : Le groupe API auquel appartient la ressource. Cela permet de différencier les ressources qui peuvent avoir le même nom mais sont présentes dans des groupes différents, comme apps, batch, etc.

    4. NAMESPACED : Indique si la ressource est limitée à un namespace (true) ou si elle est accessible globalement dans le cluster (false).

    5. KIND : Le type ou "kind" de la ressource, utilisé dans les fichiers de configuration Kubernetes pour identifier le type de ressource, comme Pod, Service, Deployment.

  • Utilisations pratiques de kubectl api-resources
    • Identifier les ressources disponibles : Cette commande vous aide à découvrir quelles ressources sont disponibles dans votre cluster, y compris celles ajoutées par des extensions ou des opérateurs personnalisés.

    • Trouver les noms courts et les groupes API : Les noms abrégés et les groupes API peuvent simplifier l’écriture des commandes. Par exemple, au lieu de taper kubectl get deployments.apps, vous pouvez utiliser kubectl get deploy.

    • Vérifier si une ressource est namespacée : La colonne NAMESPACED vous informe si une ressource doit être gérée dans un namespace spécifique (comme les pods ou les services) ou si elle est globale (comme les nodes ou persistentvolumes).

Cette commande est particulièrement utile pour obtenir une vue d’ensemble des types de ressources que votre cluster Kubernetes peut gérer et pour ajuster vos commandes kubectl en conséquence.

 

kubectl api-resources 

 

 

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.