Gestion des ressources Kubernetes LimitRange

KubernetesKubernetesBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, vous allez apprendre à connaître Kubernetes LimitRange, qui est utilisé pour définir des limites de consommation de ressources dans les pods Kubernetes. LimitRange est une fonctionnalité de Kubernetes qui vous aide à gérer les ressources allouées aux pods et à éviter les problèmes de contention de ressources.

Vous suivrez une série d'instructions étape par étape pour comprendre les différents aspects de LimitRange, en commençant par des exemples simples et en progressant progressivement vers des scénarios plus complexes. Chaque étape inclura des exemples de code sous forme de manifestes YAML que vous pourrez appliquer à votre cluster Kubernetes pour voir les effets de LimitRange en action.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("Edit") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-15819{{"Gestion des ressources Kubernetes LimitRange"}} kubernetes/create -.-> lab-15819{{"Gestion des ressources Kubernetes LimitRange"}} kubernetes/edit -.-> lab-15819{{"Gestion des ressources Kubernetes LimitRange"}} kubernetes/apply -.-> lab-15819{{"Gestion des ressources Kubernetes LimitRange"}} kubernetes/describe -.-> lab-15819{{"Gestion des ressources Kubernetes LimitRange"}} end

Démarrer le cluster Minikube

Avant de créer des ressources, vous avez besoin d'un cluster Kubernetes en cours d'exécution. Minikube est un environnement Kubernetes léger qui s'exécute sur votre machine locale.

  1. Accédez à votre répertoire de travail :

    Ouvrez le terminal et accédez au dossier de projet par défaut :

    cd /home/labex/project
  2. Démarrez Minikube :

    Démarrez Minikube pour initialiser un cluster Kubernetes :

    minikube start
    • Cette commande configure un cluster Kubernetes mono - noeud sur votre machine locale.
    • Minikube peut prendre quelques minutes à démarrer en fonction des performances de votre système.
  3. Vérifiez que Minikube est en cours d'exécution :

    Vérifiez l'état du cluster Minikube :

    minikube status
    • Recherchez des composants tels que kubelet et apiserver listés comme Running (En cours d'exécution).
    • Si le cluster n'est pas en cours d'exécution, relancez la commande minikube start.

Si vous rencontrez des problèmes lors du démarrage de Minikube, utilisez minikube delete pour réinitialiser l'environnement si nécessaire.

Création d'un LimitRange simple

Dans cette étape, vous allez créer un LimitRange simple qui définit des limites pour les ressources CPU et mémoire des pods dans un namespace. Voici comment vous pouvez le faire :

  1. Créez un nouveau fichier YAML appelé limitrange.yaml avec le contenu suivant :
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "1"
        memory: "1Gi"
      min:
        cpu: "100m"
        memory: "100Mi"
      default:
        cpu: "500m"
        memory: "500Mi"

Ce LimitRange définit les limites suivantes :

  • CPU maximum : 1 cœur
  • Mémoire maximale : 1 Gio
  • CPU minimum : 100 milli - cœurs (100m)
  • Mémoire minimale : 100 Mio
  • CPU par défaut : 500 milli - cœurs (500m)
  • Mémoire par défaut : 500 Mio
  1. Appliquez le fichier limitrange.yaml à votre cluster Kubernetes en utilisant la commande kubectl apply :
kubectl apply -f limitrange.yaml
  1. Vérifiez que le LimitRange a été créé avec succès en exécutant la commande suivante :
kubectl describe limitrange example-limitrange

Vous devriez voir le LimitRange example-limitrange listé avec les limites que vous avez spécifiées dans la section spec.

Application du LimitRange aux pods

Dans cette étape, vous allez créer un pod soumis au LimitRange que vous avez créé dans la section "Création d'un LimitRange simple". Voici comment vous pouvez le faire :

  1. Créez un nouveau fichier YAML appelé pod.yaml avec le contenu suivant :
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
    - name: nginx
      image: nginx

Cette définition de pod crée un pod simple avec un seul conteneur exécutant l'image Nginx.

  1. Appliquez le fichier pod.yaml à votre cluster Kubernetes en utilisant la commande kubectl apply :
kubectl apply -f pod.yaml
  1. Vérifiez que le pod a été créé avec succès en exécutant la commande suivante :
kubectl get pods example-pod

Vous devriez voir le pod example-pod listé avec un statut de Running (En cours d'exécution).

  1. Vérifiez les limites de ressources appliquées au pod en exécutant la commande suivante :
kubectl describe pod example-pod

Vous devriez voir les limites de CPU et de mémoire pour le pod telles que définies.

Test de l'application du LimitRange

Dans cette étape, vous allez tester l'application du LimitRange en essayant de créer un pod qui dépasse les limites de ressources définies dans le LimitRange. Voici comment vous pouvez le faire :

  1. Créez un nouveau fichier YAML appelé pod-exceeding-limits.yaml avec le contenu suivant :
apiVersion: v1
kind: Pod
metadata:
  name: example-pod-exceeding-limits
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          cpu: "2"
          memory: "2Gi"

Cette définition de pod crée un pod avec un conteneur qui demande des ressources qui dépassent les limites définies dans le LimitRange (CPU : 2 cœurs, mémoire : 2 Gio).

  1. Appliquez le fichier pod-exceeding-limits.yaml à votre cluster Kubernetes en utilisant la commande kubectl apply :
kubectl apply -f pod-exceeding-limits.yaml

Vous pouvez constater que l'opération de création du pod est rejetée. Le message d'erreur est le suivant : Error from server (Forbidden): error when creating "pod-exceeding-limits.yaml": pod "example-pod-exceeding-limits" Forbidden: [Maximum cpu usage per container is 1, but limited to 2, maximum memory usage per container is 1Gi, but limited to 2Gi].

Mise à jour du LimitRange

Dans cette étape, vous allez mettre à jour le LimitRange créé dans la section "Création d'un LimitRange simple" pour modifier les limites de ressources. Voici comment vous pouvez le faire :

  1. Modifiez le fichier limitrange.yaml pour mettre à jour les limites de ressources selon vos besoins. Par exemple :
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "2"
        memory: "2Gi"
      min:
        cpu: "200m"
        memory: "200Mi"
      default:
        cpu: "1"
        memory: "1Gi"

Ce LimitRange mis à jour définit les limites suivantes :

  • CPU maximum : 2 cœurs
  • Mémoire maximale : 2 Gio
  • CPU minimum : 200 milli - cœurs (200m)
  • Mémoire minimale : 200 Mio
  • CPU par défaut : 1 cœur
  • Mémoire par défaut : 1 Gio
  1. Appliquez le fichier limitrange.yaml mis à jour à votre cluster Kubernetes en utilisant la commande kubectl apply :
kubectl apply -f limitrange.yaml
  1. Vérifiez que le LimitRange a été mis à jour avec succès en exécutant la commande suivante :
kubectl describe limitranges example-limitrange

Vous devriez voir les limites de ressources mises à jour dans la sortie.

Résumé

Dans ce laboratoire (lab), vous avez appris à utiliser le LimitRange de Kubernetes pour définir des limites de consommation de ressources dans les pods. Vous avez commencé par créer un LimitRange simple, l'avez appliqué à un pod, testé son application, puis mis à jour le LimitRange pour modifier les limites de ressources. Le LimitRange est un outil puissant pour gérer les ressources dans Kubernetes et garantir une utilisation efficace des ressources dans votre cluster.