Aller au contenu principal
Sommaire de la formation

Limites resources et ResourceQuota

coolibra468 vues

Limites resources et ResourceQuota

Les ResourceQuotas dans un Namespace Kubernetes sont utilisées pour définir des quotas de ressources spécifiques à un namespace. Ils permettent de limiter la quantité totale de ressources (CPU, mémoire, nombre de pods, etc.) qu'un Namespace peut consommer dans un cluster Kubernetes. Les ResourceQuotas sont un moyen de garantir que les différents namespace d'un cluster partagent les ressources de manière équitable et ne monopolisent pas toutes les ressources disponibles.

Les requests et limits sont des paramètres de gestion des ressources pour les conteneurs qui permettent de contrôler l'utilisation des ressources CPU et mémoire. Ces paramètres garantissent une répartition équitable des ressources entre les pods et protègent le cluster des situations de surcharge.

1. Requests :

  • Définition : La quantité minimale de ressources que le conteneur requiert pour fonctionner.
  • Impact : Kubernetes utilise les valeurs de requests pour planifier les pods sur les nœuds ayant suffisamment de ressources disponibles.
  • Si un nœud ne dispose pas des ressources demandées, le pod ne sera pas planifié (reste en état Pending).

2. Limits :

  • Définition : La quantité maximale de ressources qu'un conteneur peut consommer.
  • Impact :
    • Si un conteneur dépasse ses limites de CPU, Kubernetes le bride (throttling).
    • Si un conteneur dépasse ses limites de mémoire, il est tué par le mécanisme OOM (Out of Memory).

ResourceQuotas

Exemple 1 : Limiter la quantité totale de CPU et de mémoire dans un Namespace :

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-resource-quota
  namespace: mon-namespace
spec:
  hard:
    requests.cpu: "2"       # Limite totale des demandes CPU à 2 CPU
    requests.memory: 4Gi    # Limite totale des demandes mémoire à 4 GiB
    limits.cpu: "4"         # Limite totale des limites CPU à 4 CPU
    limits.memory: 8Gi      # Limite totale des limites mémoire à 8 GiB

Le ResourceQuota my-resource-quota limite la quantité totale de CPU et de mémoire que les pods peuvent consommer dans le namespace mon-espace-de-noms
 

Exemple 2 : Limiter le nombre de pods dans un Namespace :

apiVersion: v1
kind: ResourceQuota
metadata:
  name: resource-quota-10p
  namespace: mon-namespace
spec:
  hard:
    pods: "10"  # Limite le nombre total de pods à 10

Le ResourceQuota resource-quota-10p limite le nombre total de pods qui peuvent être créés dans le namesapce mon-namespace à 10.

 

Exemple 3 : Limiter le nombre de services LoadBalancer :

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-resource-quota
  namespace: mon-namespace
spec:
  hard:
    services.loadbalancers: "2"  # Limite le nombre de services de type LoadBalancer à 2


 

Le ResourceQuota limite le nombre de services de type LoadBalancer pouvant être créés dans le namesapce  à 2.

 

Exemple 1 : Demande et limite de ressources CPU et mémoire :



 

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: mon-image
    resources:
      requests:
        memory: "512Mi"  # Demande 512 MiB de mémoire
        cpu: "250m"      # Demande 250 milliCPU (0,25 CPU)
      limits:
        memory: "1Gi"    # Limite l'utilisation mémoire à 1 GiB
        cpu: "500m"      # Limite l'utilisation CPU à 500 milliCPU (0,5 CPU)

 

Le conteneur "my-container" demande un minimum de 512 MiB de mémoire et 250 milliCPU (0,25 CPU) pour fonctionner correctement. De plus, il est limité à utiliser au maximum 1 GiB de mémoire et 500 milliCPU (0,5 CPU).

 

Exemple 2 : Demande de ressources CPU pour un StatefulSet :



 

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: mon-image
        resources:
          requests:
            cpu: "100m"  # Demande 100 milliCPU (0,1 CPU)

 

Le StatefulSet "my-statefulset" crée 3 replicas. Chacun de ces pods contient un conteneur qui demande un minimum de 100 milliCPU (0,1 CPU) pour fonctionner correctement. Les autres ressources ne sont pas spécifiées ici, ce qui signifie qu'il n'y a pas de demande ou de limite spécifique pour la mémoire.



Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.