Introduction


Découvrez les ResourceQuota et leur rôle dans Kubernetes.

  1. Qu'est-ce qu'un ResourceQuota ?

    Un ResourceQuota est un objet Kubernetes qui impose des limites sur la consommation des ressources dans un namespace. Il est utilisé pour contrôler et gérer l'utilisation des ressources telles que les CPU, la mémoire, les volumes de stockage, ou encore le nombre d'objets comme les Pods et Services.




  2. Pourquoi utiliser un ResourceQuota ?

    Les ResourceQuota permettent de :

    • Éviter la surconsommation de ressources par une seule application.
    • Garantir une répartition équitable des ressources.
    • Optimiser les coûts en limitant les ressources inutilisées.
    • Prévenir les incidents liés à des consommations excessives.

Fonctionnement


Comment les ResourceQuota fonctionnent dans Kubernetes.

  1. Ressources contrôlées

    Les ResourceQuota permettent de limiter :

    • Les CPU et la mémoire (limites et demandes).
    • Le stockage persistant (PersistentVolumeClaims).
    • Le nombre d'objets Kubernetes comme les Pods, Services, ConfigMaps, etc.



  2. Application des quotas

    Lorsqu'un quota est défini dans un namespace, Kubernetes surveille l'utilisation des ressources en temps réel. Si une demande dépasse les limites spécifiées, elle est rejetée avec un message d'erreur indiquant le quota dépassé.


Exemple de configuration


Configuration YAML pour un ResourceQuota.

  1. Exemple de fichier YAML
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: resource-quota-example
      namespace: my-namespace
    spec:
      hard:
        requests.cpu: "4"
        requests.memory: "8Gi"
        limits.cpu: "6"
        limits.memory: "12Gi"
        persistentvolumeclaims: "5"
        pods: "20"
    



  2. Explications des champs

    Les principaux champs incluent :

    • requests.cpu et requests.memory : Limites sur les ressources demandées.
    • limits.cpu et limits.memory : Limites sur les ressources maximales utilisables.
    • persistentvolumeclaims : Nombre maximum de PVC dans le namespace.
    • pods : Nombre maximum de Pods autorisés.

Gestion et vérification


Comment gérer et vérifier l'utilisation des ResourceQuota.

  1. Création et application

    Pour appliquer un ResourceQuota :

    kubectl create namespace my-namespace
    kubectl apply -f resource-quota.yaml



  2. Vérification des quotas

    Pour vérifier l'état des quotas dans un namespace :

    kubectl get resourcequota -n my-namespace
    kubectl describe resourcequota resource-quota-example -n my-namespace

  3. Gestion des dépassements

    Si un quota est dépassé, une erreur est affichée, par exemple :

    Error from server (Forbidden): pods "example-pod" is forbidden: exceeded quota: resource-quota-example, requested: cpu=2, used: cpu=4, limited: cpu=6

Bonnes pratiques


Conseils pour une utilisation optimale des ResourceQuota.

  1. Planification

    Évaluez les besoins des applications et des équipes avant de définir les quotas pour éviter les goulots d'étranglement.




  2. Surveillance

    Surveillez l'utilisation des ressources avec des outils comme Prometheus ou Grafana pour anticiper les ajustements nécessaires.


  3. Combinaison avec LimitRange

    Utilisez LimitRange pour définir des limites par Pod ou conteneur en complément des ResourceQuota.


Conclusion


Résumé sur l'importance des ResourceQuota.

  1. Les ResourceQuota sont essentiels pour garantir une utilisation efficace et équitable des ressources Kubernetes. Ils contribuent à la stabilité du cluster et à une meilleure gestion des coûts. En les combinant avec des outils de surveillance et des politiques complémentaires, vous pouvez optimiser vos déploiements Kubernetes.




Date de publication: 2023-06-03T09:40:00+08:00
Date de modification: 2024-11-29T16:20:22
Auteur:
  • Martin LEKPA : Tech Lead et formateur Observabilité