Ce que j'ai compris dans la documentation, c'est que:
- kubectl create = Crée une nouvelle ressource k8s dans le cluster
- kubectl replace = Met à jour une ressource dans le cluster en direct
- kubectl apply = Si je veux faire créer + remplacer ( Référence )
Mes questions sont
- Pourquoi y a-t-il trois opérations pour effectuer la même tâche dans un cluster?
- Quels sont les cas d'utilisation de ces opérations?
- En quoi diffèrent-ils les uns des autres sous le capot?
kubernetes
kubectl
Suresh Vishnoi
la source
la source
kubectl create
etkubectl apply
avoir un effet identique ou non.kubectl create
générera une erreur si la ressource existe déjà.kubectl apply
habitude. La différence est quekubectl create
spécifiquement dit "créer cette chose" alors quekubectl apply
dit "faire tout ce qui est nécessaire (créer, mettre à jour, etc.) pour que cela ressemble à ceci".Lors de l'exécution dans un script CI, vous aurez des problèmes avec les commandes impératives car create déclenche une erreur si la ressource existe déjà.
Ce que vous pouvez faire est d' appliquer (modèle déclaratif) la sortie de votre commande impérative, en utilisant
--dry-run=true
et les-o yaml
options:La commande ci-dessus ne déclenchera pas d'erreur si la ressource existe déjà (et mettra à jour la ressource si nécessaire).
Ceci est très utile dans certains cas où vous ne pouvez pas utiliser le modèle déclaratif (par exemple lors de la création d'un secret de registre docker).
la source
kubectl delete deployment nginx --ignore-not-found; kubectl create deployment nginx --image=nginx
Juste pour donner une réponse plus simple, d'après ma compréhension:
apply
- apporte des modifications incrémentielles à un objet existantcreate
- crée un tout nouvel objet (auparavant inexistant / supprimé)En prenant cela à partir d'un article DigitalOcean qui a été lié par le site Web de Kubernetes:
la source
apply
commedocker-compose up -d
+ utilisercreate
commedocker-compose up -d --build
?Ce sont des commandes impératives :
kubectl run
=kubectl create deployment
Avantages:
Désavantages:
Ce sont des configurations d'objet impératives :
kubectl create -f your-object-config.yaml
kubectl delete -f your-object-config.yaml
kubectl replace -f your-object-config.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:
Ce sont des configurations d'objets déclaratifs
kubectl diff -f configs/
kubectl apply -f configs/
Avantages par rapport à la configuration d'objet impérative:
Inconvénients par rapport à la configuration impérative des objets:
la source
L'explication ci-dessous de la documentation officielle m'a aidé à comprendre
kubectl apply
.kubectl create
d'autre part, créera (ne devrait pas exister) des ressources.la source
kubectl create peut fonctionner avec un fichier de configuration d'objet à la fois. Ceci est également connu sous le nom de gestion impérative
kubectl create -f filename | url
kubectl apply fonctionne avec les répertoires et ses sous-répertoires contenant des fichiers yaml de configuration d'objet. Ceci est également connu sous le nom de gestion déclarative. Plusieurs fichiers de configuration d'objet provenant de répertoires peuvent être récupérés. kubectl applique le répertoire -f /
Détails:
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/ https://kubernetes.io/docs/tasks/manage-kubernetes-objects/imperative-config/
la source
Nous aimons Kubernetes parce qu'une fois que nous leur donnons ce que nous voulons, il continue à comprendre comment y parvenir sans notre participation.
«créer», c'est comme jouer à DIEU en prenant les choses en main. Il est bon pour le débogage local lorsque vous souhaitez uniquement travailler avec le POD et ne vous souciez pas du contrôleur de déploiement / réplication.
"appliquer" joue selon les règles. "appliquer" est comme un outil maître qui vous aide à créer et à modifier et ne nécessite rien de vous pour gérer les pods.
la source