ICM / servicio / Las ventajas de Kubernetes

Las ventajas de Kubernetes

7 marzo 2020 | Lluis Pons

Hace unos días hablamos de docker y contenedores en general y también las ventajas que estas herramientas nos aportan para crear aplicaciones con arquitectura de microservicios. Hoy trataremos qué es Kubernetes y las ventajas que ofrece este proyecto.

¿Qué son los microservicios?

Primero, vamos a entender qué son los microservicios. Estos se basan en dividir las aplicaciones en elementos con entidad propia, independientes entre sí, que la aplicación aprovecha para realizar las funciones que tiene encomendada.

Los microservicios implican un cambio de paradigma respecto a la arquitectura tradicional monolítica, donde todas las funciones del código son compiladas en una sola aplicación.

Así, entre las ventajas de utilizar infraestructura de microservicios, se destaca principalmente distribuir las cargas de los sistemas y optimizar el desarrollo de estas. Para ello, podemos utilizar uno de los proyectos de orquestración de contenedores que prácticamente se ha convertido en estándar: Kubernetes (K8S abreviado).

¿Qué es Kubernetes?

Kubernetes fue originalmente un proyecto creado por Google, el cual tiene experiencia de más de 15 años gestionando contenedores. Ahora se trata de un proyecto de código abierto, bajo el paraguas de Cloud Native Computing Foundation (CNCF) y la Fundación Linux.

Entre algunas de sus características, se encuentran:

  • La capacidad de colocar contenedores automáticamente según sus requisitos de recursos, sin afectar la disponibilidad.
  • Poder mezclar cargas de trabajo críticas y de mejor esfuerzo para aumentar su uso y poder optimizar los recursos.
  • Permitir la orquestración del almacenamiento: montar automáticamente el sistema de almacenamiento como un proveedor de nube pública. O también un sistema de almacenamiento en red on premise como NFS, iSCSI, Gluster, Ceph, Cinder entre otros.
  • Autocuración: reiniciar los contenedores que fallan, reemplazar y re-programarlos cuando los nodos mueran. Eliminar asimismo los contenedores que no responden y no publicarlos hasta que estén listos.
  • Ejecución de despliegues automatizados donde se implementan progresivamente los cambios en la aplicación o su configuración, mientras se monitorea su estado. De este modo, se asegura que no elimine todas sus instancias al mismo tiempo. Si algo sale mal, Kubernetes revertirá el cambio.

Más ventajas de Kubernetes

  • Actualización de credenciales y configuración de aplicaciones sin reconstruir su imagen.
  • Administración de cargas de trabajo por lotes y CI, reemplazando los contenedores que fallan.
  • Escalabilidad de aplicaciones hacia arriba y hacia abajo en base a reglas o manualmente.
  • A nivel de red puede proveer de conectividad en dual stack IPv4 e IPv6 a los Pods y servicios.
  • Enrutamiento del tráfico de servicios basado en la tipología del clúster.
  • Integración con herramientas de despliegue para DEVOPS.
  • Posibilidad de despliegue tanto en nubes privadas, públicas o híbridas.

 

Como punto desfavorable seria que Kubernetes es más complejo de administrar. Por ello, los diferentes actores que ofrecen productos basados en esta tecnología buscan facilitar la complejidad de su uso.

Servicio de Kubernetes

A raíz de su popularidad, lo podemos encontrar en un gran número de opciones. Por ejemplo, las nubes públicas que ofrecen servicio de Kubernetes son:

  • Azure Kubernetes Service (AKS)
  • DigitalOcean
  • Upcloud
  • Amazon Elastic Container Service for Kubernetes (Amazon EKS)
  • Google Kubernetes Engine
  • IBM Cloud Kubernetes Service

 

Por otro lado, algunos de los principales fabricantes que cuentan con sus productos basados en Kubernetes son:

  • Red Hat Openshift
  • SUSE CaaS platform
  • Canonical/Ubuntu Kubernetes            
  • Rancher
  • Nutanix Karbon

 

Este ecosistema entre nubes públicas y fabricantes que han apostado por esta tecnología nos permite desplegar infraestructuras de forma más eficiente en cada momento y acorde a nuestras necesidades.