Hoy traemos Kubernetes, también conocido por su abreviatura K8s, un orquestador y sistema de contenedores como Docker. Como comentó Chiyana en su último post “¿Por qué Google Cloud Platform?“, esta es una característica que potencia a Google Cloud, ya que Google, gracias a años de experiencia en gestión de contenedores desarrolló “Kubernetes”.
Google utiliza Kubernetes para casi todos sus productos como pueden ser: Gmail, Maps, Drive, etc. Existen otros Orquestadores de Docker, como puede ser Swarm, pero Kubernetes es mucho más maduro que sus contrincantes y por eso parece haberse establecido en el mercado.
Te traigo algunos de los conceptos básicos de Kubernetes, su arquitectura de sistema y su nomenclatura.
¿Qué es Kubernetes?
Es una tecnología open source inicialmente desarrollada por Google y donada posteriormente a CNCF. Actualmente esta tecnología es utilizada por muchos de sus competidores, como Digital Ocean que integró esta solución de contenedores a finales del año 2018. Con el respaldo de empresas como Google, Amazon Web Services (AWS), Microsoft, IBM, Intel, Cisco o RedHat.
Kubernetes está diseñada para gestionar el ciclo de vida de tus contenedores, con el objetivo de automatizar el despliegue de sistemas para ejecutar y coordinar tus aplicaciones en contenedores.
Permite ofrecer una Plataforma como Servicio (PaaS), creando una abstracción de la capa de hardware y red, además de ser extremadamente portátil. Se ejecuta en Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP) o en tu propio CPD, así que puedes mover cargas de trabajo sin tener que rediseñar tus aplicaciones o infraestructura.
Arquitectura Kubernetes
En el evento al que asistimos, “Google Cloud Onboard Barcelona”, nos presentaron la arquitectura con una pregunta: Orchestration?
“Think of Kubernetes as the OS for your compute fleet”
Sí, es un sistema orquestador, pero no solo de contenedores, si no de todas sus características como dónde recopilar las imágenes de los contenedores (por ejemplo, de Docker Hub), cómo establecer la red, cómo montar volúmenes de almacenamiento, dónde almacenar los logs, etc. Es claramente un sistema operativo para gestionar cada uno de tus equipos.
Las principales características son:
- Programación: Decidir dónde, cómo y cuándo.
- Ciclo de vida: Mantiene tus contenedores funcionando a pesar de posibles fallos.
- Escalabilidad: Escala sin límites, amplía o disminuye tus servicios.
- Descubrimiento: Conoce en cada momento dónde están tus contenedores.
- Alta disponibilidad: Distribuye el tráfico balanceando la carga a un conjunto de contenedores.
- Volúmenes de almacenamiento: Proporciona almacenamiento de datos a los contenedores.
- Auditoría: Seguimiento de todo lo que está sucediendo a tus contenedores
- Control de acceso: Controlar quién y cómo puede gestionar tus contenedores.
Nomenclatura kubernetes
Unas de las primeras cosas que debes conocer es su nomenclatura. Vamos allá:
- Cluster: Grupo de máquinas virtuales o físicas que alojan Kubernetes.
- Pod: Es un contenedor en nomenclatura Docker
- Labels y selectors: Es un sistema Key:Value asociado a pods, services, replication controllers, etc…. que te permitirá identificarlos para luego tener la capacidad de gestionarlos.
- Node: Servidor que aloja el sistema de Kubernetes y donde se desplegaran todos los pods ‘contenedores’.
- Replication Controller: Sistema responsable de gestionar la vida, estado y características de los pods, permitiéndote poder escalar de forma sencilla.
- Deployments: Número de réplicas de pods que tendrás en el sistema.
- Namespaces: Espacios de trabajo para diferentes escenarios. Por ejemplo podrías realizar un Namespace para producción y otro para desarrollo y cada Namespace tendría sus propios pods, replication controllers, etc….
- Volumes: Sistema de almacenamiento
- Secrets: Donde se añade las credenciales de configuración para poder acceder a los recursos.
¿Kubernetes para tus proyectos?
Igual que Docker, como comentamos la semana pasada, la tecnología de contenedores te permitirán escalar de forma muy eficiente y mejorar tu integración continua, automatizando el despliegue de tus desarrollos a contenedores en diversos entornos como desarrollo, producción, o simplemente temporales como test.
Hay múltiples proveedores que te proporcionarán la capacidad de gestionar tus kubernetes con el modelo Plataforma como Servicio (PaaS) :
Amazon Elastic Container Service para Kubernetes (Amazon EKS)
Amazon EKS abstrae completamente la administración, el escalado y la seguridad de tu clúster Kubernetes, incluso en múltiples zonas, para que puedas concentrarte estrictamente en tus aplicaciones y microservicios. EKS se integra con herramientas de Kubernetes y otras de AWS como Route 53, AWS Application Load Balancer y Auto Scaling.
Google Cloud Kubernetes
Al igual que Amazon EKS, Kubernetes Engine administra por completo tu infraestructura de Kubernetes para que no tengas que hacerlo. Google, como desarrollador original de Kubernetes, tiene mucha experiencia en la ejecución y gestión de contenedores basados en Kubernetes.
Azure Kubernetes Service (AKS)
AKS es la solución de gestión de Kubernetes de Azure. Con AKS, puedes proteger tus clústeres con Active Directory de Azure. Azure también proporciona su propio registro de contenedores y un portal de aprovisionamiento. Y, como es probable que los entusiastas de Kubernetes ya lo sepan, Brendan Burns, quien fue uno de los creadores de Kubernetes, está liderando la carga de trabajo de contenedores de Azure.
Conclusión
Sus características son indudablemente mágicas, te permite reproducir contenedores, mantenerlos vivos revisando su ciclo de vida, fáciles de implementar y una completa abstracción del hardware y de la red, una herramienta indispensable para DevOps.
Kubernetes es actualmente el estándar claro para las herramientas de orquestación de contenedores. Es por ello que los principales proveedores de la nube ofrecen este producto como Kubernetes-as-a-Service.
¿Valoras migrar tu infraestructura a Kubernetes? Contacta con ITDO y te ayudamos a estimar los beneficios o perjuicios evaluando tus necesidades.
¿Hablamos?Fotografía: pixabay
Fuentes: