Cost Insights vous aide à détecter les risques de stabilité, de performance et de coût dans les charges de travail des clusters ACK avant qu'ils ne s'aggravent. L'outil suit l'utilisation des ressources sur tous les pods et propose des vues dédiées pour les pods Burstable et BestEffort, afin que vous puissiez identifier les charges de travail mal configurées et y remédier.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Activé Cost Insights. Pour plus d'informations, consultez la rubrique Activer Cost Insights.
Activé Managed Service for Prometheus pour votre cluster. Pour plus d'informations, consultez la rubrique Managed Service for Prometheus.
Importance de la configuration des ressources
Kubernetes attribue à chaque pod une classe de qualité de service (QoS) en fonction de ses demandes et limites de ressources. Lorsqu'un nœud subit une pression sur les ressources, Kubernetes utilise la classe QoS pour décider quels pods évacuer en priorité.
Guaranteed
Les demandes et les limites de ressources sont identiques pour chaque conteneur de ces pods. Ils offrent la stabilité et les performances les plus élevées et sont les derniers à être évacués.
Burstable
Ces pods disposent d'une demande de ressources, mais d'aucune limite. Ils peuvent consommer l'intégralité des ressources du nœud. En cas d'évacuation nécessaire, Kubernetes évacue d'abord les pods BestEffort, puis les pods Burstable.
BestEffort
Ces pods n'ont ni demande ni limite de ressources. Ils ne s'exécutent que lorsque le nœud dispose de ressources inactives et sont les premiers à être évacués lorsque les ressources deviennent insuffisantes.
Une configuration incorrecte des ressources, qu'elle soit absente, trop faible ou trop élevée, entraîne des risques concrets :
| Configuration | Ressource | Risque |
|---|---|---|
| Non configurée | CPU | La stabilité et les performances sont compromises ; les charges de travail peuvent devenir indisponibles par manque de ressources CPU. |
| Non configurée | Mémoire | La stabilité est compromise ; les charges de travail risquent d'être arrêtées en raison d'un manque de mémoire. |
| Sous-configurée | CPU | Les performances sont compromises ; les charges de travail s'exécutent lentement ou deviennent indisponibles. |
| Sous-configurée | Mémoire | La stabilité est compromise ; les charges de travail risquent d'être arrêtées en raison d'un manque de mémoire. |
| Surconfigurée | CPU | Une faible utilisation des ressources entraîne des coûts inutiles. |
| Surconfigurée | Mémoire | Une faible utilisation des ressources entraîne des coûts inutiles. |
Identifiez les risques à l'aide de l'analyse de stabilité et d'efficacité
La page Stability & Efficiency Analysis, située dans Cost Insights, met à votre disposition trois vues d'analyse pour évaluer les risques liés aux ressources dans l'ensemble du cluster.
Accéder à la page
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, localisez le cluster que vous souhaitez gérer et cliquez sur son nom. Dans le volet de gauche, choisissez Cost Suite > Cost Insights.
-
Sous l'onglet Cluster Dimension, accédez à la page Stability & Efficiency Analysis. Cette page affiche un aperçu du nombre de pods par classe QoS ainsi que leur utilisation totale des ressources.
La zone d'aperçu en haut de la page contient trois panneaux : Stability/Performance Risks (nombre de pods BestEffort et Burstable), Cluster CPU Usage Overview (utilisation, demandes, nombre total de cœurs) et Cluster Memory Usage Overview (utilisation, demandes, capacité totale). Sous l'aperçu se trouvent trois tableaux d'analyse :
Cluster Pod Resource Usage Analysis : les colonnes incluent le nom du pod, le namespace, le nœud, l'utilisation du CPU (Usage/Request), l'utilisation de la mémoire et la durée de fonctionnement du pod.
Burstable Pod Resource Usage Analysis : les colonnes incluent la demande de CPU, la limite de CPU, la demande de mémoire et la limite de mémoire.
Best Effort Pod Resource Usage Analysis : les colonnes incluent l'utilisation du CPU et l'utilisation de la mémoire.
Afficher l'utilisation des ressources de tous les pods
La liste Cluster pod resource usage analysis affiche par défaut les informations de base et l'utilisation des ressources (Usage/Request) de tous les pods du cluster. Triez ou filtrez la liste pour mettre en évidence les charges de travail aux extrêmes :
Faible utilisation : le pod est surdimensionné et vous payez peut-être pour des ressources qui ne sont jamais utilisées.
Utilisation élevée : le pod est sous-configuré, ce qui peut entraîner des problèmes de performance ou de stabilité selon que le goulot d'étranglement concerne le CPU ou la mémoire.
Utilisation supérieure à 100 % : l'utilisation dépasse le montant demandé, ce qui peut affecter la stabilité de la charge de travail.
Exemple : Le tableau suivant présente les pods triés par utilisation de la mémoire par ordre décroissant. Tous les pods affichés dépassent 100 % d'utilisation de la mémoire et nécessitent un examen approfondi pour déterminer si des ajustements de configuration sont nécessaires.
Le tableau d'analyse comprend des colonnes pour Pod Name, Namespace, Node, CPU Utilization, Memory Utilization (Usage/Request) et Pod Uptime. Le tableau répertorie 8 pods dont l'utilisation de la mémoire varie de 228 % à 613 %. Les pods concernés sont principalement des instances node-local-dns (namespace kube-system) et nginx-ingress-controller.
Afficher la configuration des ressources des pods Burstable
La liste Burstable Pod-Resource Usage Analysis affiche les demandes et les limites de CPU et de mémoire pour chaque pod Burstable. Étant donné que les pods Burstable n'ont aucune limite supérieure de ressources, l'absence de limites peut dégrader silencieusement les performances à l'échelle du cluster :
Aucune limite de CPU : le pod peut consommer un volume illimité de CPU, privant potentiellement les autres charges de travail de ressources et provoquant une indisponibilité.
Aucune limite de mémoire : le pod peut épuiser la mémoire du nœud, exposant les charges de travail à un risque d'arrêt.
Exemple : Le tableau suivant montre les pods Burstable sans limite de CPU. Ces pods peuvent dégrader les performances du cluster ou être évacués en raison de la concurrence pour les ressources.
Le tableau Burstable Pod - Resource Usage Analysis répertorie plusieurs pods dans les namespaces kube-system et default (tels que node-local-dns, coredns, kube-proxy et nginx-ingress-controller), en indiquant pour chaque pod la demande de CPU (25–250 mCores), la demande de mémoire (5–512 MiB) et les limites correspondantes. Certains pods n'ont aucune limite de mémoire configurée.
Identifier les pods BestEffort inattendus
La liste Best Effort Pod-Resource Usage Analysis affiche tous les pods BestEffort du cluster. Les pods BestEffort présentent le risque d'évacuation le plus élevé et doivent être examinés avec soin. Filtrez et triez la liste pour trouver les pods qui ne devraient pas s'exécuter avec la qualité de service BestEffort.
Exemple : Si des services métier critiques s'exécutent en tant que pods BestEffort, ajustez leur configuration des ressources pour les promouvoir vers une classe QoS supérieure.
Le tableau Best Effort Pod - Resource Usage Analysis comprend des colonnes pour le nom du pod, le namespace, le nœud, l'utilisation du CPU et l'utilisation de la mémoire. Le tableau prend en charge le filtrage par colonne et le tri par utilisation de la mémoire. Parmi les exemples figurent ack-mysql-0 (namespace kube-ai, mémoire 393 MiB) et shared-dataset-jindofs-master-0 (namespace share, mémoire 383 MiB).
Étapes suivantes
Après avoir identifié les risques avec Cost Insights, utilisez les fonctionnalités suivantes pour y remédier :
Resource profiling : obtenez des recommandations au niveau des conteneurs pour le CPU et la mémoire basées sur les données d'utilisation historiques.
Dynamic resource overcommitment : optimisez le rapport coût-efficacité du cluster en surallouant les ressources en fonction des modèles d'utilisation réels.