Kubernertes & AWS

Nicolas Restrepo

Sr. frontend,

but I like Devops 😎

Con que problemas nos enfrentamos al desarrollar software ?

Construir

Distribuir

Ejecutar

Problemas al Construir

  • Dependencias de desarollo (paquetes)
  • Versiones de entornos de ejecución (runtime)
  • Equivalencia de entornos de desarollo 
  • Versiones/compatibilidad  de 3rd party 
 

Problemas al Distribuir

  • Output de build heterogeo (múltiples compilaciones)
  • Acceso a servidores productivos (No tenemos acceso al servidor)
  • Ejecución nativa vs virtualizada
  • Entornos Serverless
  • Dependencia de aplicación (paquetes, runtime)
  • Compatibilidad de sistema operativo
  • Disponibilidad de servicios externos
  • Recursos de hardware

Problemas al Ejecutar

Text

Build, ship and run your code Amywhere

El Problema

La Solucion

La tecnologia "lo resolvio", usando Virtualización.

Maquinas Virtuales.

Pesadas

  • En el orden los GB
  • Muchas VMs en el mismo host suelen repetirse en lo que contienen

Administración costosa

  • Una VM tiene que ser administrada como cualquier otra computadora: Patching, updates, etc.
  • Hay que administrar la seguridad interna entre apps.

"Lentas"

  • Correr nuestro código en una VM implica no solo arrancar nuestras aplicaciones, sino también esperar el boot de la VM

Entonces los Contenedores ? 

Versátiles

  • En el orden de los MB
  • tiene todas las dependencias que necesita para funcionar correctamente
  • Funcionan igual en cualquier lado

Eficientes

  • Comparten archivos inmutable con otros contenedores
  • Solo se ejecutan proceso, no un SS.OO. Completo

Aislados

  • Lo que pasa en el container se queda en el container
  • No pueden alterar su entorno de ejecución(a menos que se lo indiquemos)

Entonces, Que es kubernetes ? 🤔

Es una herramienta open source para la orquestación de contenedores.

Docker y Kubernetes

  • Docker se encarga principalmente de gestionar los contenedores.
  • Kubernetes es una evolución de proyectos de Google Borg & Omega.
  • Kubernetes pertenece a la CNCF (Cloud Native Computing Foundation).
  • Todos los cloud providers (GCP/AWS/Azure/DO) ofrecen servicios de managed k8s utilizando Docker como su container runtime
  • s la plataforma más extensiva para orquestación de servicios e infraestructura

Kubernetes en la practica

  • K8s permite correr varias réplicas y asegurarse que todas se encuentren funcionando.
  • Provee un balanceador de carga interno o externo automáticamente para nuestros servicios.
  • Definir diferentes mecanismos para hacer roll-outs de código.
  • Políticas de scaling automáticas.
  • Jobs batch.
  • Correr servicios con datos stateful.

 

Recursos

KUBERNETES imperativo vs declarativo

  • Kubernetes hace énfasis en ser un sistema declarativo
  • Declarativo: “Quiero una taza de té”
  • Imperativo: “Hervir agua, agregar hojas de té y servir en una taza”
  • Declarativo parece sencillo (siempre y cuando uno sepa cómo hacerlo)
  • Todo en Kubernetes se crea desde un spec que describe cuál es el estado deseado del sistema
  • Kubernetes constantemente converge con esa especificación

En Local

Demo

Kubernertes in AWS

By nicolas restrepo

Kubernertes in AWS

  • 267