GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Alternativas de Kubernetes a los comandos de Docker

Docker generalmente proporciona la primera introducción de un desarrollador a los contenedores. Kubernetes es una plataforma de orquestación que resuelve los desafíos relacionados con la ejecución de contenedores en producción. Así es como los comandos de Docker se asignan a sus homólogos de Kubernetes.

No puedes usar el docker CLI para interactuar con contenedores que se ejecutan en Kubernetes. Kubernetes proporciona su propia interfaz de línea de comandos, kubectl delete deployment , para ayudarlo a administrar su clúster. Lea nuestra guía para comenzar con kubectl delete deployment si no está familiarizado con la herramienta.

Ninguno de los docker los comandos tienen el mismo nombre en kubectl delete deployment . Kubernetes expone la funcionalidad a su manera. Las cargas de trabajo en sí mismas son fundamentalmente diferentes:Docker está diseñado para funcionar con un solo contenedor a la vez, mientras que Kubernetes permite la orquestación de varias réplicas.

El primer punto a apreciar es el cambio en la terminología. Docker se refiere a "contenedores", mientras que Kubernetes usa "vainas". Un pod puede ejecutar un contenedor o varias réplicas administradas como una sola unidad. Aparte de este detalle, cuando vea "contenedor" en Docker, debe pensar en un "pod" de Kubernetes. Los términos se utilizarán indistintamente en el resto de este artículo.

Obteniendo detalles de sus contenedores

En Docker, usa docker ps -a para ver todos los contenedores en su máquina.

El equivalente de Kubernetes más cercano es kubectl get pods .

La salida de los dos comandos es bastante diferente. Docker muestra más información sobre la carga de trabajo que está ejecutando el contenedor.

Kubernetes proporcionará detalles sobre la imagen y el comando al usar el describe pod dominio. Necesitas pasar el nombre del pod. Esto brinda información mucho más detallada, utilizando una lista en lugar de una tabla.

Ejecutando Comandos en Contenedores

Docker le permite ejecutar un comando en un contenedor en ejecución usando docker exec .

El equivalente de Kubernetes también se llama exec . Utilice el nombre del pod de Kubernetes en lugar del nombre del contenedor de Docker. El comando se especifica de forma ligeramente diferente:debe estar separado del nombre del pod por un -- secuencia.

Puedes usar el -it banderas para obtener acceso interactivo de la misma manera que Docker. Esta es una abreviatura de --stdin --tty y debe usarse siempre que desee iniciar un shell dentro de un pod. Especifique el nombre del shell, como bash , como comando.

Kubectl es compatible con attach comando para cuando desee adjuntar a un proceso en un contenedor que ya se está ejecutando. Funciona de manera similar a docker attach pero deberías pasar el -it banderas si necesita acceso interactivo.

Visualización de registros de contenedores

Para ver los registros de un contenedor con Docker, utilice los docker logs dominio. Agregando el -f switch "seguirá" los registros para que se transmitan continuamente a su terminal.

logs de Kubectl El comando tiene la misma sintaxis. Proporcione un nombre de pod de la misma manera que Docker acepta un nombre de contenedor.

Tanto Docker como Kubernetes recopilan registros de la salida estándar y el error estándar (stdout /stderr ) flujos de contenedores en funcionamiento. Kubernetes maneja los reinicios de contenedores de manera diferente a Docker. Mientras que en Docker un contenedor reiniciado agrega sus registros a los existentes, Kubernetes crea un nuevo registro para cada ejecución. Puede obtener los registros de un contenedor reemplazado agregando --previous marca a los logs comando.

Creación de contenedores

Los contenedores Docker se crean con run dominio. Así es como podría iniciar un nginx servidor con Docker:

docker run -d --name nginx --restart=always -p 80:80 nginx

Esto crea un contenedor usando nginx imagen base y la configura para que se reinicie automáticamente. El servidor está vinculado al puerto HTTP predeterminado 80.

Kubernetes requiere que piense en abstracciones de alto nivel al agregar contenedores a su clúster. En lugar de ejecutar un contenedor, está creando una implementación para representar su carga de trabajo:

kubectl create deployment --image=nginx nginx

Esto creará un nginx despliegue. Un pod se inicia automáticamente; dentro del pod, habrá un contenedor que ejecuta el servidor web.

La creación de una implementación no vinculará sus contenedores a ningún puerto. El servidor recién creado aún no es accesible. Los puertos deben estar expuestos a través de un servicio . Los pods son efímeros y pueden contener múltiples contenedores replicados. Los servicios definen una colección lógica de pods y le permiten asignarles recursos de red, como una dirección IP y un puerto.

Exponiendo el nginx la implementación en el puerto 80 permitirá acceder al servidor:

kubectl expose deployment nginx --port=80 --name nginx-http

Intentar acceder al puerto 80 en la dirección IP predeterminada del clúster ahora debería dirigirlo a nginx servidor.

Kubectl no es compatible directamente con otras docker run opciones como la creación de volúmenes y los montajes de enlace. Los contenedores que requieren almacenamiento persistente deberán tener volúmenes configurados manualmente a través de kubectl delete deployment comandos o un manifiesto de volumen.

Eliminación de contenedores

Los contenedores de Docker se eliminan mediante docker rm comando con el ID del contenedor.

Kubernetes no le permite eliminar contenedores directamente. En su lugar, trabaja con la implementación que creó la vaina. Use la implementación de eliminación de kubectl delete deployment comando, pasando el nombre de la implementación.

Docker le permite detener un recipiente en lugar de retirarlo. Kubernetes ha eliminado el soporte para esta acción. La forma recomendada de suspender temporalmente una implementación es reducir su cuenta de réplicas a 0. Sin pods en ejecución, la carga de trabajo se detiene de manera efectiva.

kubectl scale --replicas=0 deployment/my-deployment

Cuando esté listo para reanudar la implementación, ejecute scale comando de nuevo. Establezca el nuevo recuento de réplicas en 1 o mas alto. El uso de más réplicas puede aumentar la disponibilidad de su carga de trabajo.

Conclusión

No hay paralelos directos entre Docker CLI y kubectl delete deployment . La mayoría de los comandos de Kubernetes tienen una sintaxis diferente a la de sus homólogos de Docker. Deberá aprender nuevos términos y opciones antes de poder realizar la transición de los flujos de trabajo basados ​​en Docker a Kubernetes.

En muchos casos, no hay kubectl delete deployment alternativa a la capacidad CLI de Docker. La funcionalidad de Docker se centra en el concepto de contenedor. Kubernetes toma eso y lo coloca en el centro de un ecosistema de recursos muy ampliado.

Los contenedores rara vez se tratan de forma aislada. En su lugar, deberá trabajar con recursos como implementaciones, servicios y conjuntos de réplicas. Es por eso que aprender Kubernetes puede parecer un desafío cuando se aborda desde la perspectiva de un usuario de Docker.

Si está familiarizado con los fundamentos de Docker, la transición a Kubernetes debería ser relativamente sencilla. La diferencia principal es que lo que Docker ve como un contenedor generalmente se accede como un "pod" agregado en Kubernetes. Los pods se crean mediante "implementaciones" que representan las cargas de trabajo en su clúster. En caso de duda, consulte el kubectl delete deployment docs para encontrar una coincidencia adecuada para un comando de Docker.


Docker
  1. Algunos comandos DOCKER

  2. Hoja de referencia rápida de comandos de Docker

  3. Estibador

  4. ¿Qué es containerd y cómo se relaciona con Docker y Kubernetes?

  5. Cómo instalar Docker en Fedora 32 o 31 (y alternativas)

De Docker Compose a Kubernetes con Podman

Cómo usar SSH en un contenedor Docker y ejecutar comandos

Cómo implementar pilas de Docker Compose en Kubernetes con Kompose

21 comandos esenciales que todo usuario de Docker debe conocer

Comandos de Docker para gestionar el ciclo de vida de los contenedores (guía definitiva)

40 comandos importantes de Docker para desarrolladores de software