Aller au contenu

kubectl scale, autoscale, rollout et set

Mise à jour :

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 ?

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

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

Syntaxe de base

Terminal window
kubectl scale --replicas=<nombre> <type-ressource>/<nom>

Exemples

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

Terminal window
kubectl scale deployment my-app --replicas=5

2. Mettre à l’échelle un StatefulSet :

Terminal window
kubectl scale statefulset my-db --replicas=3

Vérification après mise à l’échelle

Terminal window
kubectl get deployment my-app

Erreurs courantes et solutions

  • 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

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

Syntaxe de base

Terminal window
kubectl autoscale <type-ressource>/<nom> --min=<min-replicas> --max=<max-replicas> --cpu-percent=<seuil>

Exemples

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

Terminal window
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 :

Terminal window
kubectl get hpa

Erreurs courantes et solutions

  • 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

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

Syntaxe de base

Terminal window
kubectl rollout <action> <type-ressource>/<nom>

Actions principales

  • status : Vérifie l’état du déploiement.
  • history : Affiche l’historique des mises à jour.
  • undo : Annule une mise à jour.

Exemples

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

Terminal window
kubectl rollout status deployment my-app

2. Annuler la dernière mise à jour :

Terminal window
kubectl rollout undo deployment my-app

3. Voir l’historique des versions :

Terminal window
kubectl rollout history deployment my-app

Erreurs courantes et solutions

  • 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

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

Syntaxe de base

Terminal window
kubectl set <option> <type-ressource>/<nom> <valeur>

Options principales

  • image : Met à jour l’image d’un conteneur.
  • env : Modifie des variables d’environnement.
  • resources : Change les limites CPU/mémoire.

Exemples

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

Terminal window
kubectl set image deployment my-app my-container=nginx:latest

2. Modifier une variable d’environnement :

Terminal window
kubectl set env deployment my-app ENV=production

3. Ajuster les ressources CPU et mémoire :

Terminal window
kubectl set resources deployment my-app --limits=cpu=500m,memory=512Mi

Erreurs courantes et solutions

  • error: resource not found : Vérifiez que la ressource ciblée existe avec kubectl get deployment.

Bonnes pratiques

  • 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.

Conclusion

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.

Notes importantes

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