Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DevOps Spain 2019. Carlos Landeras-Plain Concepts

65 views

Published on

Ponecia. Escalado, alta disponibilidad y tolerancia a fallos con Kubernetes

Published in: Technology
  • Be the first to comment

  • Be the first to like this

DevOps Spain 2019. Carlos Landeras-Plain Concepts

  1. 1. Patrocina Colabora Organiza Escalado, alta disponibilidad y tolerancia a fallos con Kubernetes Carlos Landeras Martínez Technical Lead at Plain Concepts Microsoft MVP at Developer Technologies
  2. 2. Índice AGENDA ¿Qué es Kubernetes? Introducción Conceptos básicos de Kubernetes Cluster, Pods, Deployments, Services Horizontal Pod Autoscaler (HPA) Configuración del escalado horizontal de deployments Demo HPA en Azure Kubernetes Service Escalado automático con HPA y monitorización Alta disponibilidad y tolerancia a fallos Liveness and readiness probes Demo alta disponibilidad Deployments confiables y a dormir tranquilos
  3. 3. ¿Qué es Kubernetes? Kubernetes es una plataforma open-source para el despliegue y orquestación de aplicaciones contenerizadas y servicios. Kubernetes asigna recursos a contenedores y se encarga de la replicación, escalado, conmutación por error y de otras tareas de administración para la ejecución de aplicaciones de manera confiable con utilización eficiente de recursos.
  4. 4. Conceptos Básicos ¿Qué es un Cluster? • Un clúster de Kubernetes está compuesto por nodos. • Un nodo es la unidad hardware mas pequeña de computación en Kubernetes. • Un nodo puede ser una máquina física en un datacenter o una máquina virtual en la nube. • Un clúster agrupa los recursos de los nodos para componer una máquina mucho mas potente. • El clúster maneja de manera inteligente la distribución de trabajo entre los nodos.
  5. 5. Conceptos Básicos ¿Qué es un Pod ? Los pods son las unidades de computación desplegables más pequeñas que se pueden crear y administrar en Kubernetes. Un pod puede estar compuesto de uno o más contenedores. Si existen varios contenedores estos compartirán el almacenamiento y la red. English–detectedEnglish–detectedEnglish–detected
  6. 6. Conceptos Básicos ¿Qué es un Deployment ? Un Deployment es la unidad de mas alto nivel que podemos gestionar en Kubernetes. Su despliegue genera un ReplicaSet y nos brinda los siguientes beneficios: • Control de replicas • Escalabilidad de pods • Actualizaciones continuas • Despliegues automáticos • Rollback a versiones anteriores English–detectedEnglish–detectedEnglish–detected
  7. 7. Conceptos Básicos ¿Qué es un Servicio? Los servicios definen un conjunto lógico de pods y la política de como se debe acceder a ellos. La vida de un pod es efímera y estos se crean y se destruyen, pero gracias a los servicios siempre tenemos acceso seguro a los pods que se encuentran disponibles. Para exponer un pod o un deployment utilizamos los llamados “label selectors”. English–detectedEnglish–detectedEnglish–detected
  8. 8. Horizonal Pod Autoscaler Horizontal Pod Autoscaler o HPA nos permite escalar automáticamente el número de pods de un deployment basándose en el consumo de CPU u otras métricas personalizadas. English–detectedEnglish–detectedEnglish–detected ¿Cómo escalamos de manera automática?
  9. 9. Demo Horizontal Pod Autoscaler
  10. 10. Alta disponibilidad y tolerancia a fallos English–detectedEnglish–detectedEnglish–detected Una aplicación pueden sufrir un deadlock, bloquearse de manera indefinida y estar fuera de servicio, pero como su proceso sigue en ejecución, Kubernetes piensa que todo está bien y sigue enviando peticiones al pod.
  11. 11. Alta disponibilidad y tolerancia a fallos English–detectedEnglish–detectedEnglish–detected Liveness Probes Los “Liveness probes” nos permiten definir pruebas que ayudan a evaluar cuando un pod no está funcionando correctamente y tiene que ser reiniciado. Podemos configurar pruebas HTTP, TCP y Command
  12. 12. Alta disponibilidad y tolerancia a fallos English–detectedEnglish–detectedEnglish–detected Imagina que tus aplicaciones tardan un periodo de tiempo en “calentar e iniciarse por completo”. Kubernetes podría estar enviando tráfico a aplicaciones que aún no se encuentran disponibles cuando las detecta en ejecución. POD
  13. 13. Alta disponibilidad y tolerancia a fallos English–detectedEnglish–detectedEnglish–detected Readiness Probes Los “Readiness probes” permiten saber cuando un pod se encuentra disponible y completamente inicializado. Los pods que no estén listos serán excluidos del balanceo de carga y no servirán peticiones.
  14. 14. Alta disponibilidad y tolerancia a fallos English–detectedEnglish–detectedEnglish–detected Readiness Probes DISCLAIMER : Si vas a dar tus primeros pasos con liveness y readiness probes, ten cuidado con el parámetro: initialDelaySeconds
  15. 15. Demo Alta disponibilidad y tolerancia a fallosProblemas
  16. 16. LOAD BALANCER FAKE Service Bus Estructura de la demo Dependencias externas
  17. 17. Alta disponibilidad y tolerancia a fallos English–detectedEnglish–detectedEnglish–detected Resumen Utilizando una combinación correcta de liveness y readiness probes conseguimos que Kubernetes pueda “sanar” nuestras aplicaciones desplegadas. Gracias a estos mecanismos del orquestador conseguimos tener zero downtime, alta escalabilidad y tolerancia a fallos.
  18. 18. Patrocina Colabora

×