Aller au contenu
Conteneurs & Orchestration medium

kubectl scale, autoscale, rollout et set

6 min de lecture

logo kubernetes

Ce guide fait partie d’une série dédiée à kubectl, l’outil en ligne de commande pour interagir avec Kubernetes. Dans ce guide, nous explorons les commandes essentielles pour la mise à l’échelle et la gestion des déploiements Kubernetes : kubectl scale, kubectl autoscale, kubectl rollout et kubectl set.

Pourquoi gérer la mise à l’échelle et les déploiements ?

Section intitulée « Pourquoi gérer la mise à l’échelle et les déploiements ? »

Dans Kubernetes, les applications doivent être scalables, résilientes et faciles à mettre à jour. Ces commandes permettent de :

  • Ajuster le nombre de réplicas d’un déploiement ou d’un pod (kubectl scale).
  • Mettre en place une mise à l’échelle automatique basée sur l’utilisation des ressources (kubectl autoscale).
  • Gérer les mises à jour progressives et les annulations de déploiement (kubectl rollout).
  • Modifier dynamiquement des configurations de ressources (kubectl set).

kubectl scale : Modifier manuellement le nombre de réplicas

Section intitulée « kubectl scale : Modifier manuellement le nombre de réplicas »

La commande kubectl scale permet d’ajuster le nombre d’instances (réplicas) d’un déploiement ou d’un ReplicaSet.

Fenêtre de terminal
kubectl scale --replicas=<nombre> <type-ressource>/<nom>

1. Mettre à l’échelle un déploiement à 5 réplicas :

Fenêtre de terminal
kubectl scale deployment my-app --replicas=5

2. Mettre à l’échelle un StatefulSet :

Fenêtre de terminal
kubectl scale statefulset my-db --replicas=3
Fenêtre de terminal
kubectl get deployment my-app
  • error: scaling a job is not allowed : kubectl scale ne peut pas être utilisé pour un Job. Utilisez un Deployment ou un StatefulSet.
  • error: resource not found : Vérifiez que la ressource existe avec kubectl get <type-ressource>.

kubectl autoscale : Mise à l’échelle automatique

Section intitulée « kubectl autoscale : Mise à l’échelle automatique »

La commande kubectl autoscale configure la mise à l’échelle automatique en fonction de la consommation des ressources.

Fenêtre de terminal
kubectl autoscale <type-ressource>/<nom> --min=<min-replicas> --max=<max-replicas> --cpu-percent=<seuil>

1. Configurer un Horizontal Pod Autoscaler (HPA) pour un déploiement :

Fenêtre de terminal
kubectl autoscale deployment my-app --min=2 --max=10 --cpu-percent=50

Cela ajuste le nombre de réplicas entre 2 et 10 selon l’utilisation CPU.

2. Vérifier l’état de l’auto-scaling :

Fenêtre de terminal
kubectl get hpa
  • error: metrics not available : Assurez-vous que le Metrics Server est installé dans le cluster.
  • error: target resource not found : Vérifiez que la ressource ciblée existe avec kubectl get deployment.

kubectl rollout : Gestion des mises à jour et des versions

Section intitulée « kubectl rollout : Gestion des mises à jour et des versions »

La commande kubectl rollout permet de suivre, annuler et gérer les mises à jour de déploiements.

Fenêtre de terminal
kubectl rollout <action> <type-ressource>/<nom>
  • status : Vérifie l’état du déploiement.
  • history : Affiche l’historique des mises à jour.
  • undo : Annule une mise à jour.

1. Vérifier l’état d’un déploiement :

Fenêtre de terminal
kubectl rollout status deployment my-app

2. Annuler la dernière mise à jour :

Fenêtre de terminal
kubectl rollout undo deployment my-app

3. Voir l’historique des versions :

Fenêtre de terminal
kubectl rollout history deployment my-app
  • error: no rollout history found : Aucune mise à jour n’a été effectuée sur la ressource

kubectl set : Modifier dynamiquement des paramètres d’un déploiement

Section intitulée « kubectl set : Modifier dynamiquement des paramètres d’un déploiement »

La commande kubectl set permet de modifier la configuration d’un déploiement sans modifier directement son fichier YAML.

Fenêtre de terminal
kubectl set <option> <type-ressource>/<nom> <valeur>
  • image : Met à jour l’image d’un conteneur.
  • env : Modifie des variables d’environnement.
  • resources : Change les limites CPU/mémoire.

1. Mettre à jour l’image d’un conteneur :

Fenêtre de terminal
kubectl set image deployment my-app my-container=nginx:latest

2. Modifier une variable d’environnement :

Fenêtre de terminal
kubectl set env deployment my-app ENV=production

3. Ajuster les ressources CPU et mémoire :

Fenêtre de terminal
kubectl set resources deployment my-app --limits=cpu=500m,memory=512Mi
  • error: resource not found : Vérifiez que la ressource ciblée existe avec kubectl get deployment.
  • Utilisez kubectl scale pour des ajustements rapides de capacité.
  • Préférez kubectl autoscale pour gérer automatiquement la charge.
  • Installez le Metrics Server pour activer l’auto-scaling.
  • Ajustez les seuils de CPU pour éviter une surcharge ou une sous-utilisation des ressources.
  • Toujours vérifier l’état du déploiement avec kubectl rollout status.
  • Maintenir un historique des versions pour pouvoir annuler si nécessaire.
  • Utiliser kubectl set pour des mises à jour rapides sans modifier les fichiers YAML.
  • Vérifier les mises à jour appliquées avec kubectl describe deployment.

Avec kubectl scale, kubectl autoscale, kubectl rollout et kubectl set, vous pouvez gérer efficacement la mise à l’échelle et le déploiement des applications Kubernetes.

En maîtrisant ces commandes, vous garantissez une infrastructure résiliente et adaptable à la demande.

Ce guide fait partie d’une série complète dédiée à l’utilisation de kubectl, l’outil en ligne de commande incontournable pour administrer un cluster Kubernetes. Chaque commande de kubectl est abordée en détail dans des guides spécifiques, organisés par thématique pour faciliter l’apprentissage et la référence rapide.

Pour naviguer efficacement entre les différents chapitres, vous trouverez un tableau récapitulatif listant les commandes et leurs guides associés. N’hésitez pas à explorer ces ressources pour approfondir vos connaissances et optimiser votre gestion des clusters Kubernetes.

CommandesDocumentation
kubectl api-resources, kubectl explainExploration de l’API
kubectl create, kubectl applyCréation et mise à jour des ressources
kubectl edit, kubectl patch, kubectl replaceModification des ressources
kubectl get, kubectl describe, kubectl logs, kubectl topRécupération d’informations sur les ressources
kubectl exec, kubectl attach, kubectl debug, kubectl cpGestion et Debug des Pods
kubectl delete, kubectl annotate, kubectl labelSuppression et annotation
kubectl expose, kubectl port-forward, kubectl proxyExposition et accès aux applications
kubectl scale, kubectl autoscale, kubectl rollout, kubectl setMise à l’échelle et gestion des déploiements
kubectl wait, kubectl diffAttente et validation des ressources