L'outil en ligne de commande kubectl prend en charge plusieurs façons différentes de créer et gérer des objets Kubernetes.
Ce document donne un aperçu des différentes approches.
Consultez le livre Kubectl pour plus de détails
sur la gestion des objets avec Kubectl.
| Technique de gestion | Opère sur | Environnement recommandé | Operateurs supportés | Courbe d'apprentissage |
|---|---|---|---|---|
| Commandes impératives | Objets en direct | Projets de développement | 1+ | La plus basse |
| Configuration impérative d'objet | Fichiers individuels | Projets de production | 1 | Modérée |
| Configuration déclarative d'objet | Répertoires de fichiers | Projets de production | 1+ | La plus élevée |
Lors de l'utilisation de commandes impératives, un utilisateur opère directement sur des objets
en direct dans un cluster.
L'utilisateur fournit les opérations à la commande kubectl en tant qu'arguments ou indicateurs.
C'est la méthode recommandée pour commencer ou exécuter une tâche ponctuelle dans un cluster. Étant donné que cette technique opère directement sur des objets en direct, elle ne fournit aucune historique des configurations précédentes.
Exécutez une instance du conteneur nginx en créant un objet Deployment :
kubectl create deployment nginx --image nginx
Avantages par rapport à la configuration d'objet :
Inconvénients par rapport à la configuration d'objet :
Dans la configuration impérative d'objet, la commande kubectl spécifie l'opération (créer, remplacer, etc.), des indicateurs facultatifs et au moins un nom de fichier. Le fichier spécifié doit contenir une définition complète de l'objet au format YAML ou JSON.
Consultez la référence de l'API pour plus de détails sur les définitions d'objets.
replace remplace la spécification existante
par celle nouvellement fournie, en supprimant toutes les modifications
apportées à l'objet qui ne figurent pas dans le fichier de configuration.
Cette approche ne doit pas être utilisée avec des types de ressources
dont les spécifications sont mises à jour indépendamment du fichier de configuration.
Par exemple, les services de type LoadBalancer ont leur champ externalIPs mis à jour indépendamment de la configuration par le cluster.Créez les objets définis dans un fichier de configuration :
kubectl create -f nginx.yaml
Supprimez les objets définis dans deux fichiers de configuration :
kubectl delete -f nginx.yaml -f redis.yaml
Mettre à jour les objets définis dans un fichier de configuration en écrasant la configuration en direct :
kubectl replace -f nginx.yaml
Avantages par rapport aux commandes impératives :
Inconvénients par rapport aux commandes impératives :
Avantages par rapport à la configuration d'objet déclarative :
Inconvénients par rapport à la configuration d'objet déclarative :
Lors de l'utilisation de la configuration déclarative d'objet, un utilisateur opère
sur des fichiers de configuration d'objet stockés localement,
mais l'utilisateur ne définit pas les opérations à effectuer sur les fichiers.
Les opérations de création, de mise à jour et de suppression sont automatiquement détectées par kubectl pour chaque objet.
Cela permet de travailler sur des répertoires, où différentes opérations peuvent être nécessaires pour différents objets.
patch pour écrire uniquement les différences
observées, au lieu d'utiliser l'opération d'API replace pour remplacer l'ensemble de la configuration
de l'objet.Traitez tous les fichiers de configuration d'objet dans le répertoire configs et créez ou
appliquez les modifications aux objets en direct. Vous pouvez d'abord utiliser diff pour voir quelles modifications vont être
apportées, puis appliquer les modifications :
kubectl diff -f configs/
kubectl apply -f configs/
Traiter récursivement les répertoires :
kubectl diff -R -f configs/
kubectl apply -R -f configs/
Avantages par rapport à la configuration impérative d'objet :
Inconvénients par rapport à la configuration impérative d'objet :