SlideShare una empresa de Scribd logo
1 de 22
Sponsored by
Ejecutando workloads
serverless en AKS
Eduard Tomàs
Tech Lead @ PlainConcepts
Doing stuff and broking things on computers
All sessions avaible on www.cloudlunchlearn.com/marathon
13th & 14th of May
#KubernetesOnFire #kof
Quien soy yo?
● Rompo cosas en Plain
Concepts
● Hago cerveza
● Microsoft MVP desde
2012
● @eiximenis
Qué vamos a ver hoy?
● Serverless y Kubernetes
● Azure Functions en Kubernetes
● Escalando con KEDA
● Usando jobs
Kubernetes
● El prota indiscutible si
hablamos de contenedores
● Complejo de usar
● Distintos sabores, pero todos
parecidos
● Puede con todo
Serverless
● Es una tecnología molona.
● Despliegue ágil
● Escala rápidamente y de forma
sencilla
● Gran potencial para muchos
tipos de casos de uso
Serverless y Kubernetes
● No tiene por qué ser una “lucha”
● Se pueden ejecutar cargas de trabajo
serverless en Kubernetes
● Existen también implementaciones
serverless de Kubernetes (EKS
Fargate, AKS virtual nodes, …)
Por qué ejecutar Serverless en k8s
● Fácil adopción de cloud híbrido /
multicloud
● Menos lock-in
● Una sola plataforma qué gestionar
● Operaciones unificadas
● Más control sobre el H/W
● Ejecutar workloads serverless en el
mismo entorno que otros workloads
(service mesh, entornos compartidos,
etc)
El futuro de Kubernetes es Serverless
● Ya tenenos infra serverless de
contenedores (Fargate, ACI, …)
● Esa infra debe ser orquestada
● La API de k8s es el standard de facto
● Veremos mezcla de nodos clásicos e infra
serverless de contenedores orquestada
bajo la misma API
https://thenewstack.io/the-future-
of-kubernetes-is-serverless/
Azure Functions
● Tecnología FaaS de Azure
● En general se ejecutan bajo infra
propia: FunctionApps
● Se pueden “dockerizar” y por lo tanto
ejecutar en Kubernetes
Demo: Azure Functions en Kubernetes
Horizontal Pod Autoscaler
● Es capaz de escalar cargas de
trabajo en base a determinadas
métricas
○ Usualmente mem y CPU
● Puede ser tu amigo, pero también
tu peor enemigo…
Autoescalando Azure Functions
● Para cargas de trabajo “tradicionales” escalar en base a CPU/Mem
suele ser una buena elección
● Pero para cargas de trabajo serverless no lo es tanto ya que
escalas en base a los síntomas y no las causas
● Serverless suele ser event-based, es mejor escalar en base a
métricas vinculadas a esos eventos
○ Mensajes pendientes de procesar, …
● Kubernetes Event Driven Autoscaler
● Es capaz de leer métricas externas…
● … y exponerlas en el cluster, para que…
● … el HPA pueda usarlas para escalar.
● El scaler monitoriza los
triggers externos (p. ej.
mensajes de una cola)
● Esos triggers actualizan
métricas que se exponent a
través del metrics server
● El HPA escala el deployment
de AF basandose en esas
métricas
Scalers
● KEDA proporciona escaladores para distintas tecnologías y
clouds
● Continuamente se van añadiendo escaladores nuevos
● https://keda.sh/docs/2.0/scalers/
Escalando Azure Functions con KEDA
HPA puede ser tu enemigo
● El HPA no tiene en cuenta qué hace un
pod cuando debe desescalar
● Si la métrica indica que la carga de
trabajo debe desescalarse el HPA
desencadenará todo su poder
● Un pod puede ser eliminado mientras
está procesando datos!
Defendiendo tus pods del HPA
1. Usar pod lifetime cycles
● Cuando Kubernetes vaya a matar el pod, pedir un “tiempo
de gracia” adicional
● Funciona pero es “feo” y los pods pueden quedar en
terminating durante bastante tiempo
2. No usar deployments, usar jobs
Usando jobs para workloads serverless
● En este escenario no usamos el HPA
● En su lugar dejamos que KEDA cree
tantos jobs como sean necesarios
● Para ello el workload serverless debe
modelarse como un trabajo que
empieza y termina: el pod debe hacer
su tarea y terminar.
Escalando con Jobs
¡Gracias! 
https://keda.sh/

Más contenido relacionado

La actualidad más candente

Serverless application repository
Serverless application repositoryServerless application repository
Serverless application repositoryPaola Velazquez
 
La Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y AzureLa Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y AzureChristian Melendez
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)Ernesto Anaya
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudVíctor Leonel Orozco López
 
Monster migrations & hybrid cloud
Monster migrations & hybrid cloudMonster migrations & hybrid cloud
Monster migrations & hybrid cloudCloudmas
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...César Hernández
 
Arquitectura Serverless con AWS Lambda y MongoDB Atlas
Arquitectura Serverless con AWS Lambda y MongoDB AtlasArquitectura Serverless con AWS Lambda y MongoDB Atlas
Arquitectura Serverless con AWS Lambda y MongoDB AtlasMongoDB
 
Magallanes - PHPmvd Meet Up - Mayo 2014
Magallanes - PHPmvd Meet Up - Mayo 2014Magallanes - PHPmvd Meet Up - Mayo 2014
Magallanes - PHPmvd Meet Up - Mayo 2014Andrés Montañez
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talkCarlos Landeras Martínez
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónLuis Ruiz Pavón
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayPlain Concepts
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivirDomingo Suarez Torres
 
Derribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayDerribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayPlain Concepts
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextDomingo Suarez Torres
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Ricard Clau
 

La actualidad más candente (20)

Kubernetes Community Day Spain -> Crossplane
Kubernetes Community Day Spain -> CrossplaneKubernetes Community Day Spain -> Crossplane
Kubernetes Community Day Spain -> Crossplane
 
Serverless application repository
Serverless application repositoryServerless application repository
Serverless application repository
 
Gestión de proyectos con Maven
Gestión de proyectos con MavenGestión de proyectos con Maven
Gestión de proyectos con Maven
 
La Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y AzureLa Vida de un Desarrollador con Kubernetes y Azure
La Vida de un Desarrollador con Kubernetes y Azure
 
[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)[El comercio]php zend framework (speech)
[El comercio]php zend framework (speech)
 
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle CloudExplorando los objetos centrales de Kubernetes con Oracle Cloud
Explorando los objetos centrales de Kubernetes con Oracle Cloud
 
Monster migrations & hybrid cloud
Monster migrations & hybrid cloudMonster migrations & hybrid cloud
Monster migrations & hybrid cloud
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
 
Arquitectura Serverless con AWS Lambda y MongoDB Atlas
Arquitectura Serverless con AWS Lambda y MongoDB AtlasArquitectura Serverless con AWS Lambda y MongoDB Atlas
Arquitectura Serverless con AWS Lambda y MongoDB Atlas
 
Magallanes - PHPmvd Meet Up - Mayo 2014
Magallanes - PHPmvd Meet Up - Mayo 2014Magallanes - PHPmvd Meet Up - Mayo 2014
Magallanes - PHPmvd Meet Up - Mayo 2014
 
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
.Net Core Real time App on My Rasperry PI - Codemotion 2017 talk
 
Intro to the Cloud with Knative (Spanish)
Intro to the Cloud with Knative (Spanish) Intro to the Cloud with Knative (Spanish)
Intro to the Cloud with Knative (Spanish)
 
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integraciónASP.NET 5 en Linux y Mac OS X: herramientas e integración
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
 
Kubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev DayKubernetes 101 - Plain Concepts Dev Day
Kubernetes 101 - Plain Concepts Dev Day
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 
Derribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev DayDerribando la torre de marfil - Plain Concepts Dev Day
Derribando la torre de marfil - Plain Concepts Dev Day
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
 
Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2Escalabilidad y alto rendimiento con Symfony2
Escalabilidad y alto rendimiento con Symfony2
 
Web Day Devops - Plain Concepts
Web Day Devops - Plain ConceptsWeb Day Devops - Plain Concepts
Web Day Devops - Plain Concepts
 
Desarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud NativeDesarrollo moderno con DevOps y Cloud Native
Desarrollo moderno con DevOps y Cloud Native
 

Similar a Ejecutando workloads serverless en AKS con KEDA

Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureJose Luis Soria
 
Meetup AWS User Group chile - Diciembre 2018
Meetup AWS User Group chile - Diciembre 2018Meetup AWS User Group chile - Diciembre 2018
Meetup AWS User Group chile - Diciembre 2018Gonzalo Vásquez
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Restorando
 
Orquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS GlueOrquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS GlueGlobant
 
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar AzureAzure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar AzureAdrian Diaz Cervera
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Francisco Javier Toscano Lopez
 
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 nubeQuito Lambda
 
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
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computingykro
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataJosé Carlos García Serrano
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsErnesto Anaya
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesJose Luis Soria
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoRestorando
 

Similar a Ejecutando workloads serverless en AKS con KEDA (20)

Destino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para AzureDestino la Nube 2012 - ALM para Azure
Destino la Nube 2012 - ALM para Azure
 
Meetup AWS User Group chile - Diciembre 2018
Meetup AWS User Group chile - Diciembre 2018Meetup AWS User Group chile - Diciembre 2018
Meetup AWS User Group chile - Diciembre 2018
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Orquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS GlueOrquestando Pipelines de Datosen AWS con Step Function y AWS Glue
Orquestando Pipelines de Datosen AWS con Step Function y AWS Glue
 
Kubernetes workshop
Kubernetes workshopKubernetes workshop
Kubernetes workshop
 
Terraform Ansible v3.0
Terraform Ansible v3.0Terraform Ansible v3.0
Terraform Ansible v3.0
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar AzureAzure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
Azure Bootcamp Como montar una arquitectura Serverless y aprovechar Azure
 
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
Como sacar el máximo partido a los Cores de MuleSoft - optimización y buenas ...
 
Diseñando y operando al estilo DevOps
Diseñando y operando al estilo DevOpsDiseñando y operando al estilo DevOps
Diseñando y operando al estilo DevOps
 
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
 
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
 
Offering Cloud Solutions
Offering Cloud Solutions Offering Cloud Solutions
Offering Cloud Solutions
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
DevOps+[Chef/Docker]
 DevOps+[Chef/Docker] DevOps+[Chef/Docker]
DevOps+[Chef/Docker]
 
Analitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big dataAnalitica y toma de decisiones en tiempo real sobre plataformas big data
Analitica y toma de decisiones en tiempo real sobre plataformas big data
 
BBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOpsBBVA Arquitectura - Demo DevOps
BBVA Arquitectura - Demo DevOps
 
SecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de desplieguesSecondNug Febrero 2012 - Automatización de despliegues
SecondNug Febrero 2012 - Automatización de despliegues
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 

Más de Eduard Tomàs

C#9 - Más C# que nunca
C#9 - Más C# que nuncaC#9 - Más C# que nunca
C#9 - Más C# que nuncaEduard Tomàs
 
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDACollabDays 2020 Barcelona - Serverless Kubernetes with KEDA
CollabDays 2020 Barcelona - Serverless Kubernetes with KEDAEduard Tomàs
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
El "peor" lenguaje del mundo
El "peor" lenguaje del mundoEl "peor" lenguaje del mundo
El "peor" lenguaje del mundoEduard Tomàs
 
Containerize a netcore application with aks
 Containerize a netcore application with aks Containerize a netcore application with aks
Containerize a netcore application with aksEduard Tomàs
 
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)
Escenarios avanzados en AKS (Global Azure Bootcamp Barcelona 2019)Eduard Tomàs
 
Aplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosAplicaciones de consola fáciles? Más quisieramos
Aplicaciones de consola fáciles? Más quisieramosEduard Tomàs
 
Serverless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbServerless with Azure Functions and CosmosDb
Serverless with Azure Functions and CosmosDbEduard Tomàs
 
Microservices: Yes or not?
Microservices: Yes or not?Microservices: Yes or not?
Microservices: Yes or not?Eduard Tomàs
 
React native - Unleash the power of your device
React native - Unleash the power of your deviceReact native - Unleash the power of your device
React native - Unleash the power of your deviceEduard Tomàs
 
JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)JavaScript in 2016 (Codemotion Rome)
JavaScript in 2016 (Codemotion Rome)Eduard Tomàs
 
Asp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveAsp.Net Core 1.0 Deep Dive
Asp.Net Core 1.0 Deep DiveEduard Tomàs
 
React native - t3chfest 2016
React native - t3chfest 2016React native - t3chfest 2016
React native - t3chfest 2016Eduard Tomàs
 
React, Flux y React native
React, Flux y React nativeReact, Flux y React native
React, Flux y React nativeEduard Tomàs
 
Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Novedades de ASP.NET MVC6
Novedades de ASP.NET MVC6Eduard Tomàs
 
JavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbJavaScript - HTML5 - IndexedDb
JavaScript - HTML5 - IndexedDbEduard Tomàs
 
Winobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSWinobjc - Windows Bridge for iOS
Winobjc - Windows Bridge for iOSEduard Tomàs
 
EcmaScript unchained
EcmaScript unchainedEcmaScript unchained
EcmaScript unchainedEduard Tomàs
 

Más de Eduard Tomàs (20)

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

Ejecutando workloads serverless en AKS con KEDA

  • 1. Sponsored by Ejecutando workloads serverless en AKS Eduard Tomàs Tech Lead @ PlainConcepts Doing stuff and broking things on computers All sessions avaible on www.cloudlunchlearn.com/marathon 13th & 14th of May #KubernetesOnFire #kof
  • 2. Quien soy yo? ● Rompo cosas en Plain Concepts ● Hago cerveza ● Microsoft MVP desde 2012 ● @eiximenis
  • 3. Qué vamos a ver hoy? ● Serverless y Kubernetes ● Azure Functions en Kubernetes ● Escalando con KEDA ● Usando jobs
  • 4. Kubernetes ● El prota indiscutible si hablamos de contenedores ● Complejo de usar ● Distintos sabores, pero todos parecidos ● Puede con todo
  • 5. Serverless ● Es una tecnología molona. ● Despliegue ágil ● Escala rápidamente y de forma sencilla ● Gran potencial para muchos tipos de casos de uso
  • 6.
  • 7. Serverless y Kubernetes ● No tiene por qué ser una “lucha” ● Se pueden ejecutar cargas de trabajo serverless en Kubernetes ● Existen también implementaciones serverless de Kubernetes (EKS Fargate, AKS virtual nodes, …)
  • 8. Por qué ejecutar Serverless en k8s ● Fácil adopción de cloud híbrido / multicloud ● Menos lock-in ● Una sola plataforma qué gestionar ● Operaciones unificadas ● Más control sobre el H/W ● Ejecutar workloads serverless en el mismo entorno que otros workloads (service mesh, entornos compartidos, etc)
  • 9. El futuro de Kubernetes es Serverless ● Ya tenenos infra serverless de contenedores (Fargate, ACI, …) ● Esa infra debe ser orquestada ● La API de k8s es el standard de facto ● Veremos mezcla de nodos clásicos e infra serverless de contenedores orquestada bajo la misma API https://thenewstack.io/the-future- of-kubernetes-is-serverless/
  • 10. Azure Functions ● Tecnología FaaS de Azure ● En general se ejecutan bajo infra propia: FunctionApps ● Se pueden “dockerizar” y por lo tanto ejecutar en Kubernetes
  • 11. Demo: Azure Functions en Kubernetes
  • 12. Horizontal Pod Autoscaler ● Es capaz de escalar cargas de trabajo en base a determinadas métricas ○ Usualmente mem y CPU ● Puede ser tu amigo, pero también tu peor enemigo…
  • 13. Autoescalando Azure Functions ● Para cargas de trabajo “tradicionales” escalar en base a CPU/Mem suele ser una buena elección ● Pero para cargas de trabajo serverless no lo es tanto ya que escalas en base a los síntomas y no las causas ● Serverless suele ser event-based, es mejor escalar en base a métricas vinculadas a esos eventos ○ Mensajes pendientes de procesar, …
  • 14. ● Kubernetes Event Driven Autoscaler ● Es capaz de leer métricas externas… ● … y exponerlas en el cluster, para que… ● … el HPA pueda usarlas para escalar.
  • 15. ● El scaler monitoriza los triggers externos (p. ej. mensajes de una cola) ● Esos triggers actualizan métricas que se exponent a través del metrics server ● El HPA escala el deployment de AF basandose en esas métricas
  • 16. Scalers ● KEDA proporciona escaladores para distintas tecnologías y clouds ● Continuamente se van añadiendo escaladores nuevos ● https://keda.sh/docs/2.0/scalers/
  • 18. HPA puede ser tu enemigo ● El HPA no tiene en cuenta qué hace un pod cuando debe desescalar ● Si la métrica indica que la carga de trabajo debe desescalarse el HPA desencadenará todo su poder ● Un pod puede ser eliminado mientras está procesando datos!
  • 19. Defendiendo tus pods del HPA 1. Usar pod lifetime cycles ● Cuando Kubernetes vaya a matar el pod, pedir un “tiempo de gracia” adicional ● Funciona pero es “feo” y los pods pueden quedar en terminating durante bastante tiempo 2. No usar deployments, usar jobs
  • 20. Usando jobs para workloads serverless ● En este escenario no usamos el HPA ● En su lugar dejamos que KEDA cree tantos jobs como sean necesarios ● Para ello el workload serverless debe modelarse como un trabajo que empieza y termina: el pod debe hacer su tarea y terminar.