Diferencias entre contenedores y máquinas virtuales
Resumen
Objetivo de la clase
El objetivo del profesor era introducir a los estudiantes en los conceptos fundamentales de contenedores y Kubernetes, estableciendo las bases teóricas necesarias antes de proceder con implementaciones prácticas. Se buscaba que los estudiantes comprendieran las ventajas de los contenedores sobre las máquinas virtuales y entendieran la arquitectura básica de Kubernetes.
Habilidades desarrolladas
Análisis comparativo: Capacidad para evaluar las diferencias entre contenedores y máquinas virtuales
Comprensión de arquitecturas: Entendimiento de la estructura y componentes de Kubernetes
Pensamiento sistémico: Visualización de cómo los diferentes componentes interactúan en un sistema de orquestación
Identificación de problemas: Reconocimiento de las limitaciones de las tecnologías tradicionales
Conceptos clave
[0:35] Contenedores: Unidades de software que empaquetan código y dependencias para ejecutarse de manera consistente
[0:16] Kubernetes: Plataforma de orquestación de contenedores para automatizar despliegue, escalado y gestión
[0:35] Máquinas virtuales: Tecnología previa que virtualizaba sistemas operativos completos
[1:20] Autoescalamiento: Capacidad de ajustar automáticamente recursos según la demanda
[1:37] Portabilidad: Característica que permite ejecutar contenedores en diferentes entornos
[2:08] Optimización de recursos: Uso eficiente de recursos compartiendo el sistema operativo base
[3:10] Orientación a tareas específicas: Diseño de contenedores para funciones particulares
[3:39] Mascotas vs Ganado: Filosofía de infraestructura desechable vs servidores únicos
[6:52] Pod: Unidad básica de despliegue en Kubernetes que agrupa contenedores relacionados
[7:35] Deployment: Plantilla de configuración para crear y gestionar réplicas de pods
[8:15] Service: Objeto que balancea carga entre pods usando labels
[9:41] Ingress: Componente que gestiona acceso externo, certificados SSL y enrutamiento por dominios
Palabras clave importantes
Docker
Escalabilidad
Resiliencia
Balanceador de carga
Labels
Cluster IP
Proxy inverso
Certificados SSL
Horizontal Pod Autoscaler
Hechos importantes
[1:26] Los contenedores inician en milisegundos vs varios segundos para máquinas virtuales
[2:16] En máquinas virtuales, el 80% de recursos son consumidos por el sistema operativo
[4:22] Docker es la herramienta principal para construir contenedores
[8:46] Existen diferentes tipos de servicios: balanceador externo, interno y cluster IP
[9:09] Los servicios cluster IP son los más utilizados para comunicación interna
[10:23] Horizontal pod autoscaler es un concepto avanzado de Kubernetes
Principales puntos de datos
No se presentaron datos numéricos específicos o métricas cuantitativas en esta clase, ya que se enfocó en conceptos teóricos y arquitecturales fundamentales.
Kubernetes, tambien llamado K8s (donde el 8 significa las letras entre la K y S), es una tecnologia muy importante que se utilizar para orquestacion de contenedores. Antes de Kubernetes, se ocupa DockerSwarm, pero Kubernetes supera mucho a DockerSwarm que ya no sigue siendo desarrollado.
Kubernetes tiene dos tipos de nodos: Master y Worker, donde como se intuye el nodo Master (Control Plane) coordina el trabajo de los nodos Worker.
Kubernetes: La Plataforma de Orquestación
Kubernetes se define como la plataforma para automatizar el despliegue, escalado y gestión de contenedores. Su arquitectura se basa en varios componentes clave que interactúan entre sí:
A. Componentes Básicos
Pod: Es la unidad básica de despliegue en Kubernetes. Agrupa uno o más contenedores relacionados.
Deployment: Es una plantilla de configuración que permite crear y gestionar las réplicas de los pods (asegura que el número deseado de pods esté corriendo).
B. Redes y Acceso
Service: Es el objeto encargado de balancear la carga entre los pods.
Utiliza labels (etiquetas) para identificar a qué pods enviar el tráfico.
Tipos de Servicios: Existen balanceadores externos, internos y Cluster IP.
Nota: Los servicios Cluster IP son los más utilizados para la comunicación interna.
Ingress: Gestiona el acceso externo a los servicios.
Se encarga de los certificados SSL y del enrutamiento basado en dominios.
Conceptos Avanzados y Ventajas
Autoescalamiento (Horizontal Pod Autoscaler): Es la capacidad avanzada de ajustar automáticamente los recursos (cantidad de pods) según la demanda del sistema.
Portabilidad: Los contenedores permiten ejecutar la aplicación en diferentes entornos sin cambios.
Orientación a tareas: Los contenedores se diseñan para cumplir funciones o tareas particulares.
Contenedores vs. Máquinas Virtuales
Máquinas Virtuales (VMs):
Es una tecnología previa que virtualiza sistemas operativos completos.
Ineficiencia: En las VMs, aproximadamente el 80% de los recursos son consumidos por el sistema operativo, dejando poco para la aplicación.
Lentitud: Tardan varios segundos en iniciar.
Filosofía: Se tratan como "Mascotas" (servidores únicos que se cuidan).
Contenedores:
Son unidades de software que empaquetan solo el código y sus dependencias para ejecutar consistentemente.
Optimización: Usan eficientemente los recursos al compartir el sistema operativo base del host.
Velocidad: Inician en milisegundos.
Filosofía: Se tratan como "Ganado" (infraestructura desechable y reemplazable).
Herramienta:Docker es la herramienta principal para construir estos contenedores.