kubectl scale, autoscale, rollout et set
Mise à jour :
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
kubectl scale --replicas=<nombre> <type-ressource>/<nom>
Exemples
1. Mettre à l’échelle un déploiement à 5 réplicas :
kubectl scale deployment my-app --replicas=5
2. Mettre à l’échelle un StatefulSet :
kubectl scale statefulset my-db --replicas=3
Vérification après mise à l’échelle
kubectl get deployment my-app
Erreurs courantes et solutions
error: scaling a job is not allowed
:kubectl scale
ne peut pas être utilisé pour unJob
. Utilisez unDeployment
ou unStatefulSet
.error: resource not found
: Vérifiez que la ressource existe aveckubectl 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
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 :
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 :
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 aveckubectl 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
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 :
kubectl rollout status deployment my-app
2. Annuler la dernière mise à jour :
kubectl rollout undo deployment my-app
3. Voir l’historique des versions :
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
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 :
kubectl set image deployment my-app my-container=nginx:latest
2. Modifier une variable d’environnement :
kubectl set env deployment my-app ENV=production
3. Ajuster les ressources CPU et mémoire :
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 aveckubectl 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.
Commandes | Documentation |
---|---|
kubectl api-resources , kubectl explain | Exploration de l’API |
kubectl create , kubectl apply | Création et mise à jour des ressources |
kubectl edit , kubectl patch , kubectl replace | Modification des ressources |
kubectl get , kubectl describe , kubectl logs , kubectl top | Récupération d’informations sur les ressources |
kubectl exec , kubectl attach , kubectl debug , kubectl cp | Gestion et Debug des Pods |
kubectl delete , kubectl annotate , kubectl label | Suppression et annotation |
kubectl expose , kubectl port-forward , kubectl proxy | Exposition et accès aux applications |
kubectl scale , kubectl autoscale , kubectl rollout , kubectl set | Mise à l’échelle et gestion des déploiements |
kubectl wait , kubectl diff | Attente et validation des ressources |