2. ¿Quien soy yo?
Rompo cosas en Plain Concepts
Hago cerveza
Microsoft MVP desde 2012
@eiximenis
3. Qué vamos a ver hoy?
• Serverless vs Kubernetes
• Workloads serverless en Kubernetes
• Escalando con KEDA
• Usando jobs
• Algo más… xD
4. Serverless vs Kubernetes
• A ver… no es una lucha
• Se pueden ejecutar cargas serverless en Kubernetes
• Knative, OpenFaaS, KEDA
• Existen runtimes serverless de contenedores
• Fargate, Cloud Run, ACI
5. El futuro presente de k8s es serverless
• Ya existe infraestructura serverless de
contenedores
• Esa infra debe ser orquestada
• API de k8s es el orquestador standard de facto
• Veremos Ya vemos mezclas de nodos clásicos
(máquinas) e infra serverless orquestada bajo la
misma API
https://thenewstack.io/the-future-
of-kubernetes-is-serverless/
6. ¿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)
7. Autoescalar cargas serverless
• 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, …
8. • Kubernetes Event Driven Autoscaler
• Proyecto OSS iniciado por RedHat y Microsoft
• Actualmente proyecto sandbox de la CNCF
• https://www.cncf.io/sandbox-projects/
• Permite escalar cargas de trabajo en base a eventos externos
9. 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
10. Scalers
• Se encargan de monitorizar los eventos externos
• Generan las métricas usadas por el HPA para autoescalar
• Existen multiples scalers para distintas Fuentes (SQS, RabbitMQ,
Kafka, Azure Service Bus, Prometheus metrics, Redis, InfluxDb, …)
• https://keda.sh/docs/2.3/scalers/
11. ScaledObject
• CRD de Keda que representa un deployment escalado en base a uno
o más scalers
• Contiene la configuración de los scalers y la referencia al
deployment a escalar
• KEDA crea automáticamente un HPA vinculado
12. Ojo con el HPA
• El HPA no tiene en cuenta qué está
haciendo un pod cuando debe
desescalar
• Si el proceso del evento es largo, el HPA
puede matar un pod que está
procesando datos
• Es posible usar el hook PreStop para
solucionar eso, pero hay otro método…
13. Usando Jobs
• En lugar de usar deployments y escalarlos usando un HPA se pueden
usar jobs
• En este modelo cada job procesa un conjunto de eventos
• KEDA creará tantos jobs como sea necesario para procesar todos los
eventos
• Dado que no hay desescalado, no es posible que un pod sea
terminado a medio proceso
14. ScaledJob
• CRD de KEDA que se usa para escalar una carga de trabajo en base a
jobs
• Contiene la plantilla del job y la configuración del scaler de KEDA
• En ese escenario es KEDA quien crea los jobs necesarios, no hay HPA
15. Escalando http: KEDA-HTTP
• El proyecto keda-http añade soporte para escalar workloads a través
de peticiones http
• https://github.com/kedacore/http-add-on
• Está en alfa, no maduro para producción (y apenas para desarrollo
xD)
16. KEDA-HTTP vs…
• KNative
• keda-http solo escala a través de http, Knative soporta escalado vía HTTP,
pero también por eventos (como keda-core)
• KNative va más allá que el puro escalado (p. ej. blue/green deploy)
• Open-FaaS
• OpenFaaS sigue el paradigma de FaaS
• Código se despliega a través de su propia CLI
• OpenFaaS suele desplegarse como parte del stack PLONK
17. KEDA-HTTP vs…
• Osiris
• Ambos usan el HPA para autoescalar (desde/hasta 0)
• Osiris usa anotaciones para configurar
• Osiris está archivado (¿deprecado?)
18. En resúmen
• Serverless y Kubernetes pueden ser amigos
• Hay opciones para ejecutar workloads serverless
• KEDA te da una serie de escaladores para escalar basados en
eventos externos
• Eso está en constante ebullición!