26

Kubernetes, despliega aplicaciones con Docker

133615Puntos

hace 2 años

Curso de Kubernetes
Curso de Kubernetes

Curso de Kubernetes

Empezaste a poner tus aplicaciones en contenedores, tus proyectos tienen uno o varios Dockerfiles y ahora te encuentras con la necesidad de poder desplegar tus aplicaciones. Escuchaste de Kubernetes pero algunos conceptos como pods, services, balancers, labels y selectors son un tanto confusos y parecen complejos a primera vista. No te preocupes, el objetivo del curso es explicar en detalle estos temas y construir juntos un ejemplo práctico de una app desplegada en Kubernetes haciendo uso de todos estos conceptos.

La forma en que se despliegan aplicaciones en producción evoluciona y cambia todos los días, ahora con el auge de los microservicios también llegan nuevas herramientas que nos ayudan a hacer el trabajo de DevOps de una manera más sencilla para desplegar este tipo de arquitectura de aplicaciones.

Para esto tenemos herramientas como Docker Swarn o Kubernetes que nos ayudan a la interconección con los microservicios, hoy vamos a hablar de Kubernetes.

¿Qué es Kubernetes?

Es un sistema de código abierto, desarrollado por Google, para la administración de aplicaciones (micro-servicios), despliegue automático y fácil escalamiento de estas aplicaciones.

La primera versión de Kubernetes salió en junio de 2014 y en este momento la versión es la 1.8.1 que se lanzó el 12 de octubre.

¿Para qué sirve Kubernetes?

Kubernetes ayuda a la administración de aplicaciones, estas aplicaciones corren en containers de Docker. Tienen un panel de administración que, de manera gráfica, permite aumentar el número de containers de un micro-servicio y con esto puedes tener un escalamiento sencillo. También cuenta con una herramienta CLI que permite hacer la configuración desde la terminal.

Usado en conjunto con herramientas como Jenkins, Travis o CircleCI se puede hacer un despliegue automático de estos micro-servicios.

Algunos conceptos clave

Pods
Un pod es un componente que está en un container, se pueden tener tantos pods como se necesiten de un misma aplicación corriendo. Esta es la forma en que se escala, aumentando el número de pods de una aplicación.

Services
Un service no es algo diferente a un conjunto de pods (de la misma aplicación) que trabajan juntos. Estos services tienen algo llamado service discovery que permite conectar a los pods entre sí. También cuentan con un balanceador de carga para distribuir el tráfico a cada pod.

Arquitectura de Kubernetes

Kubernetes tiene una arquitectura conocida como maestro-esclavo, donde tenemos un nodo maestro en el que se encuentra el API server, con el cual podemos administrar Kubernetes y los nodos esclavos. También se encuentra aquí el Controller Manager que se encarga de administrar los pods (cuántos debe correr, reiniciarlos en caso de falla). Luego tenemos el Nodo esclavo, donde corren los pods y adicionalmente está kube-proxy, que se encarga de distribuir las peticiones a los diferentes pods según la demanda.

Arquitectura de Kubernetes

Dónde podemos instalar y usar Kubernetes

Kubernetes puede ser instalado y usado en AWS con una herramienta propia llamada kops, en Microsoft Azure tiene un asiste que ayuda a instalar de manera gráfica (como casi todo en Azure).

Como vimos en esta introducción, Kubernetes es una herramienta muy útil y sencilla de usar, permite de manera amigable realizar orquestación de microservicios que corren en containers de Docker. Cuéntame si conocías algo de Kubernetes y cómo lo usas, o deja todas tus dudas en los comentarios del post.

Curso de Kubernetes
Curso de Kubernetes

Curso de Kubernetes

Empezaste a poner tus aplicaciones en contenedores, tus proyectos tienen uno o varios Dockerfiles y ahora te encuentras con la necesidad de poder desplegar tus aplicaciones. Escuchaste de Kubernetes pero algunos conceptos como pods, services, balancers, labels y selectors son un tanto confusos y parecen complejos a primera vista. No te preocupes, el objetivo del curso es explicar en detalle estos temas y construir juntos un ejemplo práctico de una app desplegada en Kubernetes haciendo uso de todos estos conceptos.
Diego Alexander
Diego Alexander
@gollum23

133615Puntos

hace 2 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
3
32610Puntos

Muy buen artículo Diego. Entonces los Kubernetes, ¿facilitan la creación de Docker Swarn o es una alternativa a estos?

2
133615Puntos
2 años

Hola, es una alternativa para la orquestación de contenedores.

1
32610Puntos
2 años

Mi primer artículo guardado en favoritos para cuando tenga una cuenta en AWS 😄

3
133615Puntos
2 años

@osmadi puedes usar minikube para levantar un cluster de kubernetes en local y probar, no necesitas tener aws

0
4136Puntos
un año

@GOLLUM23 cuales serian los pasos o algun link, para usar kubernetes en local.

Ver todas las respuestas

1
6741Puntos

Gracias por la información. ¿Un nodo Kubernetes es igual a decir a un ecostistema donde corre una aplicación, incorporando tantos pods posibles para escalar con mayor facilidad? ¿Se puede considerar Kubernetes como un balanceador de peticiones a una aplicación?

0
7920Puntos
2 años

Básicamente se pueden ver los nodos como equipos fìsicos o virtuales en donde pueden correr uno o más servicios con los pods correspondientes (los cuales claro puede ser escalados), y no necesariamente como agente de balance de carga ya que, aunque puede hacerlo, su rol primordial es la gestión de los contenedores (pods) y propiamente su orquestación evitando caídas del servicio (entre otras cosas)

1
4614Puntos

Pensé que ibas a mostrar como desplegar contenedores con kubernetes, una manera fácil de utilizar kubernetes es con rancher pero pues seria bueno ver algo mas a fondo de kubernetes. saludos.

2
133615Puntos
2 años

Esta es una introducción con los conceptos claves, también pienso escribir un post de como montar kubernetes en aws.

0
6741Puntos
2 años

La observación es válida, sin embargo es bastante enriquecedora la información compartida.