Repaso de contenedores e introducción a k8s

2/33
Recursos
Transcripción

¿Qué son los contenedores y por qué son relevantes?

Para avanzar en un curso de Kubernetes, es esencial entender los fundamentos y preconceptos relacionados con los contenedores. En este contexto, es importante recordar que los contenedores no son una función primaria del kernel de Linux, sino una abstracción que combina distintas tecnologías para crear un entorno de aplicaciones aislado y eficiente.

¿Cuáles son las tecnologías que forman los contenedores?

Los contenedores se construyen principalmente a partir de tres tecnologías clave:

  1. Control Groups (cgroups): Permiten que un contenedor o proceso tenga sus recursos limitados y aislados, como memoria, CPU e I/O (disco o red). Esto es crucial para asignar recursos a aplicaciones específicas en un sistema compartido.

  2. Namespaces: Ofrecen aislamiento de procesos, red y sistema de archivos. Algunos namespaces importantes son:

  • Mount namespace: Limita la visibilidad de directorios y archivos entre procesos.
  • Networking namespace: Proporciona a cada contenedor su propia pila y configuración de red.
  • PID namespace: Aísla los procesos para que cada contenedor vea solo sus procesos internos.
  1. Chroot: Esta tecnología permite que los procesos vean solo los archivos dentro del contenedor específico, asegurando que las aplicaciones no accedan a datos externos.

¿Cómo se comparan los contenedores con las máquinas virtuales?

En el mundo de la computación en la nube, las máquinas virtuales (VMs) y los contenedores son herramientas esenciales. La principal diferencia radica en cómo manejan los recursos del sistema operativo:

  • Máquinas virtuales: Emplean un hipervisor para ejecutar múltiples sistemas operativos invitados, cada uno con su propio kernel. Son más pesadas porque cada instancia virtual requiere un sistema operativo completo.

  • Contenedores: Comparten el mismo kernel del sistema operativo host, lo que los hace más livianos y eficientes en el uso de recursos. Las aplicaciones en contenedores comparten las bibliotecas del sistema, lo cual es viable gracias al aislamiento proporcionado por cgroups y namespaces.

¿Por qué estos fundamentos son importantes para aprender Kubernetes?

Kubernetes se basa en estas tecnologías de contenedores para orquestar aplicaciones en un entorno distribuido. Usando un "container runtime" como Docker, Kubernetes administra y despliega varias instancias de aplicaciones (pods) en un clúster, garantizando eficiencia y aislamiento. Antes de profundizar en Kubernetes, es crucial entender cómo los contenedores funcionan a nivel de sistema.

¿Qué beneficios ofrecen los contenedores?

  • Portabilidad: Las aplicaciones y sus dependencias se empaquetan juntas, facilitando el movimiento entre diferentes entornos.
  • Velocidad de despliegue: Arrancar un contenedor es mucho más rápido que iniciar una máquina virtual.
  • Aislamiento: Cada aplicación se ejecuta en su entorno, minimizando conflictos entre dependencias.
  • Uso eficiente de recursos: Compartir el kernel del sistema reduce la sobrecarga comparado con VMs.

¿Deseas explorar más sobre contenedores?

Para aquellos que buscan una comprensión más detallada de cómo funcionan los contenedores, se recomienda explorar cursos sobre Docker y tecnologías relacionadas. Platzi ofrece cursos específicos que profundizan en el funcionamiento interno de Docker, proporcionando una base sólida para el aprendizaje de Kubernetes.

Aportes 23

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Contenedor: no es una entidad. Son distintas tecnologias que trabajando en conjunto crean un contenedor.

Las 3 tecnologias son:

CGroups: Asignan a cada contenedor/proceso los recursos va a utilizar (memoria, disco, cpu). Limitan el uso de recursos del sistema operativo para cada contenedor.

Chroot: Nos permite que nuestro proceso/container tenga visibilidad sobre archivos donde tiene que trabajar y no acceder a otros recursos del sistema.

Namespaces: (son 7, aqui los mas importantes):

  • Mount: Nos permite que nuestro proceso tenga una visibilidad reducida de los directorios. Esto permite que dos contenedores que trabajen sobre un sistema de archivos no se interfieran entre si.

  • Networking: Permite que cada contenedor tenga su dirección IP, su tabla de rutas, su interfaz de red, y que no interfiera con otros contenedores.
    Concepto de POD: Entidad atomica scheduleable - Entidad sobre la cual kubernetes va a ejecutar los contenedores. (se verá en detalle más adelante).

  • PID o de proceso: si ejecutamos un ps cuando ejecutamos nuestro contenedor, vamos a ver que nuestro contenedor es el process id 1 y no vemos todo el resto de los procesos del SO. Esto es posible gracias al namespace de procesos. (se verá en detalle más adelante).

Kubernetes
Desde el principio, Kubernetes fue diseñado para ser un entorno para la creación de aplicaciones distribuidas de contenedores. El objetivo principal de Kubernetes es un sistema para la construcción, el funcionamiento y la gestión de sistemas distribuidos.

Además se basa en la experiencia de muchos años de Google trabajando con los contenedores de Linux. Es, en cierto modo, una réplica de lo que Google ha estado haciendo durante mucho tiempo, pero, esta vez, adaptado a Dockers, entonces aporta esa experiencia en la forma de organizar y desplegar una aplicación en contenedores.

Otra buena característica de Kubernetes es que se puede configurar el controlador para mantener activos el mismo número de contenedores, es decir, si por algún motivo se detuviese algún contenedor, se creará un nuevo contenedor con una copia casi exacta, del 99%.

Y por último (que no quiero decir que no tenga más características) es el escalado ya sea “hacia arriba” o “hacia abajo”; con Kubernetes es fácil, solo se tiene que especificar la cantidad de nuevas aplicaciones y si quieres hacia arriba o hacia abajo a través de un comando.

en cuanto a Docker Swarm, es la herramienta nativa para el cluster de Docker. Con Docker Swarm tenemos lo que llamaremos Swarm Master que será el responsable del cluster, también tendremos nodos que debe ser accesible por el Master y cada uno de ellos contendrá uno o varios contenedores.

Al contrario que Kubernetes, Swarm es un “esfuerzo” por parte de Docker para extender la API de Docker existente para hacer que un conjunto de máquinas se vean como una sola API de Docker.

Para los que no se conforman con "I dont’ care how if it works"
Como funciona docker internamente

Una correción a los slides del profe. A diferencia de las virtual machines, los contenedores se ejecutan sobre un docker engine y no sobre un hypervisor.

Que bueno, esperaba mucho este curso, me encanto el primero que dio hace rato.

Namespaces: Aislan los componentes del sistema dentro de un contenedor.
Cgroups: Administran esos contenedores, cuanto de RAM se le irá a cada uno por ejemplo.
Chroot: Aisla los archivos.

¿Qué significa Kubernetes? ¿Qué significa K8S?
El nombre Kubernetes proviene del griego y significa timonel o piloto. Es la raíz de gobernador y de cibernética. K8s es una abrevación que se obtiene al reemplazar las ocho letras “ubernete” con el número 8.

Hola compañer@s,

Yo en documentaciones pasadas he leido que una imagen se compone de capas y la base de esta pila de capas es el SO que puede ser debian,Centos,etc.

Porque esto no fue considerado en la planilla?

Dejo imagen de referencia.!

no carga el video, a alguno le pasa lo mismo ?

Esta comparacion de las VM con contenedores es errada. En el caso de las VM, el hypervisor va justo encima de la arquitectura mientras que los contenedores no utilizan hypervisors. Les dejo un enlace a un recurso muy bueno donde aprender sobre ello. https://www.youtube.com/watch?v=L1ie8negCjc

repasando 😃

Excelente profesor 😃

¿Que significa k8s?
k8s es una manera de decir kubernetes o kubernets en ingles

Primer clase, y ya tengo ganas de hacerla presencial. Los menos de 10 minutos quedan un poco chicos para todo el material.
Profe sos un crack… cuando sea grande quiero ser como vos XD

Info de CGroupsm para limitar recursos de contenedores

  • contenedores=namespace+cgroup+chroot+…
    • namespace: vista de recursos de SO (sandbox, aislar).
    • Cgroup: limitan y miden los recursos del SO.
    • Chroot: cambian el root directory de un proceso.

Es bueno realizar una aclaración a la última imagen que nos comparte Marcos. La capa de Hypervisor en el ámbito de Containers mas bien deberia de ser el daemon de Docker.

Los contenedores cuanto procesamiento pueden ejecutar?

Exelente forma de explicar!

Entendido, vamos a seguir aprendiendo…

Super 😃 vamos por uno más

repaso

Excelente resumen de K8s