Slide 1

Slide 1 text

Cómo ahorramos MILLONES de dólares con Kubernetes Pablo Fredrikson - @pablokbs

Slide 2

Slide 2 text

#nerdearla Pablo Fredrikson Staff SRE @ Split.io Usando Docker, Kubernetes y AWS @pablokbs 3 años con Kubernetes en Producción Corriendo ~3500 instancias en AWS 14 años con Linux Mi primera distro fue OpenSUSE

Slide 3

Slide 3 text

#nerdearla Docker Aplicaciones en Contenedores @pablokbs contenedor imagen # Dockerfile FROM ubuntu RUN apt-get install apache2 CMD [ “apache2” ] build run

Slide 4

Slide 4 text

#nerdearla Docker en Producción Cómo usar Docker en el mundo real @pablokbs $ docker run -d pablokbs/miapp-a $ docker run -d pablokbs/miapp-b $ docker run -d pablokbs/miapp-c

Slide 5

Slide 5 text

#nerdearla Docker en Producción Cómo usar Docker en el mundo real @pablokbs # docker-compose.yaml services: miapp-a: image: pablokbs/miapp-a environment: - MYSQL_USER: root - MYSQL_PASS: n3rd miapp-b: image: pablokbs/miapp-b miapp-c: image: pablokbs/miapp-c

Slide 6

Slide 6 text

#nerdearla Docker en Producción ¿Qué pasa si tenemos muchas instancias? @pablokbs

Slide 7

Slide 7 text

#nerdearla @pablokbs Mejor usemos Kubernetes

Slide 8

Slide 8 text

#nerdearla Kubernetes Pods: Set de contenedores @pablokbs

Slide 9

Slide 9 text

#nerdearla Kubernetes Manejando instancias como ganado @pablokbs

Slide 10

Slide 10 text

#nerdearla Kubernetes Manejando instancias como ganado @pablokbs

Slide 11

Slide 11 text

#nerdearla Kubernetes Manejando instancias como ganado @pablokbs

Slide 12

Slide 12 text

#nerdearla Kubernetes Manejando instancias como ganado @pablokbs

Slide 13

Slide 13 text

#nerdearla Kubernetes Manejando instancias como ganado @pablokbs

Slide 14

Slide 14 text

#nerdearla Kubernetes Manejando instancias como ganado @pablokbs

Slide 15

Slide 15 text

#nerdearla Kubernetes Escalamiento de Pods / Horizontal Pod Autoscaler @pablokbs

Slide 16

Slide 16 text

#nerdearla Kubernetes Escalamiento de Pods / Horizontal Pod Autoscaler +pods @pablokbs

Slide 17

Slide 17 text

#nerdearla Kubernetes Escalamiento de Instancias / Cluster Autoscaler @pablokbs cluster-autoscaler

Slide 18

Slide 18 text

#nerdearla Kubernetes Escalamiento de Instancias / Cluster Autoscaler +instancias @pablokbs

Slide 19

Slide 19 text

#nerdearla Kubernetes ¿Cuántos pods podemos correr en una instancia? memRequest: 128MB memLimit: 512MB cpuRequest: 100m cpuLimit: 750m memRequest: 512MB memLimit: 1024MB Total Memory: 2048MB memRequest: 1024MB memLimit: 2048MB memRequest: 256MB memLimit: 512MB 256MB @pablokbs

Slide 20

Slide 20 text

#nerdearla Kubernetes ¿Cuántos pods podemos correr en una instancia? memRequest: 128MB memLimit: 512MB cpuRequest: 100m cpuLimit: 750m memRequest: 512MB memLimit: 1024MB Total Memory: 2048MB memRequest: 1024MB memLimit: 2048MB memRequest: 256MB memLimit: 512MB 256MB memRequest: 128MB memLimit: 512MB cpuRequest: 100m cpuLimit: 750m @pablokbs

Slide 21

Slide 21 text

#nerdearla Kubernetes Siendo eficiente al asignar recursos memRequest: 483MB memLimit: 1024MB Total Memory: 2048MB memRequest: 790MB memLimit: 2048MB memRequest: 201MB memLimit: 512MB 243MB memRequest: 126MB memLimit: 512MB memRequest: 128MB memLimit: 512MB cpuRequest: 100m cpuLimit: 750m memRequest: 128MB memLimit: 512MB cpuRequest: 100m cpuLimit: 750m @pablokbs

Slide 22

Slide 22 text

#nerdearla Kubernetes Instancias = Ganado / Spot!? @pablokbs

Slide 23

Slide 23 text

#nerdearla Kubernetes Instancias = Ganado / Spot?! @pablokbs

Slide 24

Slide 24 text

#nerdearla Kubernetes Instancias = Ganado / Spot! @pablokbs

Slide 25

Slide 25 text

#nerdearla Kubernetes Instancias Spot (AWS) @pablokbs ● Instancias que varían de precio basado en la demanda ● Aproximadamente 50% del precio de las On-Demand ● Cuando el precio sube del valor que pagaste, la instancia se destruye (con un aviso de 2 minutos) ● Co-co-co-combo con Kubernetes!

Slide 26

Slide 26 text

#nerdearla Kubernetes Instancias Spot (AWS) @pablokbs ● 70% de nuestras instancias en producción son Spot (las otras son RI) ● Creamos un servicio que sube el bid para no perder las Instancias Spot* (después lo reemplazamos con una configuración de ASG) ● Con aws-node-termination-handler podemos drenar la instancia antes de que muera ● Hay tipos de instancias que son más estables que otras

Slide 27

Slide 27 text

#nerdearla ● Horizontal Pod Autoscaler: Escalando pods horizontalmente, basado en diferentes reglas: ○ Uso de Memoria / CPU: Más tráfico = Más uso de recursos ○ Metricas de Pods: Requests/segundo ○ Métricas externas: RabbitMQ ● Vertical Autoscaler: Escalando pods verticalmente, basado en uso de recursos (cpu/memoria) ● Cluster Autoscaler: Escalando instancias horizontalmente, basado en eventos de Kubernetes ● Instancias Spot: Usando instancias más baratas que son descartables @pablokbs Kubernetes Nodos dinámicos

Slide 28

Slide 28 text

#nerdearla Kubernetes Nodos dinámicos @pablokbs

Slide 29

Slide 29 text

#nerdearla ¿Cuánto ahorramos? USD 3,4M @pablokbs

Slide 30

Slide 30 text

¿Kubernetes es la solución mágica para todos?

Slide 31

Slide 31 text

#nerdearla Docker Docker-compose Kubernetes ● 1-2 nodos ● Poco tiempo ● No sabés usar compose ● 1-5 nodos ● Poco tiempo para aprender k8s ● Sin pronóstico de crecimiento ● +3 nodos ● Pronóstico de crecimiento ● Entornos dinámicos ● Aprender! Cuándo usar Docker vs Compose vs k8s @pablokbs

Slide 32

Slide 32 text

#nerdearla ¿Preguntas? /PELADONERD @pablokbs slack.peladonerd.com