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

PPTX
.NET Memoria y Rendimiento
PPTX
Escalando workloads serverless en Kubernetes con Keda
PPTX
Kubernetes: Do's, don'ts and why's
PPTX
Containers en .NET (Dot Net 2018 - Spain)
PPTX
Esos contenedores, ¡a producción! (Commit Conf 2018)
PDF
[El comercio]php zend framework (speech)
PDF
Java Dev Day 2019 No kuberneteen por convivir
PDF
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
.NET Memoria y Rendimiento
Escalando workloads serverless en Kubernetes con Keda
Kubernetes: Do's, don'ts and why's
Containers en .NET (Dot Net 2018 - Spain)
Esos contenedores, ¡a producción! (Commit Conf 2018)
[El comercio]php zend framework (speech)
Java Dev Day 2019 No kuberneteen por convivir
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...

La actualidad más candente (20)

PPTX
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
PPTX
Magallanes - PHPmvd Meet Up - Mayo 2014
PDF
Escalabilidad y alto rendimiento con Symfony2
PPTX
Web Day Devops - Plain Concepts
PDF
Kubernetes para developers
PDF
Terraspace, the definitive terraform framework
PDF
Manejo de packages en Kubernetes con Helm
PDF
Tolerancia a fallas, service mesh y chassis
PPTX
NodeJS
 
KEY
SpringIO 2012 Madrid-Escalabilidad con Grails
PDF
JVM Reactive Programming
PPTX
Spring boot et. al. para el impaciente
PDF
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
PPTX
Fernando Gandia - Airflow - PyData Mallorca 18-10-2016
PPTX
Introducción a ASP.NET Web API
PDF
Codemotion Madrid 2020 - Serverless con Micronaut
PDF
Gradle vs Maven
PPTX
Netcoreconf 2020 - Gammification with Microsoft Learn
PPTX
Destino la Nube 2012 - ALM para Azure
PPTX
Introducción a vnext
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
Magallanes - PHPmvd Meet Up - Mayo 2014
Escalabilidad y alto rendimiento con Symfony2
Web Day Devops - Plain Concepts
Kubernetes para developers
Terraspace, the definitive terraform framework
Manejo de packages en Kubernetes con Helm
Tolerancia a fallas, service mesh y chassis
NodeJS
 
SpringIO 2012 Madrid-Escalabilidad con Grails
JVM Reactive Programming
Spring boot et. al. para el impaciente
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Fernando Gandia - Airflow - PyData Mallorca 18-10-2016
Introducción a ASP.NET Web API
Codemotion Madrid 2020 - Serverless con Micronaut
Gradle vs Maven
Netcoreconf 2020 - Gammification with Microsoft Learn
Destino la Nube 2012 - ALM para Azure
Introducción a vnext
Publicidad

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

PPTX
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
PDF
Docker_K8S_lecciones_netcoreconf_2022.pdf
PDF
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
PDF
Docker y Kubernetes, en busca de la alta disponibilidad
PDF
DevOps Spain 2019. Carlos Landeras-Plain Concepts
PDF
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
PDF
Cloud Native Mexico - Introducción a Kubernetes
PPTX
DotNet 2019 | Eduard Tomás - Escenarios avanzados con AKS y .NET Core
PPTX
Lemoncode kubernetes
PPTX
Devops episodio 1. devOpsTnf
PDF
Curso Kubernetes CodeURJC
PPTX
Kubernetes workshop
PPTX
Build en Español - Serverless.pptx
PPTX
Cloud Native en Azure impartido en Microsoft Madrid y Barcelona
PPTX
Docker for losers
PPTX
Docker Dotnet Málaga
PDF
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
PPTX
Serverless Wars
PPTX
Docker: de principante a pro
PPTX
Docker y todo eso... más o menos
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
Docker_K8S_lecciones_netcoreconf_2022.pdf
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
Docker y Kubernetes, en busca de la alta disponibilidad
DevOps Spain 2019. Carlos Landeras-Plain Concepts
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Cloud Native Mexico - Introducción a Kubernetes
DotNet 2019 | Eduard Tomás - Escenarios avanzados con AKS y .NET Core
Lemoncode kubernetes
Devops episodio 1. devOpsTnf
Curso Kubernetes CodeURJC
Kubernetes workshop
Build en Español - Serverless.pptx
Cloud Native en Azure impartido en Microsoft Madrid y Barcelona
Docker for losers
Docker Dotnet Málaga
Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos
Serverless Wars
Docker: de principante a pro
Docker y todo eso... más o menos
Publicidad

Más de Eduard Tomàs (20)

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

Último (20)

PDF
Temas y subtemas de las fichas 1 y 2.pdf
PDF
Conceptos básicos de programación tecnología.pdf
PDF
diagrama de pareto.pdf valerie giraldo diaz
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
ACTIVIDAD 2.pdf j
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPT
Que son las redes de computadores y sus partes
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
DOCX
Trabajo colaborativo Grupo #2.docxmmuhhlk
PDF
clase auditoria informatica 2025.........
PPTX
Administración se srevidores de apliaciones
PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
PPTX
Presentación de Redes de Datos modelo osi
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
Estrategia de apoyo tecnología miguel angel solis
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Presentación PASANTIAS AuditorioOO..pptx
Temas y subtemas de las fichas 1 y 2.pdf
Conceptos básicos de programación tecnología.pdf
diagrama de pareto.pdf valerie giraldo diaz
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
ACTIVIDAD 2.pdf j
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Que son las redes de computadores y sus partes
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Trabajo colaborativo Grupo #2.docxmmuhhlk
clase auditoria informatica 2025.........
Administración se srevidores de apliaciones
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Calidad desde el Docente y la mejora continua .pdf
Presentación de Redes de Datos modelo osi
Estrategia de apoyo tecnología grado 9-3
Estrategia de apoyo tecnología miguel angel solis
Influencia-del-uso-de-redes-sociales.pdf
Presentación PASANTIAS AuditorioOO..pptx

Keda o como convertir Kubernetess en Serverless