SlideShare una empresa de Scribd logo
2020
Netcoreconf
KEDA y Azure Functions o como
convertir Kubernetes en Serverless
Eduard Tomàs
Compulsive Developer @ Plain Concepts
@eiximenis
#netcoreconf
Sponsors
#netcoreconf
¿Quien soy yo?
• Principal Tech Lead @
PlainConcepts BCN
• Padre orgulloso
• Bebedor de cerveza
• Picateclas a mucha honra
• Microsoft MVP desde 2012
#netcoreconf
Serverless
• Foco en tú código, no en infraestructura
• Escalado on demand
• Ideal para apps basadas en eventos
• Pago por uso
#netcoreconf
Usos de Serverless
Automatización Integración de
servicios
Creación rápida
de APIs
Proceso de
eventos
#netcoreconf
FaaS – Functions as a Service
• El paradigma típico de Serverless
• Desplegamos “código” que se ejecuta y escala automáticamente
• La ejecución suele ser motivada por eventos
• Ideal para cloud
• Azure Functions, AWS Lambdas, Google Functions
#netcoreconf
Escalado en Kubernetes
• Soportado “de serie” mediante el HPA
• Pero (en un cluster estándard) el escalado no es óptimo para apps
basadas en eventos
• Escala sobre el síntoma (ej. Memoria, CPU), pero no la causa (ej.
muchos mensajes encolados en SQS, Service Bus, RabbitMQ,…)
#netcoreconf
KEDA – Kubernetes Event-Drive Autoscaler
• Proyecto de código abierto iniciado por Microsoft
• En proceso de donarse a la CNCF como Sandbox Project
• Un paso más para tener serverless ON kubernetes
#netcoreconf
KEDA
• Monitoriza eventos para escalar proactivamente deployments
• Usa HPAs y servidor de métricas propias
• Permite escalar desde cero pods
• Extensible mediante el concepto de scalers
#netcoreconf
Keda - Arquitectura
Pods
Horizontal Pod
Autoscaler (HPA)
Servidor
Métricas
Controlador Escalador
#netcoreconf
Conceptos de Keda: ScaledObject
• CRD de Kubernetes que define una escalación por eventos
• Permite escalar un deployment en base a eventos externos
• spec.scaleTargetRef.deploymentName: Deployment a escalar
• spec.triggers: Triggers que controlan el escalado del deployment
#netcoreconf
Azure functions & Docker
• Es possible empaquetar un Proyecto de AF como Docker
1. func init func-project
2. cd func-project
3. func init --docker-only
4. func new
5. docker build –t func-project .
#netcoreconf
Publicar Azure Functions en Kubernetes con KEDA
Hacer un “docker login” contra el ACR
az acr login –n my-acr
Desplegar la AF en Kubernetes
func kubernetes deploy --name func-project –registry
my-acr.azurecr.io
#netcoreconf
Recursos generadaos
• Un deployment
• Un SecretMap con la configuración
• Un ScaledObject con los triggers configurados
Desplegando en Kubernetes
#netcoreconf
Configuración de Azure functions en Keda
• func kubernetes deploy genera por defecto configuración
basada en local.settings.json
• Se puede usar configuración propia creando un secretmap y usando
--secret-name en func kubernetes deploy
#netcoreconf
Desplegar manualmente con kubectl
• Es posible desplegar con kubectl usando “func kubernetes deploy –
dry-run” y mandando el resultado a kubectl
• Eso permite también empaquetar con Helm todo el proceso
Desplegar con Helm
#netcoreconf
KEDA: Principios de diseño
• KEDA no es solo para FaaS
• Puede escalar cualquier workload que se ejecute en Kubernetes
• Funciona en cualquier cluster (desde MiniKube a AKS, EKS, GKE)
#netcoreconf
Keda y métricas propias
• Es posible usar Keda para
autoescalar un deployment en base
a métricas “propias”
• Esas métricas se publican en
Prometheus
• Y se usan para autoescalar usando
Keda
Prometheus y Keda
#netcoreconf
Ejecuciones “largas”
• KEDA autoescala workloads basados en métricas asociadas a los
eventos
• P. ej. El número de mensajes pendientes en una cola de RabbitMQ
• Tenemos un proceso que consume mensajes, y tarda tiempo (p. ej. 3
h) en procesar un mensaje
• El numero de mensajes pendientes aumenta y KEDA escala el
deployment
#netcoreconf
Ejecuciones “largas”
Instancia 2 – Procesando mensaje 10%
Instancia 1 – Procesando mensaje 80%
Instancia 4 – Procesando mensaje
50%
Instancia 3 – Procesando mensaje 90%
#netcoreconf
Ejecuciones “largas”
Instancia 2 – Procesando mensaje 10%
Instancia 1 – Procesando mensaje 80%
Instancia 4 – Procesando mensaje
50%
Instancia 3 – Procesando mensaje 90%
#netcoreconf
Ejecuciones
“largas”
• Dos opciones para evitar
este problema
• Opción 1: Usar los tiempos
de vida de los pods (pod
lifecycle)
• Opción 2: Convertir el
deployment en job y escalar
el job por eventos
#netcoreconf
Ejecuciones “largas”
• Usar pod lifecycle
• Pedir a Kubernetes “tiempo extra” cuando Kubernetes va a matar el
pod
• Funciona, pero es “feo” (estado terminating durante horas)
#netcoreconf
Escalar “jobs”
• En lugar de escalar deployments indicar a KEDA que cree un job por
cada evento
• Esos jobs se ejecutan hasta su finalización
• Además podemos controlar el paralelismo
#netcoreconf
Keda vs “standard approach”
• Aproximación “estándard”
Adaptador de Eventos ContainerHTTP
•  Desarrollador no debe preocuparse de obtener los eventos
•  Todo es HTTP/gRPC
•  Desarrollador no tiene acceso a las capacidades nativas del gestor de
eventos
•  Ciertos patrones como ordenación son complicados
•  La responsabilidad de gestionar los eventos es del operador no del
contenedor
#netcoreconf
Keda vs “standard approach”
• Aproximación de Keda
Container
Protocolo nativo
•  Desarrollador tiene acceso a las capacidades nativas del gestor
de eventos
•  Cualquier patrón es posible (si lo soporta el emisor de eventos)
•  El desarrollador debe conocer los distintos emisores de eventos
que use
#netcoreconf
Recursos
• https://keda.sh
• https://github.com/kedacore/keda
• https://helm.sh
• https://cncf.io
#netcoreconf
Sponsors
Más información:
info@netcoreconf.com
@Netcoreconf
Visítanos en:
netcoreconf.com

Más contenido relacionado

La actualidad más candente (20)

PPTX
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
Carlos Landeras Martínez
 
PPTX
Magallanes - PHPmvd Meet Up - Mayo 2014
Andrés Montañez
 
PDF
Escalabilidad y alto rendimiento con Symfony2
Ricard Clau
 
PPTX
Web Day Devops - Plain Concepts
Manuel Rodrigo Cabello Malagón
 
PDF
Kubernetes para developers
Jaime Perera Merino
 
PDF
Terraspace, the definitive terraform framework
Mario IC
 
PDF
Manejo de packages en Kubernetes con Helm
Mario IC
 
PDF
Tolerancia a fallas, service mesh y chassis
Víctor Leonel Orozco López
 
PPTX
NodeJS
IBM
 
KEY
SpringIO 2012 Madrid-Escalabilidad con Grails
Domingo Suarez Torres
 
PDF
JVM Reactive Programming
Domingo Suarez Torres
 
PPTX
Spring boot et. al. para el impaciente
Miguel Ángel Enríquez López
 
PDF
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Micael Gallego
 
PPTX
Fernando Gandia - Airflow - PyData Mallorca 18-10-2016
Fernando Gandia
 
PPTX
Introducción a ASP.NET Web API
Rodolfo Finochietti
 
PDF
Codemotion Madrid 2020 - Serverless con Micronaut
Iván López Martín
 
PDF
Gradle vs Maven
Mario García
 
PPTX
Netcoreconf 2020 - Gammification with Microsoft Learn
Alex Martinez Mañé
 
PPTX
Destino la Nube 2012 - ALM para Azure
Jose Luis Soria
 
PPTX
Introducción a vnext
Santiago Porras Rodríguez
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
Carlos Landeras Martínez
 
Magallanes - PHPmvd Meet Up - Mayo 2014
Andrés Montañez
 
Escalabilidad y alto rendimiento con Symfony2
Ricard Clau
 
Web Day Devops - Plain Concepts
Manuel Rodrigo Cabello Malagón
 
Kubernetes para developers
Jaime Perera Merino
 
Terraspace, the definitive terraform framework
Mario IC
 
Manejo de packages en Kubernetes con Helm
Mario IC
 
Tolerancia a fallas, service mesh y chassis
Víctor Leonel Orozco López
 
NodeJS
IBM
 
SpringIO 2012 Madrid-Escalabilidad con Grails
Domingo Suarez Torres
 
JVM Reactive Programming
Domingo Suarez Torres
 
Spring boot et. al. para el impaciente
Miguel Ángel Enríquez López
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Micael Gallego
 
Fernando Gandia - Airflow - PyData Mallorca 18-10-2016
Fernando Gandia
 
Introducción a ASP.NET Web API
Rodolfo Finochietti
 
Codemotion Madrid 2020 - Serverless con Micronaut
Iván López Martín
 
Gradle vs Maven
Mario García
 
Netcoreconf 2020 - Gammification with Microsoft Learn
Alex Martinez Mañé
 
Destino la Nube 2012 - ALM para Azure
Jose Luis Soria
 
Introducción a vnext
Santiago Porras Rodríguez
 

Similar a Keda o como convertir Kubernetess en Serverless (20)

PDF
Docker_K8S_lecciones_netcoreconf_2022.pdf
Leonardo Micheloni
 
PPTX
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
Eduard Tomàs
 
PPTX
Game of pods - Kubernetes
jdezine
 
PPTX
Meetup de kubernetes, conceptos básicos.
Paradigma Digital
 
PPTX
Jug málaga docker 101 - final
Julio Palma Vázquez
 
PDF
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Hermann Pais
 
PDF
Meetup AWS User Group chile - Diciembre 2018
Gonzalo Vásquez
 
PPTX
Presentación Kubernetes y nube y mas nube
Nicaury Benitez
 
PDF
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Víctor Leonel Orozco López
 
PDF
Sql server ha muerto, larga vida a sql server
Enrique Catala Bañuls
 
PPTX
Docker 10 02_18
enyert
 
PDF
Cloud Native Mexico - Introducción a Kubernetes
Domingo Suarez Torres
 
PDF
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Restorando
 
PDF
Observa tus flotas de Kubernetes como un/a especialista con Grafana
Imma Valls Bernaus
 
PPTX
Cómo empezar con Amazon EKS
Amazon Web Services LATAM
 
PPTX
Contenedores y el Futuro del Despliegue de Aplicaciones
Bitnami
 
PPTX
Introduccion a SQL Server 2017 en Docker
Eduardo Castro
 
PPTX
Introducción a Docker
Nicolás Bello Camilletti
 
PDF
meetup digital ocean kubernetes
Domingo Suarez Torres
 
PDF
Pruebas de integración con Docker en Azure DevOps
Software Guru
 
Docker_K8S_lecciones_netcoreconf_2022.pdf
Leonardo Micheloni
 
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
Eduard Tomàs
 
Game of pods - Kubernetes
jdezine
 
Meetup de kubernetes, conceptos básicos.
Paradigma Digital
 
Jug málaga docker 101 - final
Julio Palma Vázquez
 
Introduccion a Elastic Beanstalk AWS Roadshow Bogota Mexico
Hermann Pais
 
Meetup AWS User Group chile - Diciembre 2018
Gonzalo Vásquez
 
Presentación Kubernetes y nube y mas nube
Nicaury Benitez
 
Iniciando microservicios reales con JakartaEE/MicroProfile y arquetipos de Maven
Víctor Leonel Orozco López
 
Sql server ha muerto, larga vida a sql server
Enrique Catala Bañuls
 
Docker 10 02_18
enyert
 
Cloud Native Mexico - Introducción a Kubernetes
Domingo Suarez Torres
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Restorando
 
Observa tus flotas de Kubernetes como un/a especialista con Grafana
Imma Valls Bernaus
 
Cómo empezar con Amazon EKS
Amazon Web Services LATAM
 
Contenedores y el Futuro del Despliegue de Aplicaciones
Bitnami
 
Introduccion a SQL Server 2017 en Docker
Eduardo Castro
 
Introducción a Docker
Nicolás Bello Camilletti
 
meetup digital ocean kubernetes
Domingo Suarez Torres
 
Pruebas de integración con Docker en Azure DevOps
Software Guru
 
Publicidad

Más de Eduard Tomàs (20)

PPTX
C#9 - Más C# que nunca
Eduard Tomàs
 
PPTX
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
Eduard Tomàs
 
PPTX
Codemotion 2015 - Bienvenido de nuevo c++
Eduard Tomàs
 
PPTX
El "peor" lenguaje del mundo
Eduard Tomàs
 
PPTX
Containerize a netcore application with aks
Eduard Tomàs
 
PPTX
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Eduard Tomàs
 
PPTX
Aplicaciones de consola fáciles? Más quisieramos
Eduard Tomàs
 
PPTX
Serverless with Azure Functions and CosmosDb
Eduard Tomàs
 
PPTX
Docker y todo eso... más o menos
Eduard Tomàs
 
PPTX
Microservices: Yes or not?
Eduard Tomàs
 
PPTX
ASP.NET MVC Core
Eduard Tomàs
 
PPTX
Azure functions
Eduard Tomàs
 
PPTX
React native - Unleash the power of your device
Eduard Tomàs
 
PPTX
JavaScript in 2016 (Codemotion Rome)
Eduard Tomàs
 
PPTX
Asp.Net Core 1.0 Deep Dive
Eduard Tomàs
 
PPTX
React native - t3chfest 2016
Eduard Tomàs
 
PPTX
React, Flux y React native
Eduard Tomàs
 
PPTX
Novedades de ASP.NET MVC6
Eduard Tomàs
 
PPTX
JavaScript - HTML5 - IndexedDb
Eduard Tomàs
 
PPTX
Winobjc - Windows Bridge for iOS
Eduard Tomàs
 
C#9 - Más C# que nunca
Eduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
Eduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Eduard Tomàs
 
El "peor" lenguaje del mundo
Eduard Tomàs
 
Containerize a netcore application with aks
Eduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Eduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Eduard Tomàs
 
Docker y todo eso... más o menos
Eduard Tomàs
 
Microservices: Yes or not?
Eduard Tomàs
 
ASP.NET MVC Core
Eduard Tomàs
 
Azure functions
Eduard Tomàs
 
React native - Unleash the power of your device
Eduard Tomàs
 
JavaScript in 2016 (Codemotion Rome)
Eduard Tomàs
 
Asp.Net Core 1.0 Deep Dive
Eduard Tomàs
 
React native - t3chfest 2016
Eduard Tomàs
 
React, Flux y React native
Eduard Tomàs
 
Novedades de ASP.NET MVC6
Eduard Tomàs
 
JavaScript - HTML5 - IndexedDb
Eduard Tomàs
 
Winobjc - Windows Bridge for iOS
Eduard Tomàs
 
Publicidad

Último (20)

PDF
Trabajo Tecnología #2 Periodo (2).pdfjdjfjf
ssuser57b6e41
 
PDF
Webinar - Migrating to Ballerina from MuleSoft and Tibco.pdf
Profesia Srl, Lynx Group
 
PDF
BDO y su visión hacia el Cyber SOC 4.0 | Ciberseguridad predictiva
Fabián Descalzo
 
PDF
DIAGRAMA PARETO JULIANA MUÑOZ GUTIÉRREZ 11-5
JulyMuoz18
 
PPTX
CamposFlores_Fernando_M1S3AI6-PrepaLineaSEP
231464482
 
PDF
Afiche de Tecnología en Venezuela. Etapa colonial y Etapa democrática
DiosymarSuarez
 
PDF
Trabajo De Pareto.pdf Tecnologia/Colegio
coloradxmaria
 
DOCX
Conceptos básicos de programación tecnologia
edepjuangarcia194
 
PPTX
JuarezGonzalez_Maria_M1S3AI6.docs https://docs.google.com/presentation/d/1-
susana0271
 
PDF
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
PDF
Conceptos básicos de programacion de tecnologia
edepjuangarcia194
 
PPTX
Influencia de la IA en la industria farmacéutica.pptx
luisSamuelRamirezApo1
 
PDF
Tecnología en Venezuela_20250720_131348_0000.pdf
AndreaGiuseppinaFerr
 
DOCX
desarollo_de _habilidades de pensamiento
gabrielacruzr6d
 
PDF
Tecnología en Venezuela. Etapa colonial y Etapa democrática
proyectosabirm
 
PDF
Trabajo en grupo realizado mediante drive
nicolelozanodorado9
 
PPTX
Normas de la sala de informática Segundo
SilviaFernandaCesped
 
PPT
Curso Inicial Avion, Motor y Sistemas Cessna 172, 177RG, 206 y 207 - Ica.ppt
JOSEVALDEZFLORES3
 
PDF
Diagrama de pareto, Sofía Muñoz Gutiérrez
sofaMuoz31
 
PPTX
BIOLOGIA MOLECULAR tecnica de extraccion de ADN.pptx
ANGELJOELSILVAPINZN
 
Trabajo Tecnología #2 Periodo (2).pdfjdjfjf
ssuser57b6e41
 
Webinar - Migrating to Ballerina from MuleSoft and Tibco.pdf
Profesia Srl, Lynx Group
 
BDO y su visión hacia el Cyber SOC 4.0 | Ciberseguridad predictiva
Fabián Descalzo
 
DIAGRAMA PARETO JULIANA MUÑOZ GUTIÉRREZ 11-5
JulyMuoz18
 
CamposFlores_Fernando_M1S3AI6-PrepaLineaSEP
231464482
 
Afiche de Tecnología en Venezuela. Etapa colonial y Etapa democrática
DiosymarSuarez
 
Trabajo De Pareto.pdf Tecnologia/Colegio
coloradxmaria
 
Conceptos básicos de programación tecnologia
edepjuangarcia194
 
JuarezGonzalez_Maria_M1S3AI6.docs https://docs.google.com/presentation/d/1-
susana0271
 
Diagrama de Pareto en PDF pareto el mejor
zaidmarinb11
 
Conceptos básicos de programacion de tecnologia
edepjuangarcia194
 
Influencia de la IA en la industria farmacéutica.pptx
luisSamuelRamirezApo1
 
Tecnología en Venezuela_20250720_131348_0000.pdf
AndreaGiuseppinaFerr
 
desarollo_de _habilidades de pensamiento
gabrielacruzr6d
 
Tecnología en Venezuela. Etapa colonial y Etapa democrática
proyectosabirm
 
Trabajo en grupo realizado mediante drive
nicolelozanodorado9
 
Normas de la sala de informática Segundo
SilviaFernandaCesped
 
Curso Inicial Avion, Motor y Sistemas Cessna 172, 177RG, 206 y 207 - Ica.ppt
JOSEVALDEZFLORES3
 
Diagrama de pareto, Sofía Muñoz Gutiérrez
sofaMuoz31
 
BIOLOGIA MOLECULAR tecnica de extraccion de ADN.pptx
ANGELJOELSILVAPINZN
 

Keda o como convertir Kubernetess en Serverless