Este documento describe cómo Kubernetes puede ayudar a enfrentar los desafíos de la orquestación de contenedores, incluyendo la comunicación entre contenedores, el monitoreo de recursos, la configuración y la administración de secretos. Kubernetes proporciona características como el balanceo de carga, la asignación de recursos y el escalado automático que permiten administrar contenedores en un cluster. El documento también presenta un caso práctico de cómo una agencia gubernamental en Perú usa Kubernetes para implementar una arquitectura de microservicios
7. Kubernetes (k8s)
•Google
•~15 años usando contenedores
•Creo Borg para administrar los contenedores
•A partir de la experiencia de Borg, nace k8s
•Open Source con más de 1250 contribuidores
8. Características
• Recursos de diversas maquinas (VMs, Bare-metal) como un cluster
• Control Plane (Nodos Master)
• controller-manager, scheduler, api-server
• Minion (Nodos worker)
• kubelet, kube-proxy
• Container Engine (Docker, rkt)
• DNS, Service Discovery, LoadBalancing
• Configuración, Secretos
• Federación
9. Conceptos de k8s
• Pod: Nombre generico para la unidad minima (no necesariamente) de
configuración de componentes que viven dentro de k8s
• Deployment: Tipo de pod que define la metadata de un grupo de
contenedores. Asignación de recursos, volúmenes de File System
• Service: Tipo de pod para exponer y hacer disponible en el Service Discovery
contenedores. Generalmente interno, se puede externo, pero no se
recomienda.
• Ingress Controller: Tipo de pod que permite rutear trafico HTTP hacia el
mundo exterior. Hostnames y URIs
10. Caso de estudio
•Entidad federal de gobierno que administra las tributaciones en
el Peru. Sunat
•Arquitectura de Microservicios con Java
•Centros de Datos propios en 2 ubicaciones geográficas
diferentes
•Plataforma de recepción de declaraciones, pagos en linea con
TC
11. Uso de Kubernetes
• Gestión de configuración de los contenedores, secretos.
• Services para balanceo de carga de las diversas replicas de los contenedores
• Administración de recursos (MEM, CPU)
• Políticas de autoscaling
• Probes
• Readiness: ¿El contenedor esta listo para recibir tráfico?
• Liveness: ¿El contenedor sigue vivo?
• Gestión de la configuración basada en Git, con plantillas
17. Lecciones aprendidas
•El consumo de recursos en una arquitectura de
microservicios es mayor.
•Monitoreo de la infraestructura es clave, sobre todo en bare-
metal. CPU, FileSystem, Memoria, I/O, Networking.
•Automatización de aprovisionamiento de infraestructura
(Ansible, Terraform)
•Los sysadmins tradicionales deben replantear su rol, esta
cambiando todo. ¿DevOps?
18. Siguientes pasos
• Usar Vault para administrar secrets, por ahora k8s
almacena en base64 en plano en ETCD
• Terminar de integrar el pipeline de Bamboo para
despliegue continuo
• Automatización de pruebas
• Promoción de binarios (bibliotecas, contenedores)