SlideShare una empresa de Scribd logo
Kubernetes en Restorando
Migrando los primeros servicios
¿Quiénes somos?
Rodrigo Campos
rata
Juan Barreneche
jbarreneche
@jbarreneche
Agenda
● Kubernetes Intro
● Primeros pasos con Kubernetes en Restorando
○ Cosas que nos fueron útiles
○ Cosas que no, pero encontramos otra forma de hacerlas
○ Cosas que nos faltan resolver
Kubernetes features
● Automatic binpacking
● Horizontal scaling
● Automated rollouts and rollbacks
● Storage orchestration
● Self-healing
● Service discovery and load balancing
● Secret and configuration management
● Batch execution
Node
Kubelet
Pod Pod Pod
Container Container Container
Node
Kubelet
Pod Pod Pod
Container Container Container
Kubernetes basic architecture
Node
Kubelet
Pod Pod Pod
Container Container Container
Kubernetes
Master
¿Qué son los pods?
● Conjunto de 1 o más containers
● Estos containers SIEMPRE se colocan en un mismo nodo
○ Modela grupo de apps que se corren en un host
● Comparten IP, namespace de red y storage
● Ejemplos
○ File puller + web server: comparten volumen para servir los archivos, reusables por
separado
○ App + interfaz con “el mundo exterior”
○ En Restorando: nginx, heka y app
Deployments
● Especifica el “template” de los pods
● Desired state: típicamente se especifica en un yaml/json
● Especificamos y nos asegura (entre otras cosas):
○ Que siempre haya la cantidad de “réplicas” que especificamos
■ Si un nodo muere, container crashea, etc.
○ Que los pods estén “vivos” y no reciban tráfico hasta estar listos
■ Hay chequeos especiales para esto que veremos más adelante
○ Límites y garantías de recursos (CPU, mem)
○ Deploys sin downtime (si queremos)
- name: nginx
image: <registry>/nginx:v1.0
readinessProbe:
initialDelaySeconds: 5
httpGet:
path: /health
port: 80
livenessProbe:
initialDelaySeconds: 5
httpGet:
path: /health
port: 80
lifecycle:
preStop:
exec:
command: ["nginx", "-s", "quit"]
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: wido-web
spec:
replicas: 1
template:
metadata:
labels:
project: wido
role: web
containers:
- name: app
image: <registry>/wido:1.0
Ejemplo de deployment
Hacer un deploy
● Se baja un pod viejo
● Se levanta un pod nuevo
● No se sigue hasta que está listo para recibir tráfico. Cuando está listo, se
repite hasta N
● El nodo lo elige k8s automáticamente, se pueden poner restricciones
○ O hasta crear nuestro propio scheduler y usarlo en su lugar!
¿Y lo de configuration management?
● Otro yaml!
● El objeto se llama “configMap”
● Se puede montar en un path del fs o usarse como variable de entorno
● Hace posible tener una imagen de nginx y correrla con distintas
configuraciones
○ En vez de N imágenes
Nuestra experiencia con K8s
¿Por qué el cambio?
● El principal objetivo hoy es que los equipos sean más independientes
○ No haya cuello de botella en “operaciones”
○ No coordinar para upgradear la versión de ruby con otros equipos
● Que tengan el control de “todo el stack” minimizando riesgos
○ Configuraciones de nginx, etc.
● Que sea igual de fácil que hoy deployear
¿Qué tenemos hoy en k8s?
● Servicios web con HTTP/HTTPS en producción
● Los desarrolladores pueden cambiar la config de todo el stack sin miedo
○ Nginx, heka, etc.
● Monitoreo
● Interfaz web para que hagan deploy
● Builds de imágenes automáticos una vez que se mergea un cambio
○ Auto-deploy on green posible, nadie se anima a usarlo
● La infraestructura manejada con terraform
● K8s crea los ELB de AWS
● Pero todavía no permite configurar el cert SSL
● Solución:
○ Exponer servicio internamente (dentro de K8s)
○ Manejar el ELB por fuera de K8s
Exponer los servicios con ELB y HTTPS
Cambios de config sin miedo
● Es muy fácil tener un “syntax error” al cambiar configuración
● Para evitar downtime por errores simples de config:
○ Configuraciones de nginx, heka, etc. con configmaps
○ Cambio de configuración = nuevo configmap + deploy
○ Si hay error, en un pod no se sigue con el deploy!
● La configuración de la app, por ahora, no usa configmaps
○ Facilita la migración y es simple volver en caso de emergencias
○ Y porque todavía no lo hicimos super feliz
○ Kubernetes hoy no da nada mágico para crearlos/actualizarlos en un deployment
Monitoreo
● Kubernetes viene con grafana+influxdb
● Nosotros usabamos signalfx
○ También hicieron un plugin para kubernetes con cAdvisor!
● Creamos un dashboard custom para ver la capacidad libre
○ Estandarizamos el tamaño de los pods
○ Podemos ver el número de pods disponibles
● Creamos/actualizamos dashboard customs para cada proyecto
Interfaz web para deploy
● Dashboard “built-in” no maneja deployments hoy
○ Los va a manejar para v1.3 (beta que sale este viernes ya los maneja!)
● Nosotros usabamos samson (gihub.com/zendesk/samson)
● Agregaron un plugin para kubernetes y seguimos con la misma interfaz!
○ Ellos también están migrando todo a kubernetes
○ Les mandamos algunos parches (plugin ECR) y la estamos usando
● DEMO!
Lo que falta/Lo que viene
● Canary deployments
○ Trivial con otro deployment con distintos labels!
● Hacer el cluster multi-zone
○ Kubernetes ya lo soporta!
● Agregar jobs a samson (pronto)
● Automatizar upgrade de nodos (pronto)
● Migrar el gran “monolito”
● Desarrollo local integrado con service-discovery, etc.
¿Preguntas?
¡Gracias!
Nos encantaría compartir experiencias con kubernetes:
Rodrigo Campos: rodrigo.campos@restorando.com, rodrigo@sdfg.com.ar
Juan Barreneche: jbarreneche@restorando.com
Links interesantes
● Borg, Omega, and Kubernetes: Lessons learned from three container-
management systems over a decade
○ http://queue.acm.org/detail.cfm?id=2898444
● Curso online
○ https://www.udacity.com/course/scalable-microservices-with-kubernetes--ud615
● KubeCon EU 2016
○ https://www.youtube.com/watch?v=Wyl4O3CHzV0
● Query Kubernetes API objects using SQL
○ https://github.com/brendandburns/ksql

Más contenido relacionado

La actualidad más candente

DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
Christian Rodriguez
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
Open Canarias
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
Gabriel Eisbruch
 
Divide y vencerás con docker y core os
Divide y vencerás con docker y core osDivide y vencerás con docker y core os
Divide y vencerás con docker y core os
David Luque Quintana
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
CLEFormación
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
Javier Sánchez Ochando
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
BEEVA_es
 
Usando docker
Usando dockerUsando docker
Usando docker
Gustavo Muslera
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
Sergio Zambrano Delfa
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
ITPAMI
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
quaip
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
Martin Kenneth Michalsky
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
Mariano German Egui
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
Javier Sánchez Ochando
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJS
Jan Sanchez
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
Mario IC
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarm
Alejandro Escanero Blanco
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
Jorge Moratilla Porras
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
Irene Alonso Candelario
 
Fury DevopsConf 2015
Fury DevopsConf 2015Fury DevopsConf 2015
Fury DevopsConf 2015
Gabriel Eisbruch
 

La actualidad más candente (20)

DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
Divide y vencerás con docker y core os
Divide y vencerás con docker y core osDivide y vencerás con docker y core os
Divide y vencerás con docker y core os
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 
Usando docker
Usando dockerUsando docker
Usando docker
 
Vagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de usoVagrant y Docker - Guía práctica de uso
Vagrant y Docker - Guía práctica de uso
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
 
Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJS
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Presentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarmPresentación nubes de contenedores con docker swarm
Presentación nubes de contenedores con docker swarm
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Fury DevopsConf 2015
Fury DevopsConf 2015Fury DevopsConf 2015
Fury DevopsConf 2015
 

Destacado

An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
Imesh Gunaratne
 
Vagrant ansible pesadilla en la consultoria
Vagrant ansible pesadilla en la consultoriaVagrant ansible pesadilla en la consultoria
Vagrant ansible pesadilla en la consultoria
Alejandro de la Hoz
 
Evolution of Linux Containerization
Evolution of Linux Containerization Evolution of Linux Containerization
Evolution of Linux Containerization
WSO2
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
Ross Kukulinski
 
Seminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaSeminario: Docker y su Ecosistema
Seminario: Docker y su Ecosistema
Germán Moltó
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
Angel Nuñez
 
Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2
dotCloud
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
Carlos Sanchez
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Stefan Schimanski
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
rajdeep
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
Jérôme Petazzoni
 
Basic docker for developer
Basic docker for developerBasic docker for developer
Basic docker for developer
Weerayut Hongsa
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
Ganesh Samarthyam
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
 
Webinar : Docker in Production
Webinar : Docker in ProductionWebinar : Docker in Production
Webinar : Docker in Production
Newt Global Consulting LLC
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 

Destacado (17)

An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Vagrant ansible pesadilla en la consultoria
Vagrant ansible pesadilla en la consultoriaVagrant ansible pesadilla en la consultoria
Vagrant ansible pesadilla en la consultoria
 
Evolution of Linux Containerization
Evolution of Linux Containerization Evolution of Linux Containerization
Evolution of Linux Containerization
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
Seminario: Docker y su Ecosistema
Seminario: Docker y su EcosistemaSeminario: Docker y su Ecosistema
Seminario: Docker y su Ecosistema
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2Immutable infrastructure with Docker and EC2
Immutable infrastructure with Docker and EC2
 
Scaling Docker with Kubernetes
Scaling Docker with KubernetesScaling Docker with Kubernetes
Scaling Docker with Kubernetes
 
Kubernetes Basics
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
A Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things ContainersA Gentle Introduction To Docker And All Things Containers
A Gentle Introduction To Docker And All Things Containers
 
Basic docker for developer
Basic docker for developerBasic docker for developer
Basic docker for developer
 
Docker by Example - Basics
Docker by Example - Basics Docker by Example - Basics
Docker by Example - Basics
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Webinar : Docker in Production
Webinar : Docker in ProductionWebinar : Docker in Production
Webinar : Docker in Production
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 

Similar a Docker meetup :: Kubernetes en Restorando

202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
Manuel de la Peña Peña
 
Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
Raúl Requero García
 
Automatización de tareas con Gulp
Automatización de tareas con GulpAutomatización de tareas con Gulp
Automatización de tareas con Gulp
Álvaro Navarro Iborra
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
Quito Lambda
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
Luis Merino Troncoso
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
SiteGround España
 
Introducción al Cloud Computing
Introducción al Cloud ComputingIntroducción al Cloud Computing
Introducción al Cloud Computing
Yannick Warnier
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
Micael Gallego
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
Mario IC
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
Óscar De Arriba González
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
Ernesto Anaya
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
David Tabernero Pérez
 
Servidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadServidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidad
InclamSoft
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
Jaime Perera Merino
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
camposer
 
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleAnsible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Quito Lambda
 
Atica Dev Ops II
Atica Dev Ops IIAtica Dev Ops II
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
CodeSyntax
 

Similar a Docker meetup :: Kubernetes en Restorando (20)

202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy202204-Modernizando aplicaciones legacy
202204-Modernizando aplicaciones legacy
 
Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
 
ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
Automatización de tareas con Gulp
Automatización de tareas con GulpAutomatización de tareas con Gulp
Automatización de tareas con Gulp
 
Serverless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nubeServerless: La evolucion de la arquitectura a la nube
Serverless: La evolucion de la arquitectura a la nube
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
 
Los mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupalLos mejores trucos y prácticas para configurar drupal
Los mejores trucos y prácticas para configurar drupal
 
Introducción al Cloud Computing
Introducción al Cloud ComputingIntroducción al Cloud Computing
Introducción al Cloud Computing
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Earthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroidesEarthly, Dockerfile con esteroides
Earthly, Dockerfile con esteroides
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
 
Hadoop en accion
Hadoop en accionHadoop en accion
Hadoop en accion
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
Servidor de mapas en HA con Jboss, Geoserver y PostGIS.
 
Servidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidadServidores de mapas en alta disponibilidad
Servidores de mapas en alta disponibilidad
 
Kubernetes para developers
Kubernetes para developersKubernetes para developers
Kubernetes para developers
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con AnsibleAnsible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
Ansible + AWS: Cómo administrar tu infraestructura de AWS con Ansible
 
Atica Dev Ops II
Atica Dev Ops IIAtica Dev Ops II
Atica Dev Ops II
 
Buildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en PythonBuildout: Crear y desplegar entornos reproducibles en Python
Buildout: Crear y desplegar entornos reproducibles en Python
 

Último

ESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdf
ESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdfESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdf
ESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdf
AlexTicona11
 
La gestión y administración de almacenes
La gestión y administración de almacenesLa gestión y administración de almacenes
La gestión y administración de almacenes
RicardoCruzHernndez1
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
jcbarriopedro69
 
diseño de rajo abierto para la mineria ⚒
diseño de rajo abierto para la mineria ⚒diseño de rajo abierto para la mineria ⚒
diseño de rajo abierto para la mineria ⚒
Mario Valenzuela Cortés
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
jhunior lopez rodriguez
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
LizetGuadalupeHernan
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
brandonsinael
 
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptxSistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
RobertRamos84
 
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaaEspecificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
ssuserebb7f71
 
sistemas fijos de extincion de incendio hidrantes
sistemas fijos de extincion de incendio  hidrantessistemas fijos de extincion de incendio  hidrantes
sistemas fijos de extincion de incendio hidrantes
luisalbertotorrespri1
 
Graficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitabGraficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitab
XIOMARAANTONELLACAST
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
MaraManuelaUrribarri
 
Ventajas y desventaja de la biotecnología
Ventajas y desventaja de la biotecnologíaVentajas y desventaja de la biotecnología
Ventajas y desventaja de la biotecnología
luiscentenocalderon
 
Clase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de faseClase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de fase
EmilyLloydCerda
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
Carlos Pulido
 
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptxOrganizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
GuillerminaReyesJuar
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
siclaro982
 
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CONAUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
FreddyJuniorOrtechoC
 
Matriz de Evaluación de Factores Externos-MEFE
Matriz de Evaluación de Factores Externos-MEFEMatriz de Evaluación de Factores Externos-MEFE
Matriz de Evaluación de Factores Externos-MEFE
Elsa Molto
 
Flujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vialFlujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vial
SamuelMendozaS
 

Último (20)

ESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdf
ESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdfESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdf
ESTRUCTURACIÓN Y PREDIMENSIONAMIENTO, GRUPO 4.pdf
 
La gestión y administración de almacenes
La gestión y administración de almacenesLa gestión y administración de almacenes
La gestión y administración de almacenes
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
 
diseño de rajo abierto para la mineria ⚒
diseño de rajo abierto para la mineria ⚒diseño de rajo abierto para la mineria ⚒
diseño de rajo abierto para la mineria ⚒
 
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCECOMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
COMPARACION DE PRECIOS TENIENDO COMO REFERENTE LA OSCE
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
 
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptxSistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
Sistema de disposición sanitarias – UBS composteras 2 PARTE.pptx
 
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaaEspecificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
sistemas fijos de extincion de incendio hidrantes
sistemas fijos de extincion de incendio  hidrantessistemas fijos de extincion de incendio  hidrantes
sistemas fijos de extincion de incendio hidrantes
 
Graficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitabGraficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitab
 
Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.Las operaciones básicas en la construcción.
Las operaciones básicas en la construcción.
 
Ventajas y desventaja de la biotecnología
Ventajas y desventaja de la biotecnologíaVentajas y desventaja de la biotecnología
Ventajas y desventaja de la biotecnología
 
Clase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de faseClase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de fase
 
Infografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdfInfografía operaciones básicas construcción .pdf
Infografía operaciones básicas construcción .pdf
 
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptxOrganizacion-y-direccion-de-los-centros-de-informatica.pptx
Organizacion-y-direccion-de-los-centros-de-informatica.pptx
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
 
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CONAUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
 
Matriz de Evaluación de Factores Externos-MEFE
Matriz de Evaluación de Factores Externos-MEFEMatriz de Evaluación de Factores Externos-MEFE
Matriz de Evaluación de Factores Externos-MEFE
 
Flujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vialFlujo vehicular en análisis de trafico vial
Flujo vehicular en análisis de trafico vial
 

Docker meetup :: Kubernetes en Restorando

  • 1. Kubernetes en Restorando Migrando los primeros servicios
  • 2. ¿Quiénes somos? Rodrigo Campos rata Juan Barreneche jbarreneche @jbarreneche
  • 3. Agenda ● Kubernetes Intro ● Primeros pasos con Kubernetes en Restorando ○ Cosas que nos fueron útiles ○ Cosas que no, pero encontramos otra forma de hacerlas ○ Cosas que nos faltan resolver
  • 4. Kubernetes features ● Automatic binpacking ● Horizontal scaling ● Automated rollouts and rollbacks ● Storage orchestration ● Self-healing ● Service discovery and load balancing ● Secret and configuration management ● Batch execution
  • 5. Node Kubelet Pod Pod Pod Container Container Container Node Kubelet Pod Pod Pod Container Container Container Kubernetes basic architecture Node Kubelet Pod Pod Pod Container Container Container Kubernetes Master
  • 6. ¿Qué son los pods? ● Conjunto de 1 o más containers ● Estos containers SIEMPRE se colocan en un mismo nodo ○ Modela grupo de apps que se corren en un host ● Comparten IP, namespace de red y storage ● Ejemplos ○ File puller + web server: comparten volumen para servir los archivos, reusables por separado ○ App + interfaz con “el mundo exterior” ○ En Restorando: nginx, heka y app
  • 7. Deployments ● Especifica el “template” de los pods ● Desired state: típicamente se especifica en un yaml/json ● Especificamos y nos asegura (entre otras cosas): ○ Que siempre haya la cantidad de “réplicas” que especificamos ■ Si un nodo muere, container crashea, etc. ○ Que los pods estén “vivos” y no reciban tráfico hasta estar listos ■ Hay chequeos especiales para esto que veremos más adelante ○ Límites y garantías de recursos (CPU, mem) ○ Deploys sin downtime (si queremos)
  • 8. - name: nginx image: <registry>/nginx:v1.0 readinessProbe: initialDelaySeconds: 5 httpGet: path: /health port: 80 livenessProbe: initialDelaySeconds: 5 httpGet: path: /health port: 80 lifecycle: preStop: exec: command: ["nginx", "-s", "quit"] apiVersion: extensions/v1beta1 kind: Deployment metadata: name: wido-web spec: replicas: 1 template: metadata: labels: project: wido role: web containers: - name: app image: <registry>/wido:1.0 Ejemplo de deployment
  • 9. Hacer un deploy ● Se baja un pod viejo ● Se levanta un pod nuevo ● No se sigue hasta que está listo para recibir tráfico. Cuando está listo, se repite hasta N ● El nodo lo elige k8s automáticamente, se pueden poner restricciones ○ O hasta crear nuestro propio scheduler y usarlo en su lugar!
  • 10. ¿Y lo de configuration management? ● Otro yaml! ● El objeto se llama “configMap” ● Se puede montar en un path del fs o usarse como variable de entorno ● Hace posible tener una imagen de nginx y correrla con distintas configuraciones ○ En vez de N imágenes
  • 12. ¿Por qué el cambio? ● El principal objetivo hoy es que los equipos sean más independientes ○ No haya cuello de botella en “operaciones” ○ No coordinar para upgradear la versión de ruby con otros equipos ● Que tengan el control de “todo el stack” minimizando riesgos ○ Configuraciones de nginx, etc. ● Que sea igual de fácil que hoy deployear
  • 13. ¿Qué tenemos hoy en k8s? ● Servicios web con HTTP/HTTPS en producción ● Los desarrolladores pueden cambiar la config de todo el stack sin miedo ○ Nginx, heka, etc. ● Monitoreo ● Interfaz web para que hagan deploy ● Builds de imágenes automáticos una vez que se mergea un cambio ○ Auto-deploy on green posible, nadie se anima a usarlo ● La infraestructura manejada con terraform
  • 14. ● K8s crea los ELB de AWS ● Pero todavía no permite configurar el cert SSL ● Solución: ○ Exponer servicio internamente (dentro de K8s) ○ Manejar el ELB por fuera de K8s Exponer los servicios con ELB y HTTPS
  • 15. Cambios de config sin miedo ● Es muy fácil tener un “syntax error” al cambiar configuración ● Para evitar downtime por errores simples de config: ○ Configuraciones de nginx, heka, etc. con configmaps ○ Cambio de configuración = nuevo configmap + deploy ○ Si hay error, en un pod no se sigue con el deploy! ● La configuración de la app, por ahora, no usa configmaps ○ Facilita la migración y es simple volver en caso de emergencias ○ Y porque todavía no lo hicimos super feliz ○ Kubernetes hoy no da nada mágico para crearlos/actualizarlos en un deployment
  • 16. Monitoreo ● Kubernetes viene con grafana+influxdb ● Nosotros usabamos signalfx ○ También hicieron un plugin para kubernetes con cAdvisor! ● Creamos un dashboard custom para ver la capacidad libre ○ Estandarizamos el tamaño de los pods ○ Podemos ver el número de pods disponibles ● Creamos/actualizamos dashboard customs para cada proyecto
  • 17. Interfaz web para deploy ● Dashboard “built-in” no maneja deployments hoy ○ Los va a manejar para v1.3 (beta que sale este viernes ya los maneja!) ● Nosotros usabamos samson (gihub.com/zendesk/samson) ● Agregaron un plugin para kubernetes y seguimos con la misma interfaz! ○ Ellos también están migrando todo a kubernetes ○ Les mandamos algunos parches (plugin ECR) y la estamos usando ● DEMO!
  • 18.
  • 19. Lo que falta/Lo que viene ● Canary deployments ○ Trivial con otro deployment con distintos labels! ● Hacer el cluster multi-zone ○ Kubernetes ya lo soporta! ● Agregar jobs a samson (pronto) ● Automatizar upgrade de nodos (pronto) ● Migrar el gran “monolito” ● Desarrollo local integrado con service-discovery, etc.
  • 20. ¿Preguntas? ¡Gracias! Nos encantaría compartir experiencias con kubernetes: Rodrigo Campos: rodrigo.campos@restorando.com, rodrigo@sdfg.com.ar Juan Barreneche: jbarreneche@restorando.com
  • 21. Links interesantes ● Borg, Omega, and Kubernetes: Lessons learned from three container- management systems over a decade ○ http://queue.acm.org/detail.cfm?id=2898444 ● Curso online ○ https://www.udacity.com/course/scalable-microservices-with-kubernetes--ud615 ● KubeCon EU 2016 ○ https://www.youtube.com/watch?v=Wyl4O3CHzV0 ● Query Kubernetes API objects using SQL ○ https://github.com/brendandburns/ksql

Notas del editor

  1. Kubernetes está hecho con microservicios, todas las partes son reemplazables e integrables con otros Automatic Horizonatal Scaling
  2. Master con etcd. Nodos iguales con “kubelet” y pods
  3. Pensar en pod como mínima unidad para escalar Los puertos con otros pods no conflictuan porque cada uno tiene su IP! Sidecar: extend and enhance the "main" container (primer ejemplo) Ambassador containers: container que splits read/writes y se conecta a redis Adapter containers: interfaz con el mundo exterior
  4. Desired state, describe lo que queremos, no cómo hacerlo
  5. El readiness y liveness acá es igual, podrían ser distintos (probar que estén todas las dependencias up, por ejemplo) Acá son un httpget, pueden ser ejecutar un comando en el container, conectarse por TCP nomás. Muy flexible y configurable Todo tiene labels pero muchos los saqué por espacio
  6. Con esto vimos: Automatic binpacking Y los puertos no conflictuan! Horizontal scaling (hay automatico tambien!) Automated rollouts and rollbacks Self-healing
  7. Secret management se maneja muy parecido
  8. Mencionar que usabamos chef para el provisioning y que los devs no podían hacer cambios.
  9. Hagan el curso de udacity!