De pods a contenedores

Clase 3 de 33Curso de Kubernetes (2019)

Resumen

¿Qué son Docker y Kubernetes y cómo se diferencian?

Si alguna vez te has adentrado en el mundo de las aplicaciones en la nube, sin duda has escuchado hablar de Docker y Kubernetes. Estas dos tecnologías son piedra angular en la gestión y orquestación de contenedores. Docker gestiona el ciclo de vida de los contenedores, permitiendo a los desarrolladores correr, parar y configurar recursos como memoria y CPU. Por otro lado, Kubernetes va un paso más allá en la orquestación. Permite la gestión de múltiples nodos en un clúster, asegurando la comunicación entre aplicaciones y facilitando la escalabilidad.

Comparativa: Open Source y Comunidad

  • Docker: Inicialmente concebido como un proyecto open source, ahora bajo el nombre de Moby, ofrece varios servicios para la gestión de contenedores.
  • Kubernetes: Nacido de la mano de Google, fue adoptado por la comunidad y forma parte del Cloud Native Computing Foundation (CNCF). Su naturaleza open source permite una colaboración continua y el aporte de múltiples promotores.

Ambos han sido abrazados por la comunidad y ahora son ofrecidos por varios proveedores de servicios en la nube como Amazon AWS, Azure, DigitalOcean, entre otros.

¿Cuáles son los conceptos clave de Kubernetes?

Kubernetes no solo orquesta aplicaciones, sino que también proporciona herramientas avanzadas para la gestión de la infraestructura y servicios:

  • Replica Sets: Aseguran que múltiples réplicas de aplicaciones estén siempre funcionando, protegiendo la disponibilidad ante fallos.
  • Balanceador de carga: Interno y externo, facilita la distribución automática del tráfico de red, mejorando el rendimiento y la confiabilidad sin requerir servicios adicionales como Nginx o HAProxy.
  • Rollouts de código: Kubernetes soporta despliegues continuos con estrategias diversas como rolling updates, canary deploys y blue-green.

Estas funcionalidades hacen de Kubernetes una solución robusta y versátil para manejar aplicaciones modernos en la nube.

Escalado y autoescalado

Kubernetes permite configuraciones detalladas de autoescalado, basado en métricas de uso del sistema, como CPU o memoria. Los usuarios pueden automáticamente aumentar o reducir el número de réplicas de una aplicación según la demanda del sistema.

Control de acceso basado en roles (RBAC)

Esta potente característica permite establecer políticas finas de acceso, asegurando que diferentes equipos dentro de una organización tengan los permisos adecuados para las tareas que necesitan realizar. Esto es esencial para mantener la seguridad y eficiencia en entornos de trabajo colaborativos.

¿Qué es un Pod en Kubernetes y por qué es crucial?

El Pod es la mínima unidad de orquestación dentro de Kubernetes. Es un grupo de contenedores que comparten red e IP, permitiendo una intercomunicación fluida como si fueran procesos en el mismo sistema.

Características de los Pods

  • Unidad atómica: Los pods pueden tener uno o varios contenedores colaborando juntos. Esto es esencial para aplicaciones que requieren múltiples funcionalidades como sidecars.
  • Compartición de red: Todos los contenedores en un Pod comparten la misma dirección IP, facilitando la gestión y comunicación interna.
  • Escalabilidad: Cuando un Pod necesita escalar, Kubernetes crea nuevas copias del Pod original en lugar de añadir más contenedores al existente.

Recordar que un Pod es más que solo un contenedor es clave para entender la eficacia y flexibilidad de Kubernetes. Es el que facilita el diseño de aplicaciones que pueden ser escaladas y distribuidas para maximizar el uso de recursos y garantizar el uptime.

Kubernetes continúa evolucionando, ofreciendo funcionalidades avanzadas que permiten una gestión eficiente y dinámica de las aplicaciones en la nube. Aprender y entender estos conceptos es vital para aprovechar al máximo lo que estos sistemas ofrecen.