Publié le : 03/06/2023 à 03:40

Guide complet sur les quotas de ressources Kubernetes pour la gestion des namespaces.

Introduction

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

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.

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.

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.

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.

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"

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.

Création et application

Pour appliquer un ResourceQuota :

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

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

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.

Planification

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

Surveillance

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

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.

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.

Lien copié dans le presse-papiers !