Limits and Quotas
Le module **Limites et Quotas** audite les contraintes de ressources au niveau du namespace Kubernetes et OpenShift (ResourceQuotas et LimitRanges), convertissant la télémétrie brute du cluster en un tableau de bord visuel intuitif en temps réel. Il offre aux administrateurs une visibilité immédiate sur la marge de manœuvre des ressources, les limites en rafale (burst) et les allocations d'objets pour prévenir les goulots d'étranglement de la plateforme et les échecs de planification (scheduling) à travers le déploiement SAS Viya.
---
Vue d'ensemble et Objectif
Dans un déploiement SAS Viya basé sur OpenShift, le namespace (espace de noms) fonctionne dans des limites de ressources désignées. Lorsque les quotas du namespace sont épuisés, Kubernetes rejette les créations de nouveaux pods ou limite les performances des conteneurs. Ce module comble le vide entre les sorties de bas niveau de la commande oc et l'administration exploitable en calculant les pourcentages d'utilisation exacts et en mettant en évidence les risques critiques de saturation des ressources avant qu'ils n'impactent les utilisateurs finaux.
---
Fonctionnalités Principales et Capacités
1. Jauges Visuelles des Quotas de Ressources
- Cartes de Métriques Interactives : Les éléments de quota sont analysés et affichés sous forme de cartes individuelles montrant l'utilisation actuelle, la limite stricte (hard limit) assignée et le pourcentage d'utilisation.
- Normalisation Automatisée des Métriques : Normalise de manière transparente les unités de ressources Kubernetes hétérogènes en valeurs comparables :
- Millicores CPU (m) en unités de cœurs.
- Désignations de mémoire (Ki, Mi, Gi, Ti, Pi) en octets pour des calculs de pourcentage précis.
- Barres de Progression Dynamiques avec Code Couleur :
- Vert (Normal, < 75%) : Capacité opérationnelle saine avec une marge suffisante.
- Jaune (Avertissement, 75% – 90%) : Consommation élevée ; le namespace approche des limites de quota.
- Rouge (Danger, > 90%) : Utilisation critique ; risque imminent de rejet de pod ou d'échec de planification (scheduling).
- Dictionnaire d'Info-bulles Intégré : Des info-bulles contextuelles décrivent chaque type de quota :
- requests.cpu : Minimum garanti de CPU réservé pour tous les pods combinés.
- requests.memory : Minimum garanti de RAM réservée à travers tous les pods combinés.
- limits.cpu : Plafond absolu de CPU en rafale (burstable) avant que les pods ne subissent une limitation (throttling) du CPU.
- limits.memory : Plafond maximum de RAM en rafale avant que le tueur OOM (Out Of Memory) du noyau ne termine les conteneurs.
- pods : Plafond strict sur le nombre maximum de pods simultanés autorisés dans le namespace.
- configmaps : Nombre maximum autorisé de configmaps.
- secrets : Nombre maximum autorisé de secrets chiffrés.
- persistentvolumeclaims : Nombre maximum de demandes de volumes de stockage persistants (PVC).
2. Inspection des Limit Ranges
- Règles par Défaut des Conteneurs et Pods : Identifie et affiche les
LimitRangesactifs appliqués au projet. - Vérification des Politiques : Inspecte les paramètres appliqués tels que les demandes (requests) par défaut, les limites par défaut, les bornes min/max de ressources, et les ratios demande-limite.
- Détection d'Impact Compute : S'assure que les limites par défaut ne contraignent pas par inadvertance les pods de sessions SAS Compute ou CAS générés dynamiquement qui ne déclarent pas de contraintes de ressources explicites.
3. Vue Diagnostique à Double Onglet
- Onglet Résultat : La vue par défaut rendant les cartes visuelles de quotas, les jauges de progression animées et le bloc de règles des LimitRanges.
- Onglet Journal d'Exécution :
- Sortie Shell Brute (stdout) : Sortie de terminal complète et non modifiée des requêtes sous-jacentes oc describe resourcequotas et oc describe limitranges.
- Commande Exécutée : Affiche la chaîne de commande exacte exécutée, y compris le contexte du profil actif et les paramètres de délai d'attente (timeout).
- Journaux et Traces (stderr) : Traces détaillées d'exécution et de débogage pour diagnostiquer les problèmes de communication avec l'API OpenShift.
---
Contrôles Opérationnels
- Exécution Automatique au Chargement : Déclenche automatiquement un audit à l'ouverture du module pour des informations diagnostiques rapides.
- Exécution à la Demande : Un bouton Run dédié permet aux administrateurs de réévaluer les quotas du namespace en temps réel.
- Mode Débogage : Case à cocher activant l'exécution verbeuse (
bash -x), capturant les traces d'erreur standard et l'expansion de la commande dans l'onglet Journal d'Exécution. - Délai d'Attente Personnalisable : Délai d'exécution configurable (1 à 300 secondes, par défaut : 30s) avec un compteur de secondes écoulées en direct et une gestion de l'annulation au niveau du navigateur.
- Sensibilité au Profil et au Contexte : Cible automatiquement le profil d'environnement actif et le namespace configurés dans OpsBuddy.
---
Considérations Opérationnelles pour SAS Viya
- Sessions Compute Dynamiques : SAS Viya provisionne dynamiquement des pods à la demande (ex: sessions SAS Studio, SAS Compute Server, pods worker CAS, jobs Batch Execution). Si les quotas
requests.memory,requests.cpuoupodsdu namespace sont saturés, Kubernetes bloquera ces pods à l'étatPendingavec des événementsFailedSchedulingcitant l'épuisement des quotas. - Pression Mémoire et Risques OOM : Dépasser les limites de mémoire peut entraîner des redémarrages brusques de conteneurs (
OOMKilled), causant la fin des sessions utilisateurs et la perte de données pendant un traitement analytique intensif. - Namespaces Non Contraints : Si aucun objet
ResourceQuotaouLimitRangen'est défini dans le namespace cible, le tableau de bord informe les administrateurs que le projet n'est pas contraint, fonctionnant uniquement selon les limites de capacité des nœuds workers (worker nodes).