SlideShare una empresa de Scribd logo
1@micael_gallego
Testeando
aplicaciones Kubernetes:
escalabilidad y tolerancia
a fallos
Micael Gallego
Leganes - 15 Marzo 2019
@micael_gallego
¿Quién soy?
@micael_gallego
micael.gallego@urjc.es
@micaelgallego
Consultancy /Training
Cloud Computing
WebTechnologies
Extreme Programming
Testing / Git / Jenkins
Software Architecture
Concurrent Programming
http://codeurjc.es
Micael Gallego
Profesor Universitario /
Formador & Consultor
Developer
3@micael_gallego
Docker
@micael_gallego
@micael_gallego
Servicios en producción
•Asistencia en el despliegue y en la actualización
•Reinicio si el servicio finaliza o no responde a las
peticiones (resiliencia)
•Uso de más recursos hardware la carga aumenta
(escalabilidad)
•Aprovechamiento de recursos hardware
compartiendo pero sin interferencias
(multitenancy)
•Monitorización
6@micael_gallego
@micael_gallego
Kubernetes
@micael_gallego
Kubernetes
kubectl Internet
@micael_gallego
https://cloud.google.com/kubernetes-engine/
https://aws.amazon.com/es/eks/ https://azure.microsoft.com/services/container-service/
https://www.openshift.com/learn/topics/kubernetes/
Kubernetes en producción
@micael_gallego
Kubernetes en producción
11@micael_gallego
Escalabilidad en Kubernetes
@micael_gallego
Escalabilidad
pod
container
container
pod
container
container
replicasservice
...
Tráfico de red
Balanceo de
carga
13@micael_gallego
•Si un pod no es capaz de atender el tráfico con
calidad de servicio, podemos crear más
réplicas de ese pod
•La carga se distribuye entre ellos
•Cada pod puede ejecutarse en cualquier nodo
del cluster
•Los nodos se pueden añadir bajo demanda
Escalabilidad
@micael_gallego
Reparto de carga
•userspace
– Round robin
•iptables
– Random
•ipvs
– Round robin
– Least connection
– Destination hashing
– Source hashing
– Shortest expected delay
– Never queue
Proxy-mode
https://kubernetes.io/docs/concepts/services-networking/
@micael_gallego
Reparto de carga
Nodo1
Pod1 Pod2
IP 34.56.21.123
Port 34567
Nodo2
Pod3 Pod4
Service
IP 34.56.34.65
Port 34567
LoadBalancer
DNS www.app.com
Port 80
16@micael_gallego
Demo time
Web gatitos con una réplica y con 2
réplicas
$ kubectl create -f webgatos/webgatos.yml
$ minikube service webgatos-service
$ kubectl get pods
$ kubectl scale deployment/webgatos-deploy --replicas=2
$ kubectl get pods
17@micael_gallego
•Horizontal Pod Autoscaler
– El número de réplicas puede cambiar de
forma automática en base a alguna métrica
de carga objetivo
– Aumenta réplicas si se sobrepasa la métrica
– Reduce réplicas si se está por debajo
Autoescalado
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
18@micael_gallego
•Horizontal Pod Autoscaler
Autoescalado
https://medium.com/magalix/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autos
caler-and-vertical-pod-2a441d9ad231
@micael_gallego
Autoescalado
apiVersion: apps/v1
kind: Deployment
...
spec:
...
template:
...
spec:
containers:
- name: hpa-example
image: codeurjc/web:v1
resources:
limits:
cpu: 200m
memory: 128Mi
requests:
cpu: 100m
memory: 64Mi
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
...
spec:
...
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
targetAverageUtilization: 10
20@micael_gallego
Demo time
Web raíz cuadrada con autoscaling
$ kubectl create -f hpa/deployment.yaml
$ kubectl create -f hpa/hpa-autoscaling.yaml
$ watch kubectl get pods
$ kubectl run load-generator --generator=run-pod/v1 
-it --image=busybox:1.30 /bin/sh
# while true; do wget -q -O- http://php-apache; done
21@micael_gallego
•Vertical Pod Autoscaler
– Ajusta los recursos solicitados de un pod en base a
los recursos usados realmente
– Para aplicar los nuevos recursos, reinicia el pod
– Los límites máximos no cambian
– No es compatible con HPA
– En desarrollo!!!
Autoescalado
https://cloud.google.com/kubernetes-engine/docs/concepts/verticalpodautoscaler
https://medium.com/magalix/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autos
caler-and-vertical-pod-2a441d9ad231
22@micael_gallego
Autoescalado
https://medium.com/magalix/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autos
caler-and-vertical-pod-2a441d9ad231
@micael_gallego
● Cluster autoscaling
● El número de nodos de un cluster puede cambiar
dinámicamente en función del número de pods del cluster
● Si un nuevo pod que se va a crear no cabe en el cluster
(por la reserva de recursos de cada uno), se crea un nuevo
nodo en el cluster
● Esta funcionalidad requiere de la instalación de un plugin
en Kubernetes dependiendo del proveedor cloud /VMs.
https://kubernetes.io/docs/tasks/administer-cluster/cluster-management/#cluster-
autoscaling
https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler
Autoescalado
@micael_gallego
Autoescalado
https://medium.com/magalix/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autos
caler-and-vertical-pod-2a441d9ad231
@micael_gallego
● Escalado inmediato?
● Se tienen que recoger métricas
● HPA consulta las métricas cada cierto tiempo (por defecto
30 seg)
● Después de un cambio, hay periodo de espera hasta que
todo se estabiliza (3 min por defecto)
● Los pods pueden tardar en arrancar y estar disponibles
● Los nodos tardan mucho más en arrancar
Autoescalado
@micael_gallego
Sobredimensiona un poco si quieres
soportar picos de tráfico
Autoescalado
O saca la bola de cristal
https://medium.com/netflix-techblog/scryer-netflixs-predictive-auto-scaling-engine-part-2-b
b9c4f9b9385
@micael_gallego
● Se asume que los pods de un deployment no
tienen estado (stateless)
● Cualquier pod puede ser eliminado (scale in)
● Un nuevo pod pueda atender tráfico de un usuario
que antes atendía otro pod (scale out)
● Pero hay veces que nuestras apps tienen estado
(statefull)
Escalado con estado
Qué hacemos?
28@micael_gallego
Demo time
App con estado replicada
$ kubectl create -f webapp-stateful/k8s/webapp.yaml
$ minikube service webapp
$ kubectl delete -f webapp-stateful/k8s/webapp.yaml
@micael_gallego
● Algunas opciones
● Convierte la app en stateless > Mueve el estado a
otro sitio
● Crea aplicaciones que repliquen el estado entre sus
réplicas
● Usa mecanismos de escalado con estado en
Kubernetes (StatefulSet)
● Gestiona el estado fuera de Kubernetes (en los
servicios proporcionados por el proveedor en la nube
Escalado con estado
@micael_gallego
● Convierte la app en stateless
● Web stateful:
● App web que mantiene datos del usuario conectado
en memoria
● Peticiones pueden ser atendidas por diferentes
pods y se le considera nuevo usuario
● Solución:
● Los datos de la sesión tienen que estar en un
recurso compartido
Escalado con estado
@micael_gallego
● Convierte la app en stateless
Escalado con estado
https://spring.io/projects/spring-session
32@micael_gallego
Demo time
App sin estado replicada
$ kubectl create -f webapp-stateless/k8s/webapp.yaml
$ minikube service webapp
$ kubectl delete -f webapp-stateless/k8s/webapp.yaml
@micael_gallego
● Tests funcionales
● No vale con verificar el status de la petición
Escalado con estado
@micael_gallego
● Aplicaciones que repliquen estado
Escalado con estado
https://hazelcast.com/
Estructuras de datos compartidas y replicadas para Java
@micael_gallego
● Usa mecanismos de escalado stateful
● Los recursos StatefulSet proporcionan un
mecanismo similar a los Deployment pero con
características específicas para contenedores con
estado:
● Identificadores de red estables y únicos por pod
● Almacenamiento persistente estable por pod
● Despliegue y escalado ordenado de pods
● Terminado y borrado ordenado de pods
Escalado con estado
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
@micael_gallego
● Usa mecanismos de escalado stateful
Escalado con estado
Es muy complejo diseñar un sistema
distribuido con estado escalable y
tolerante a fallos
Mejor usa servicios existentes
preparados para trabajar en
Kubernetes
@micael_gallego
● MySQL escalables y tolerantes a fallos
en K8s
Escalado con estado
https://vitess.io/
https://portworx.com/
https://github.com/oracle/mysql-operator
@micael_gallego
● Gestiona el estado fuera de k8s
Escalado con estado
Amazon RDS
39@micael_gallego
Pruebas de Escalabilidad
@micael_gallego
● Se usan herramientas de pruebas de
carga para simular tráfico
● Se verifica la calidad de servicio desde
fuera
● Se observa que kubernetes (nodos) y las
apps (réplicas) escalan como se espera
Pruebas de escalabilidad
@micael_gallego
Pruebas de escalabilidad
● Herramientas de carga y verificación de la
calidad de servicio
42@micael_gallego https://www.loadmill.com
Pruebas de escalabilidad
43@micael_gallego
•Test de 5 minutos de duración
•50 sesiones simultáneas haciendo peticiones http
Pruebas de escalabilidad
44@micael_gallego
Pruebas de escalabilidad
@micael_gallego
¿Qué ocurre en el cluster?
Observabilidad
● Monitorización (CPU, memoria…)
● Alertas y visualización
● Agregación de logs
● Registro de la comunicación entre servicios
Pruebas de escalabilidad
@micael_gallego
Observabilidad
● Monitorización y visualización
Kubernetes Dashboard
@micael_gallego
Observabilidad
● Monitorización y visualización
Prometheus + Grafana
@micael_gallego
Observabilidad
● Monitorización y visualización
@micael_gallego
Observabilidad
● Agregración de logs
ElasticSearch + FluentD + Kibana
@micael_gallego
Observabilidad
● Agregración de logs
ElasticSearch + FluentD + Kibana
@micael_gallego
Observabilidad
● Registro de comunicación entre servicios
Zipkin
@micael_gallego
Observabilidad
● ¿Tenemos que adaptar las aplicaciones?
● No requiere cambiar las aplicaciones
● Monitorización de métricas de sistema
● Visualización y alertas
● Recogida de logs
@micael_gallego
Observabilidad
● ¿Tenemos que adaptar las aplicaciones?
● Requiere cambios en las aplicaciones
● Monitorización de métricas de negocio
● Generación de logs con información
relevante (a ser posible estructurada)
● Comunicación entre servicios: Enviar trazas a
zipkin
@micael_gallego
Observabilidad
● Para testing automático necesitamos APIs
en los tests
● ElasticSearch
● Prometheus
● Kuebernetes
● Zipkin
https://prometheus.io/docs/prometheus/latest/querying/api/
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs.html
https://kubernetes.io/docs/reference/using-api/client-libraries/
https://zipkin.io/zipkin-api/
@micael_gallego
Observabilidad
● Kubernetes
https://kubernetes.io/docs/reference/using-api/client-libraries/
56@micael_gallego
Tolerancia a fallos
@micael_gallego
Para ser tolerante a fallos se
necesita ser redundante
Tolerancia a fallos
Tiene que haber varias copias de
cada elemento desacopladas entre sí
para que un fallo en una no afecte a
las demás
@micael_gallego
https://aws.amazon.com/es/eks/
Tolerancia a fallos
● Despliegue redundante y aislado
@micael_gallego
Tolerancia a fallos
● Los servicios stateful de k8s son redundantes
A distributed, reliable key-value store for the
most critical data of a distributed system
https://coreos.com/etcd/
@micael_gallego
Tolerancia a fallos
pod
container
container
pod
container
container
replicasservice
...
Tráfico de red
Balanceo de
carga
Las réplicas de los pods ejecutándo en diferentes nodos del
cluster ofrecen redundancia a nivel de aplicación
@micael_gallego
● Si un nodo del cluster falla
● Los pods ejecutando en ese nodo se crean en
otro nodo disponible
● El nodo fallido se “sustituye” por un nuevo
nodo en el que se pueden volver a desplegar
pods
Tolerancia a fallos
https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
62@micael_gallego
Pruebas de tolerancia a fallos
63@micael_gallego
Pruebas de tolerancia a fallos
“Limited scope,
continuous,
disaster
recovery”
https://medium.com/russmiles/chaos-engineering-for-the-business-17b723f26361
Russ Miles
http://principlesofchaos.org/
64@micael_gallego
•Introducir errores aleatorios e impredecibles
•Su objetivo es proporcionar datos sobre al
estabilidad de los sistemas
•Sabemos que los sistemas van a fallar
•Por qué no introducir nosotros los fallos para
ver cómo de resistentes son nuestros sistemas
Pruebas de tolerancia a fallos
65@micael_gallego
•Chaos monkeys de Netflix
– Creada en 2011
– Desconectaba nodos de
AWS en los sistemas en
producción de Netflix
– Se comprobaba cómo se
comportaba el resto del
sistema ante la caída de
una instancia
https://github.com/netflix/chaosmonkey
Pruebas de tolerancia a fallos
66@micael_gallego
•Ejemplos de fallos que podemos inducir (caos)
– Para una MáquinaVirtual
– Incrementar la latencia en la red
– Forzar errores HTTP
– Aumentar la carga de CPU
– Simular disco lleno
– Etc...
Pruebas de tolerancia a fallos
67@micael_gallego
•Metodología
– Partimos de un estado estable
– Inducimos caos
– Comparamos el comportamiento del estado
estable frente al estado problemático
– Las herramientas de observabilidad son
esenciales
Pruebas de tolerancia a fallos
68@micael_gallego
Herramientas de
Caos para Kubernetes
69@micael_gallego
•Chaos as a
Service
•Basado en cliente/
servidor
•Es necesario
instalar un
componente en
nuestro cluster k8s
Gremlin
https://www.gremlin.com/
71@micael_gallego
• Podemos ver los nodos de nuestro cluster en su web
Gremlin
72@micael_gallego
•Tipos de caos (versión gratuita)
– Apagar un nodo
Gremlin
73@micael_gallego
Gremlin
•Tipos de caos (versión gratuita)
– Añadir carga de CPU
74@micael_gallego
●
Carga de CPU
●
Si lanzamos una prueba de carga elegimos un nodo
de los disponibles, un tiempo de ejecución y cuántos
nodos usar.
●
En las métricas de nuestro cluster podemos ver cómo
la carga de CPU aumenta
Gremlin
75@micael_gallego
•Elimina un pod cada cierto tiempo
•El temporizador puede ser configurado
•Podemos así comprobar como se comporta
nuestra app cuando los pods se mueren
súbitamente
•Script de bash que usa kubectl
Pod-Chaos-Monkey
https://github.com/jnewland/kubernetes-pod-chaos-monkey
76@micael_gallego
•Desplegamos una aplicación con un único pod
•La app tarda 2 seg en procesar cada petición
•Usaremos LoadMill para simular la carga y
analizar la calidad de servicio
•Se eliminará un pod cada 30 segundos
Pod-Chaos-Monkey
77@micael_gallego
Pod-Chaos-Monkey
Prueba con caos: 1 pod
78@micael_gallego
Pod-Chaos-Monkey
Prueba con caos: 2 pod
79@micael_gallego
Pod-Chaos-Monkey
•Vemos
que los
pods se
regeneran
cada 30
segundos
80@micael_gallego
•Es la versión de Netflix Chaos Monkey
aplicada a k8s
•Se puede planificar para que sólo actúe en
ciertas franjas horarias
•Se suelen usar horas valle
Kube-Monkey
https://github.com/asobti/kube-monkey
81@micael_gallego
•En los deployments se especifican labels para
configurar Kube-Monkey
– Si está habilitado o no para ser eliminada por
kube-monkey
– El identificador de la app
– El modo de muerte: Puedes matar un solo pod o
todos o un porcentaje
– Etc…
Kube-Monkey
82@micael_gallego
Kube-Monkey
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monkey-victim
namespace: app-namespace
spec:
template:
metadata:
labels:
kube-monkey/enabled: enabled
kube-monkey/identifier: monkey-victim
kube-monkey/kill-mode: "fixed"
kube-monkey/kill-value: '1'
[... omitted ...]
habilitado
identificador
Modo de
muerte
Valor de
muerte
83@micael_gallego
¿Cómo ser más
tolerantes a los fallos?
84@micael_gallego
•¿Por qué el cliente recibe errores cuando hay
dos pods?
– Porque el pod que atiende la petición muere
y se envía el error al cliente
•¿Se podría reintentar la petición en este caso
para que llegue al otro pod?
– El cliente podría reintentar, pero no el pod
Mejora en tolerancia a fallos
85@micael_gallego
¿Podría reintentar el
balanceador (servicio)?
Mejora en tolerancia a fallos
86@micael_gallego
87@micael_gallego
•Es un plugin de Kubernetes que gestiona las
peticiones de red que llegan a un pod (y las que
salen de él)
•Mejora la tolerancia a fallos
– Permite reintentar peticiones fallidas
– Permite proteger servicios para que sean más
tolerantes a fallos (Circuit breaker, políticas…)
– Permite controlar los timeouts de las peticiones
Istio
88@micael_gallego
Istio
https://istio.io/
Ofrece muchos más servicios de red
89@micael_gallego
Istio
Para controlar el tráfico, Istio pone un micro-
proxy al lado de cada pod, a la entrada y a la
salida de cada nodo del cluster
Service Mesh
90@micael_gallego
Istio
https://istio.io/
Gateway
Para poder aplicar Istio a las
llamadas externas, se usa un Istio
Gateway en vez de un Ingress
91@micael_gallego
Istio
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: httpbin-gateway
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "httpbin.example.com"
https://istio.io/docs/tasks/traffic-management/ingress/
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: httpbin
spec:
hosts:
- "httpbin.example.com"
gateways:
- httpbin-gateway
http:
- match:
- uri:
prefix: /status
- uri:
prefix: /delay
route:
- destination:
port:
number: 8000
host: httpbin
92@micael_gallego
•Mejoras en tolerancia a fallos con Istio a los
clientes del servicio
– Timeout de las peticiones (para no esperar
demasiado)
– Reintentos en peticiones fallidas
Istio
93@micael_gallego
•Mejoras en tolerancia a fallos con Istio al
servicio
– Reintentos con tiempo de espera (para no
sobrecargar el servicio)
– Limitar el número de conexiones concurrentes
– Verificación de la salud de los servicios (health-
check)
– Circuit-breakers a los pods para que se recuperen
antes de atender nuevas peticiones
Istio
94@micael_gallego
•Reintentos
Istio
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- match:
- uri:
prefix: /app
- route:
- destination:
host: ratings
port:
number: 80
retries:
attempts: 3
perTryTimeout: 2s
service
Retries config
95@micael_gallego
•Pruebas de pod-chaos-monkey sin reintentos
Istio
96@micael_gallego
Istio
Prueba con caos: 2 pod + istio
97@micael_gallego
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- match:
- uri:
prefix: /app
route:
- destination:
host: ratings
subset: v1
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- name: v1
trafficPolicy:
connectionPool:
tcp:
maxConnections: 100
•Circuit breacker
Istio
Tenemos que crear
un recurso nuevo
98@micael_gallego
Istio
•Istio también se puede usar como herramienta
para insertar caos en las peticiones de red
– Insertar errores de API rest
– Insertar latencia
•Podemos hacer pruebas de tolerancia a fallos
con Istio
99@micael_gallego
Istio
•Errores en
peticiones de red
– Creamos
gateway,
deployment y
service
– Creamos virtual
service
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: nginx-color-http-error
spec:
hosts:
- "*"
gateways:
- nginx-color-gateway
http:
- match:
- uri:
prefix: /app
route:
- destination:
host: nginx
port:
number: 80
fault:
abort:
percent: 50
httpStatus: 503
100@micael_gallego
Demo time
Inyección de errores
$ kubectl config use-context istio.k8s.codeurjc.es
$ kubectl create -f nginx-color-gateway.yaml
$ kubectl apply -f nginx-color2.yml
$ kubectl apply -f nginx-color2-vs.yml
$ kubectl apply -f nginx-color2-vs-error.yml
101@micael_gallego https://elastest.io/
https://www.codeurjc.es/mastercloudapps/
Master en
Desarrollo y Despliegue de
Aplicaciones en la Nube
Laboratorio de
Software
Septiembre 2019Online / Clases en directo
103@micael_gallego
Testeando aplicaciones Kubernetes:
escalabilidad y tolerancia a fallos
Gracias!!!
Leganes - 15 Marzo 2019
Micael Gallego

Más contenido relacionado

PPTX
Kotlin: El despertar de la fuerza!
PDF
introducción a Docker
PDF
Cloud Migration Paths: Kubernetes, IaaS, or DBaaS
 
PDF
Google Kubernetes Engine (GKE) deep dive
PPTX
Capitulo iii ihc_2020_buap_a
PPTX
HTAP Queries
PDF
Tipos de Requerimientos en Ingeniería de Software
PPSX
SOLID Principles and The Clean Architecture
Kotlin: El despertar de la fuerza!
introducción a Docker
Cloud Migration Paths: Kubernetes, IaaS, or DBaaS
 
Google Kubernetes Engine (GKE) deep dive
Capitulo iii ihc_2020_buap_a
HTAP Queries
Tipos de Requerimientos en Ingeniería de Software
SOLID Principles and The Clean Architecture

La actualidad más candente (20)

PDF
Clean architecture with asp.net core
PPTX
Autoscaling with Kubernetes
PDF
CI/CD Tools Universe: The Ultimate List
PDF
Software Project Management: Business Case
PPT
Prototipado del software
PPTX
Principios SOLID
PDF
Introducing Clean Architecture
PPTX
Autoscaling in Kubernetes
PPTX
PDF
3. Análisis de Requerimientos
PDF
FOSDEM 2012 - OpenNebula Project
PPTX
software testing
PPTX
Easy Java Integration Testing with Testcontainers​
PDF
Sistemas Operativos Mecanismos y Politicas
PPTX
Jenkins - From Continuous Integration to Continuous Delivery
PDF
Trunk based development
PDF
Optimizing MariaDB for maximum performance
PDF
Metodología xp
PDF
Introduction to the Disruptor
PPTX
Capacity Planning For Your Growing MongoDB Cluster
Clean architecture with asp.net core
Autoscaling with Kubernetes
CI/CD Tools Universe: The Ultimate List
Software Project Management: Business Case
Prototipado del software
Principios SOLID
Introducing Clean Architecture
Autoscaling in Kubernetes
3. Análisis de Requerimientos
FOSDEM 2012 - OpenNebula Project
software testing
Easy Java Integration Testing with Testcontainers​
Sistemas Operativos Mecanismos y Politicas
Jenkins - From Continuous Integration to Continuous Delivery
Trunk based development
Optimizing MariaDB for maximum performance
Metodología xp
Introduction to the Disruptor
Capacity Planning For Your Growing MongoDB Cluster
Publicidad

Similar a Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos (20)

PDF
DevOps Spain 2019. Carlos Landeras-Plain Concepts
PDF
Docker y Kubernetes, en busca de la alta disponibilidad
PPTX
Kubernetes workshop
PDF
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
PPTX
Kubernetes 101
PDF
Cloud Native Mexico - Introducción a Kubernetes
PDF
Explorando los objetos centrales de Kubernetes con Oracle Cloud
PDF
Kubernetes - Container Orchestration, Deployment and Scaling
PPTX
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
PDF
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
PDF
Kubernetes - #gdglimasummit
PDF
Java Dev Day 2019 No kuberneteen por convivir
PPTX
Escalando workloads serverless en Kubernetes con Keda
PDF
meetup digital ocean kubernetes
PDF
Kubernetes para developers
PDF
Kubernetes - #dockerconlima
PPTX
Esos contenedores, ¡a producción! (Commit Conf 2018)
PDF
Orquestación de contenedores con Kubernetes
PDF
Orquestación de contenedores con Kubernetes SGNext
PPTX
Google Cloud Storage ambiente en desarrollo en la nube
DevOps Spain 2019. Carlos Landeras-Plain Concepts
Docker y Kubernetes, en busca de la alta disponibilidad
Kubernetes workshop
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes 101
Cloud Native Mexico - Introducción a Kubernetes
Explorando los objetos centrales de Kubernetes con Oracle Cloud
Kubernetes - Container Orchestration, Deployment and Scaling
KCDS 2021- Escalando workloads serverless en Kubernetes con KEDA
VLCSofting 2021 - HARD AS A POD 落. HARDENING DE DESPLIEGUES EN KUBERNETES CON...
Kubernetes - #gdglimasummit
Java Dev Day 2019 No kuberneteen por convivir
Escalando workloads serverless en Kubernetes con Keda
meetup digital ocean kubernetes
Kubernetes para developers
Kubernetes - #dockerconlima
Esos contenedores, ¡a producción! (Commit Conf 2018)
Orquestación de contenedores con Kubernetes
Orquestación de contenedores con Kubernetes SGNext
Google Cloud Storage ambiente en desarrollo en la nube
Publicidad

Más de Micael Gallego (20)

PDF
Modernizando el desarrollo de decenas de mini-apps web con Kubernetes - TechF...
PDF
Software libre para videoconferencias
PDF
La evaluación con realimentación y posibilidad de recuperación para evitar el...
PDF
WebRTC en tu web con OpenVidu
PDF
¿Cómo poner software de calidad en manos del usuario de forma rápida?
PDF
Curso Angular 9 - CodeURJC - Marzo 2020
PDF
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
PDF
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
PDF
Dev Tools para Kubernetes - Codemotion 2019
PDF
Testing cloud and kubernetes applications - ElasTest
PDF
Curso Kubernetes CodeURJC
PDF
OpenVidu Commitconf 2018
PDF
Introducción a las Pruebas Software
PDF
Node para Javeros: Conoce a tu enemigo
PDF
Testing fácil con Docker: Gestiona dependencias y unifica entornos
PDF
Using Docker to build and test in your laptop and Jenkins
PDF
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
PDF
Como ser mas productivo en el desarrollo de aplicaciones
PDF
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
PDF
Docker para Data Scientist - Master en Data Science URJC
Modernizando el desarrollo de decenas de mini-apps web con Kubernetes - TechF...
Software libre para videoconferencias
La evaluación con realimentación y posibilidad de recuperación para evitar el...
WebRTC en tu web con OpenVidu
¿Cómo poner software de calidad en manos del usuario de forma rápida?
Curso Angular 9 - CodeURJC - Marzo 2020
Concurrencia y asincronía: Lenguajes, modelos y rendimiento: GDG Toledo Enero...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Dev Tools para Kubernetes - Codemotion 2019
Testing cloud and kubernetes applications - ElasTest
Curso Kubernetes CodeURJC
OpenVidu Commitconf 2018
Introducción a las Pruebas Software
Node para Javeros: Conoce a tu enemigo
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Using Docker to build and test in your laptop and Jenkins
Desarrollo centrado en tareas en Eclipse con Mylyn 2009
Como ser mas productivo en el desarrollo de aplicaciones
TypeScript: Un lenguaje aburrido para programadores torpes y tristes
Docker para Data Scientist - Master en Data Science URJC

Último (11)

PPTX
Presentación de un estudio de empresa pp
PPTX
tema-2-interes-.pptx44444444444444444444
PPTX
presentacion_energias_renovables_renovable_.pptx
PDF
Herramientaa de google google keep, maps.pdf
PPTX
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
PDF
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
PDF
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
PDF
Mesopotamia y Egipto.pptx.pdf historia universal
PDF
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
PPTX
Guia de power bi de cero a avanzado detallado
PPT
laser seguridad a la salud humana de piel y vision en laser clase 4
Presentación de un estudio de empresa pp
tema-2-interes-.pptx44444444444444444444
presentacion_energias_renovables_renovable_.pptx
Herramientaa de google google keep, maps.pdf
FUNCIONES DE CLASSROOM EN EL FUNCIONAMIENTO ESCOLAR
[Ebook gratuito] Introducción a la IA Generativa, Instalación y Configuración...
CAPACITACIÓN MIPIG - MODELO INTEGRADO DE PLANEACIÓN Y GESTIÓN
Mesopotamia y Egipto.pptx.pdf historia universal
Frases de Fidel Castro. Compilación Norelys Morales Aguilera
Guia de power bi de cero a avanzado detallado
laser seguridad a la salud humana de piel y vision en laser clase 4

Testeando aplicaciones Kubernetes: escalabilidad y tolerancia a fallos