Kubernetes o Docker

Compile, entregue y escale aplicaciones con mayor rapidez con tecnologías de contenedor que funciona mejor de forma conjunta.

Duda entre Kubernetes o Docker

La conversación en torno al uso de Kubernetes o Docker suele limitarse a lo siguiente: ¿uso Docker o Kubernetes? Esto es como comparar una manzana con una tarta de manzana, y es un error común pensar que hay que elegir entre uno y otro.

La diferencia entre Kubernetes y Docker se comprende con mayor facilidad cuando se enmarca como una pregunta en la que ambos pueden ser válidos. El hecho es que no es necesario elegir: Kubernetes y Docker son básicamente tecnologías distintas que funcionan bien de forma conjunta para compilar, entregar y escalar aplicaciones en contenedores.

Docker y el auge de la contenerización

Docker es una tecnología de código abierto (y un formato de archivo de contenedor) que permite automatizar la implementación de aplicaciones como contenedores portátiles autosuficientes que pueden ejecutarse en la nube o en entornos locales. Aunque tiene un nombre similar, Docker, Inc. es una de las compañías que fomenta la tecnología de código abierto de Docker para su ejecución en Linux y Windows en colaboración con proveedores de nube, como Microsoft.

Aunque la idea de aislar entornos no es nueva y existen otros tipos de programas de creación de contenedores, Docker ha crecido hasta convertirse en el formato de contenedor predeterminado en los últimos años. Docker cuenta con Docker Engine, un entorno de ejecución. Permite compilar y ejecutar contenedores en cualquier equipo de desarrollo y, después, almacenar o compartir imágenes de contenedor mediante un registro de contenedor, como Docker Hub o Azure Container Registry.

A medida que las aplicaciones crecen para abarcar varios contenedores implementados en varios servidores, administrarlas se hace también cada vez más complejo. Aunque Docker ofrece un estándar abierto para empaquetar y distribuir aplicaciones en contenedores, las complicaciones pueden multiplicarse rápidamente. ¿Cómo se coordinan y programan varios contenedores? ¿Cómo se comunican entre sí los distintos contenedores de su aplicación? ¿Cómo se escalan distintas instancias de contenedor? Aquí es donde Kubernetes puede resultar útil.

Kubernetes y la orquestación de contenedores

Kubernetes es un software de orquestación de código abierto que ofrece una API para controlar la forma y el lugar en que se ejecutarán los contenedores. Le permite ejecutar contenedores y cargas de trabajo de Docker y dar solución a algunas de las complejidades de funcionamiento al escalar varios contenedores implementados en varios servidores.

Con Kubernetes, puede organizar un clúster de máquinas virtuales y programar los contenedores para que se ejecuten en esas máquinas según los recursos de proceso disponibles y los requisitos de recursos de cada contenedor. Los contenedores se agrupan en pods, que es la unidad operativa básica de Kubernetes. Escale esos contenedores y pods hasta el estado deseado y administre su ciclo de vida para mantener las aplicaciones en funcionamiento.

¿En qué se diferencian Docker y Kubernetes?

Aunque Kubernetes suele compararse con Docker, sería más adecuado comparar Kubernetes con Docker Swarm. Docker Swarm es la tecnología de orquestación de Docker que se centra en la creación de clústeres para contenedores de Docker (que se integran a la perfección con el ecosistema de Docker y usan su propia API).

Una diferencia fundamental entre Kubernetes y Docker es que Kubernetes se ha diseñado para ejecutarse en un clúster, mientras que Docker se ejecuta en un nodo único. Kubernetes es más amplio que Docker Swarm y tiene como finalidad coordinar clústeres de nodos a escala en producción de manera eficiente. Los pods de Kubernetes (que programan unidades que pueden contener uno o más contenedores en el ecosistema de Kubernetes) se distribuyen entre los nodos para ofrecer alta disponibilidad.

Kubernetes y Docker: mejor juntos

Aunque la promesa de los contenedores es que pueden programarse una vez y ejecutarse en cualquier lugar, Kubernetes permite organizar y administrar todos sus recursos de contenedor desde un único plano de control. Facilita la configuración de redes, el equilibrio de carga, la seguridad y el escalado en todos los nodos de Kubernetes donde ejecute sus contenedores. Kubernetes también cuenta con un mecanismo de aislamiento integrado, similar a espacios de nombres, que le permite agrupar recursos de contenedor por permiso de acceso, entornos de almacenamiento provisional y más. Estas construcciones permiten que TI pueda proporcionar con mayor facilidad a los desarrolladores funciones de autoservicio de acceso a recursos y, además, permite a los desarrolladores colaborar incluso en la arquitectura de microservicios más compleja, sin tener que recrear una versión preliminar de toda la aplicación en su entorno de desarrollo. Al combinar los procedimientos de DevOps con contenedores y Kubernetes, se facilita aún más una línea base de arquitectura de microservicios que ofrece una entrega rápida y una orquestación escalable de las aplicaciones nativas de la nube.

En definitiva, use Kubernetes con Docker para:

  • Mejorar la seguridad de su infraestructura y la alta disponibilidad de las aplicaciones. Sus aplicaciones permanecerán conectadas, incluso si se desconectan algunos de los nodos.
  • Conseguir que su aplicación sea más escalable. Si su aplicación empieza a recibir mucha más carga y necesita escalarla horizontalmente para ofrecer una mejor experiencia del usuario, es fácil poner en marcha más contenedores o agregar nodos a un clúster de Kubernetes.

Kubernetes y Docker funcionan juntos. Docker proporciona un estándar abierto para empaquetar y distribuir aplicaciones en contenedores. Con Docker, puede crear y ejecutar contenedores, así como almacenar y compartir imágenes de contenedor. Se puede ejecutar fácilmente una compilación de Docker en un clúster de Kubernetes, pero Kubernetes en sí no es una solución completa. Para optimizar Kubernetes en producción, implemente servicios y herramientas adicionales para administrar la seguridad, la gobernanza, la identidad y el acceso, así como los flujos de trabajo de integración continua o implementación continua (CI/CD) y otros procedimientos de DevOps.

Arquitecturas de soluciones de Kubernetes y Docker en producción

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. Información general
  2. Flujo

Información general

Use AKS para optimizar el escalado horizontal, la recuperación automática, el equilibrio de carga y la administración de secretos.

Flujo

  1. 1 Use un IDE, como Visual Studio, para confirmar los cambios en GitHub.
  2. 2 GitHub desencadena una nueva compilación en Azure DevOps
  3. 3 Azure DevOps empaqueta los microservicios como contenedores y los inserta en Azure Container Registry
  4. 4 Los contenedores se implementan en un clúster de AKS.
  5. 5 Se utiliza Azure Active Directory para proteger el acceso a los recursos.
  6. 6 Los usuarios acceden a los servicios a través de aplicaciones y sitios web.
  7. 7 Los administradores acceden a las aplicaciones a través de un portal de administración aparte.
  8. 8 Los microservicios utilizan bases de datos para almacenar y recuperar información.
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. Información general
  2. Flujo

Información general

DevOps y Kubernetes funcionan mejor juntos. Implementar DevOps seguro con Kubernetes en Azure, le permite alcanzar el equilibrio entre velocidad y seguridad, y proporcionar códigos más rápido a gran escala. Ponga barreras de seguridad en torno a los procesos de desarrollo usando CI/CD con controles de directivas dinámicos y acelere el bucle de comentarios con una supervisión constante. Utilice Azure Pipelines para ofrecer resultados rápido mientras asegura el cumplimiento de directivas críticas con Azure Policy. Azure permite observar las canalizaciones de versión y compilación en tiempo real, así como aplicar auditorías de cumplimiento normativo y reconfiguraciones.

Flujo

  1. 1 Itere, pruebe y depure rápidamente diferentes partes de una aplicación juntas en el mismo clúster de Kubernetes.
  2. 2 El código se combina en un repositorio de GitHub y, después, Azure Pipelines ejecuta compilaciones y pruebas automatizadas.
  3. 3 La imagen de contenedor se registra en Azure Container Registry.
  4. 4 Los clústeres de Kubernetes se aprovisionan con herramientas como Terraform, que instala gráficos de Helm que definen el estado deseado de las configuraciones y los recursos de las aplicaciones.
  5. 5 Los operadores implementan directivas para gobernar las implementaciones en el clúster de AKS.
  6. 6 La canalización de versión ejecuta automáticamente una estrategia de implementación predefinida con cada cambio del código.
  7. 7 Con el uso de Azure Policy, se agrega la aplicación de directivas y auditorías a la canalización de CI/CD.
  8. 8 Con el uso de Azure Monitor, se obtienen telemetría de las aplicaciones, supervisión del estado de los contenedores y análisis de registros en tiempo real.
  9. 9 Se usan conclusiones para solucionar problemas y se envían a los planes del siguiente sprint.

Aproveche los puntos fuertes de Kubernetes con Azure

Implementar y administrar sus aplicaciones en contenedores es fácil con Azure Kubernetes Service (AKS). AKS ofrece Kubernetes sin servidor, una experiencia de CI/CD integrada y seguridad y gobernanza de categoría empresarial. Una a sus equipos de desarrollo y de operaciones en una sola plataforma para crear, entregar y escalar aplicaciones con confianza.

Introducción a Kubernetes y Docker