Charla que di en la Bilbostack 2022 sobre Kubernetes.
Discutía casos de uso, cuando usarlo y cuando no y algunos consejos destinados a aquellos que se están planteando usarlo.
3. #netcoreconf
¿Quien soy yo?
• Rompo cosas en Plain
Concepts
• Crafter de cerveza
• Friki Standard Nivel 10
• Microsoft MVP desde 2012
4.
5. ¿Qué vamos a ver hoy?
• Qué es Kubernetes
• ¿Lo necesitas?
• Algunas cosas a tener en cuenta…
6. ¿Qué es Kubernetes?
• Es una plataforma para ejecutar
aplicaciones basadas en
contenedores
• Orquesta dichas aplicaciones para
(intentar) garantizar tolerancia a
fallos, resiliencia y escalabilidad
• Ofrece mecanismos para ayudar a
despliegues sin caída de servicio,
rollbacks, canary deployments, …
9. No necesitas alta
disponibilidad
• Una de las necesidades que
mejor solventa Kubernetes
es dotar a tu app de alta
disponibilidad
• Pero eso viene con un
precio: complejidad
• Si tu aplicación no la require,
probablemente haya
mecanismos más simples
que k8s
10. Si tu aplicación
es un monolito
• Si tu aplicación es un solo
contenedor, usar Kubernetes
es matar moscas a
cañonazos
• Eso no implica que no
puedas usar contenedores,
simplemente que
Kubernetes no es la mejor
opción
11. Curva de
aprendizaje
• Kubernetes es complejo
• Esconde una falsa sencillez
• Aprovecharlo al 100%
requiere no solo que tus
apps estén preparadas para
ello, si no conocimientos
bastante específicos
• Y en on-premises mucho
más!
12. Coste
• Para sistemas pequeños el
coste puede no compensar
• Un cluster productivo de
Kubernetes requiere un
mínimo de 3+2 nodos
• El cloud mitiga en parte este
punto
13. Ventajas de
adoptar Kubernetes
• Inherentes (HA, escalabilidad, …)
• Homogeneidad
• *ops simplificado
• Menos vendor-lockin (¡ojo!)
14. Pasos para la
adopción de
Kubernetes
• Entender las ventajas
Adoptar containers
• Containerizar apps
• Refactorizar apps
Transformar apps
• Establecer CI / CD
• Monitorización
• Empoderar equipos
Desplegar en k8s
• Monitorizar recursos
• Decidir tamaños y políticas de escalado
• Reajustar cluster
Optimizar k8s
• Seguridad
• Mantenibilidad
• Automatización
Mejora de operaciones
• Ecosistema k8s
• Service Mesh,…
• Todo en k8s
K8s como plataforma
16. Es un producto
(muy) vivo!
• Kubernetes tiene una
cadencia de tres versiones
anuales
• Revisa el plan de
obsolescencia y planifica las
acciones necesarias
17. No hay modelo
de aplicación
• El modelo de k8s está más
orientado a infra que a apps
• Helm es un primer paso pero
la abstracción es débil
• Existen productos de vendors
pero, usualmente, con
vendor-lockin
• OAM (Open Application
Model) puede ser la solución
18. Dev vs Prod
• Los entornos de dev y prod
suelen ser bastante distintos
• Seguridad
• Políticas
• Configuraciones
adicionales
• …
19. Kubernetes NO
lo hace todo…
• No ofrece monitorización
• No ofrece balanceo inteligente
• No ofrece autoescalado en
base a eventos externos
• No ofrece inteligencia de red
• No ofrece mecanismos para
workloads serverless
• Pero permite que terceros
implementen todo eso y más
20. Kubernetes NO
lo hace todo…
• No ofrece monitorización
• Prometheus, Grafana, Fluentd,
Jaeger, kube-state-metrics,…
• No ofrece balanceo inteligente
• Ambassador, …
• No ofrece autoescalado en base a
eventos externos
• KNative, KEDA
• No ofrece inteligencia de red
• ISTIO, Linkerd, OSM,…
• No ofrece mecanismos para
workloads serverless
• OpenFaaS, OpenWhisk,…
• Pero permite que terceros
implementen todo eso y más
22. Resumiendo…
• Evalúa si necesitas
Kubernetes
• Ten clara tu motivación
• Compara ventajas e
inconvenientes
• Planifica su adopción a
corto, medio y largo plazo
• Investiga el ecosistema a su
alrededor