Kubernetes exécute des applications conteneurisées sur un cluster de machines et les conserve dans l’état que vous décrivez. Pour ce faire, il place le travail sur les machines appropriées, route le trafic vers les bons emplacements et surveille les défaillances et les modifications.
Le flux de base
1. Vous décrivez ce que vous souhaitez exécuter
La plupart des charges de travail Kubernetes démarrent avec un « état souhaité » déclaré (ce qui doit être exécuté, combien de copies et comment elles doivent être exposées). Kubernetes repose sur la configuration déclarative et l’automatisation.
2. Kubernetes décide où il doit s’exécuter
Kubernetes planifie les conteneurs sur les machines du cluster en fonction des ressources de calcul disponibles et de ce dont chaque conteneur a besoin. Les conteneurs s’exécutent à l’intérieur de Pods, qui est l’unité que Kubernetes place sur une machine.
3. Kubernetes vérifie toujours la réalité par rapport à l’état souhaité
Les contrôleurs surveillent le cluster et travaillent pour rapprocher l’état actuel de l’état souhaité, en utilisant le serveur d’API pour apporter des modifications.
Planification des conteneurs et gestion quotidienne
La planification est l’endroit “où cette exécution doit-elle s’exécuter ?” décision.
1. Les pods sont planifiés, pas les conteneurs individuels
Kubernetes regroupe les conteneurs en pods, puis les place sur les ordinateurs.
2. Le planificateur affecte des pods à un nœud approprié
Le kube-scheduler recherche les pods qui ne sont pas encore attribués et sélectionne un nœud pour eux.
3. Les agents de nœud conservent les pods en cours d’exécution
Sur chaque nœud, kubelet s'assure que les Pods sont en cours d'exécution (y compris leurs conteneurs).
Équilibrage de charge et découverte de service
Les conteneurs et les pods peuvent être créés, déplacés ou remplacés, de sorte que les applications ont besoin de méthodes stables pour se trouver.
La découverte de service et l’équilibrage de charge sont des comportements intégrés
Kubernetes gère la découverte de service et utilise l’équilibrage de charge afin que le trafic puisse être routé même lorsque les pods changent au fil du temps.
Les services fournissent une adresse stable pour un ensemble variable de pods
L’API service fournit une adresse IP stable ou un nom d’hôte pour un service soutenu par un ou plusieurs pods, et Kubernetes suit les pods de stockage via des objets EndpointSlice.
Mises à jour du routage du trafic à mesure que les pods changent
Lorsque les pods derrière un service changent, le routage du service s’adapte afin que le trafic continue d’atteindre les back-ends actuels.
Mise à l’échelle des applications (et pourquoi “l’état” souhaité est important)
Kubernetes peut mettre à l’échelle les charges de travail vers l’état que vous définissez, y compris la mise à l’échelle en fonction de l’utilisation du calcul.
Les idées courantes de mise à l’échelle sont les suivantes :
Plus de répliques (plus de modules) pour répondre à la requête accrue.
Moins de répliques lorsque la requête diminue.
Suivi des ressources afin que les décisions de placement reflètent les besoins en CPU et en mémoire.
Cela revient au “modèle d’état” souhaité : vous spécifiez la cible et les contrôleurs continuent à travailler dessus.
Auto-réparation : que se passe-t-il lorsqu'un objet se casse
Kubernetes inclut des comportements de réparation automatique qui visent à maintenir l’intégrité et la disponibilité de la charge de travail. Ces fonctionnalités sont les suivantes :
Redémarrage des conteneurs ayant échoué (redémarrages au niveau du conteneur).
Remplacement des pods défaillants pour conserver le nombre de répliques demandé (remplacement de réplique).
Reprogrammation des charges de travail lorsque des nœuds deviennent indisponibles.
Suppression des pods défaillants des points de terminaison de service afin que le trafic soit dirigé uniquement vers les pods sains (équilibrage de charge pour les services).
La réparation automatique vérifie l’intégrité du conteneur et redémarre ou les réplique en cas de problèmes.
Rôle des indicateurs de performance clés Kubernetes
Les indicateurs de performance clés (indicateurs de performance clés ou métriques) sont utilisés pour comprendre l’intégrité du cluster et le comportement de la charge de travail.
D'où viennent les KPI
Les composants système Kubernetes émettent des métriques (format Prometheus) utiles pour les tableaux de bord et les alertes.
Les métriques sont généralement disponibles sur le point de terminaison HTTP /metrics d'un composant, y compris des composants tels que kube-apiserver, kube-scheduler, kubelet, kube-proxy et kube-controller-manager.
Exemples de ce que les indicateurs de performance clés vous aident à repérer
Signaux d’intégrité du cluster (métriques au niveau des composants et modèles d’erreur)
Stabilité de la charge de travail (par exemple, redémarrages ou remplacements fréquents)
Pression sur la capacité (allocation des ressources par rapport à la requête, liée aux décisions de mise à l'échelle)
Pourquoi cela est important dans les opérations quotidiennes
La surveillance offre aux équipes une vue plus complète des ressources de cluster, de l’API Kubernetes, des conteneurs et des journaux, ce qui raccourcit la boucle de commentaires entre les problèmes et les correctifs.