GNU/Linux >> Tutoriales Linux >  >> Linux

kubectl apply vs create:¿Cuál usar para crear recursos en el entorno de clúster de Kubernetes?

kubectl apply y kubectl create ambos son dos enfoques diferentes para crear recursos en el entorno de clúster de Kubernetes.

Ambos crean recursos desde un archivo o desde STDIN.

kubectl apply and create:dos enfoques para crear recursos

Ahora entremos en algunos detalles y entendamos cómo kubectl se aplica y se diferencia entre sí durante la implementación.

kubectl create:gestión imperativa

kubectl create es lo que llamamos gestión imperativa. En este enfoque, le indica a la API de Kubernetes lo que desea crear, reemplazar o eliminar.

En palabras más simples, create crea un objeto completamente nuevo (anteriormente inexistente o eliminado).

kubectl apply:gestión declarativa

kubectl apply es parte del enfoque de administración declarativa, donde los cambios que puede haber aplicado a un objeto vivo (es decir, a través de scale ) será "mantenida " incluso si apply otros cambios en el objeto.

En palabras más simples, apply - realiza cambios incrementales en un objeto existente definiendo lo que necesitamos.

NOTA: Los enfoques de creación y aplicación de kubectl aceptan los formatos de archivo JSON y YAML.

Comprender la diferencia entre kubectl create y apply con ejemplo

Usaré el siguiente archivo YAML para crear un pod de 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

Vamos a crear el Pod de manera imperativa, es decir, usando kubectl create comando:

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

Enumere el estado del pod junto con las etiquetas:

[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

Ahora editaré el archivo YAML y le agregaré una etiqueta adicional (demostración: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

Ahora utilicemos de nuevo el enfoque imperativo para aplicar los cambios.

[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

Lanza un error y dice que el recurso ya existe.

Ahora hagamos la misma operación usando un enfoque declarativo, es decir, kubectl apply comando.

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

Entonces, el recurso se configuró esta vez. Verifica los cambios realizados.

[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

Puede ver que la nueva etiqueta se ha aplicado al pod.

Creo que ahora debería tener una comprensión clara de los dos enfoques.

¿Kubectl crear o aplicar? ¿Cuál usar?

Depende del caso de uso cómo desea utilizar estos conceptos o metodología. No se trata de cuál es bueno o cuál es malo.

Si desea control de versiones el objeto k8s entonces es mejor usar declarative (kubectl apply) que ayuda a determinar la precisión de los datos en los objetos k8s.

Y si solo desea crear algún recurso para resolución de problemas, aprendizaje o experimentación interactiva ir con imperativo enfoque (kubectl create).

¿Sigo confundido? Deja un comentario e intentaré resolver tus dudas.

Rakesh Jain
Profesional DevOps | RHCA | Jenkins | Git | ventana acoplable | Kubernetes | Ansible | Prometeo | Grafana | Nube de AWS

Linux
  1. Cómo implementar su primer pod en un clúster de Kubernetes

  2. Debian vs. Ubuntu para uso de servidor, cuál elegir

  3. Explicación de los tipos de sistemas de archivos de Linux, ¿cuál debe usar?

  4. [Guía] Comandos apt vs apt-get, y ¿cuál usar?

  5. ¿Por qué debería uno usar sudo?

Cómo crear un clúster de Kubernetes con AWS CLI

Elementary OS vs. Ubuntu:¿Cuál es para ti?

Creación de un clúster de Kubernetes de plano de control único con kubeadm

Explicación de los comandos Apt vs Apt-get:¿Cuál usar?

Los 10 mejores sistemas operativos alternativos de Windows:¿cuál es mejor para usted?

Linux Mint vs Ubuntu:¿cuál es el mejor para ti?