GNU/Linux >> Tutoriels Linux >  >> Linux

kubectl apply vs create :lequel utiliser pour créer des ressources dans l'environnement de cluster Kubernetes ?

kubectl apply et kubectl create les deux sont deux approches différentes pour créer des ressources dans l'environnement de cluster Kubernetes.

Ils créent tous les deux des ressources à partir d'un fichier ou de STDIN.

kubectl apply and create :deux approches pour créer des ressources

Passons maintenant aux détails et comprenons en quoi kubectl apply et create diffèrent l'un de l'autre lors de la mise en œuvre.

kubectl create :gestion impérative

kubectl create c'est ce que nous appelons la gestion impérative. Dans cette approche, vous indiquez à l'API Kubernetes ce que vous souhaitez créer, remplacer ou supprimer.

En termes plus simples, create crée un tout nouvel objet (précédemment inexistant ou supprimé).

kubectl apply :gestion déclarative

kubectl apply fait partie de l'approche de gestion déclarative, où les modifications que vous avez pu appliquer à un objet actif (c'est-à-dire via scale ) sera "maintenu " même si vous apply autres modifications de l'objet.

En termes plus simples, apply - apporte des modifications incrémentielles à un objet existant en définissant ce dont nous avons besoin.

REMARQUE : Les approches de création et d'application de kubectl acceptent les formats de fichiers JSON et YAML.

Comprendre la différence entre kubectl create et apply avec exemple

Je vais utiliser le fichier YAML ci-dessous pour créer un pod Kubernetes.

[email protected]:~/pod-create# cat mypod.yml
apiVersion: v1
kind: Pod
metadata:
   name: create-vs-apply-demo
   labels:
      app: front-end
      rel: dev
spec:
  containers:
  - name: httpd
    image: docker.io/httpd
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80

Créons le pod de manière impérative, c'est-à-dire en utilisant kubectl create commande :

[email protected]:~/pod-create# kubectl create -f mypod.yml
pod/create-vs-apply-demo created

Répertoriez l'état du pod avec les libellés :

[email protected]:~/pod-create# kubectl get pods --show-labels
NAME                   READY   STATUS    RESTARTS   AGE   LABELS
create-vs-apply-demo   1/1     Running   0          8s    app=front-end,rel=dev

Je vais maintenant modifier le fichier YAML et y ajouter une étiquette supplémentaire (démo : applyVscreate).

[email protected]:~/pod-create# cat mypod.yml
apiVersion: v1
kind: Pod
metadata:
   name: create-vs-apply-demo
   labels:
      app: front-end
      rel: dev
      demo: applyVscreate
spec:
  containers:
  - name: httpd
    image: docker.io/httpd
    imagePullPolicy: IfNotPresent
    ports:
      - containerPort: 80

Maintenant, utilisons à nouveau l'approche impérative pour appliquer les modifications.

[email protected]:~/pod-create# kubectl create -f mypod.yml
Error from server (AlreadyExists): error when creating "mypod.yml": pods "create-vs-apply-demo" already exists

Il génère une erreur et indique que la ressource existe déjà.

Faisons maintenant la même opération en utilisant une approche déclarative, c'est-à-dire kubectl apply commande.

[email protected]:~/pod-create# kubectl apply -f mypod.yml
pod/create-vs-apply-demo configured

Ainsi, la ressource a été configurée cette fois. Vérifiez les modifications apportées.

[email protected]:~/pod-create# kubectl get pods --show-labels
NAME                   READY   STATUS    RESTARTS   AGE     LABELS
create-vs-apply-demo   1/1     Running   0          3m19s   app=front-end,demo=applyVscreate,rel=dev

Vous pouvez voir que la nouvelle étiquette a été appliquée au pod.

Je pense que vous devriez maintenant avoir une compréhension claire des deux approches.

Kubectl créer ou appliquer ? Lequel utiliser ?

Cela dépend du cas d'utilisation de la manière dont vous souhaitez utiliser ces concepts ou cette méthodologie. Il ne s'agit pas de savoir lequel est bon ou mauvais.

Si vous souhaitez contrôler la version l'objet k8s alors il vaut mieux utiliser déclaratif (kubectl apply) qui aide à déterminer l'exactitude des données dans les objets k8s.

Et si vous souhaitez simplement créer une ressource à des fins de dépannage, d'apprentissage ou d'expérimentation interactive aller avec impératif approche (kubectl create).

Encore confus? Laissez un commentaire et j'essaierai de répondre à vos doutes.

Rakesh Jain
DevOps Professionnel | RHCA | Jenkins | Gite | Docker | Kubernetes | Ansible | Prométhée | Grafane | Nuage AWS

Linux
  1. Debian vs Ubuntu pour l'utilisation du serveur, lequel choisir

  2. Explication des types de système de fichiers Linux, lequel devez-vous utiliser

  3. Créer un environnement virtuel pour différentes versions de Python à l'aide de Conda

  4. Comment créer un environnement Shell propre pour une utilisation temporaire ?

  5. Pourquoi utiliser sudo ?

Comment créer un cluster Kubernetes avec AWS CLI

Système d'exploitation élémentaire contre Ubuntu :lequel est fait pour vous ?

Créer un cluster Kubernetes à plan de contrôle unique avec kubeadm

Explication des commandes Apt vs Apt-get :laquelle utiliser ?

Les 10 meilleurs systèmes d'exploitation alternatifs à Windows :lequel vous convient le mieux ?

Linux Mint vs Ubuntu – Lequel est le meilleur pour vous ?