Skip to main content

Kubernetes: Para qué sive, Importancia y Características

# Fecha
enero 26, 2022
# Categorías
# Siguenos

Antes de abordar el tema se debe saber que el Kubernetes es una plataforma portátil y extensible de código abierto, para administrar cargas de trabajo y servicios.

Kubernetes es una plataforma open source que sirve para administrar cargas de trabajo y servicios, lo que facilita la automatización y eliminación de una gran cantidad de los procesos manuales durante la puesta en marcha y escalabilidad de las aplicaciones en contenedores.

Ofrece una mayor simpleza en plataformas como servicio (PaaS) y una mayor flexibilidad en la infraestructura como servicio (IaaS), lo que permite la portabilidad entre proveedores de infraestructuras. Además se puede extender en diversos entornos cloud y soportar innumerables runtimes de contenedores (docker, rkt, cri-o o frakti).

Kubernetes sirve como una plataforma de contenedores, como una plataforma de microservicios o como una plataforma portable de nube y mucho más. Además se pueden llevar a cabo muchas tareas, que se ejecutarían con otras plataformas de aplicaciones o sistemas de gestión, Kubernetes sirve para llevar a cabo las siguientes tareas:

  1. Organiza los contenedores en diversos hosts o archivos.
  2. Realiza un mejor uso del hardware para valerse al máximo de los recursos necesarios utilizados en la ejecución de las aplicaciones organizacionales.
  3. Automatiza y controla las actualizaciones e implementaciones de las aplicaciones.
  4. Agrega almacenamiento para llevar a cabo aplicaciones con estado.
  5. Amplia las aplicaciones en contenedores y sus recursos según sea necesario
  6. Gestiona los servicios de forma enunciativa para asegurar que las aplicaciones llevadas a cabo se ejecuten correctamente
  7. Realiza comprobaciones de estado y autorregeneraciones de sus aplicaciones con ubicación, reinicio, replicación y adaptación automáticos

En conclusión, Kubernetes sirve para administrar centrado en contenedores; sirve también para orquestar la infraestructura de cómputo, redes, almacenamiento, entre otros, evitando así las cargas de trabajo de los usuarios y para llevar a cabo muchas tareas.

Importancia de Kubernetes

A medida que el tiempo pasa, las aplicaciones crecen y abarcan diversos contenedores puestos en práctica en varios servidores, su administración tiende a ser más compleja.

He ahí la importancia de controlar esta complejidad, Kubernetes facilita una API open source con la cual se puede controlar cómo y dónde se ejecutan sus contenedores.

Es importante ya que mantiene organizados los clústeres de máquinas virtuales y programa los contenedores para que se lleven a cabo en esas máquinas en función de los recursos informáticos que se dispongan y los requerimientos de recursos de cada contenedor.

Kubernetes gestiona automáticamente el descubrimiento de servicios, incorpora equilibrio de carga, realiza un seguimiento de la asignación de recursos y escala en función del uso de la capacidad informática. Además de comprobar el estado de los recursos individuales, y de posibilitar que las aplicaciones se recuperen automáticamente reiniciando o replicando contenedores.

Características más relevantes

Las Kubernetes se han venido convirtiendo en el estándar para la orquestación de contenedores ya que aporta muchas más ventajas que otras en el mercado. Sus principales características son:

  • La capacidad de ubicar contenedores: los coloca automáticamente según sus requisitos de recursos, sin afectar la disponibilidad.
  • Escalado y autoescalado: en función del uso de CPU permite el escalado vertical de tus aplicaciones de manera automática o de forma manual (mediante un comando o a través de la interfaz).
  • Descubrimiento de servicios y balanceo de carga: para descubrir servicios no utiliza mecanismos externos ya que Kubernetes le asigna a los contenedores sus propias direcciones IP y un nombre DNS único para un conjunto de contenedores, además de balancear la carga sobre ellos.
  • Despliegues y rollbacks automáticos: en el momento de actualizar una aplicación o cambiar su configuración, Kubernetes despliega los cambios progresivamente, al mismo tiempo monitorea su salud, y en caso de fallo, hace un rollback automático.
  • Planificación: decide en qué nodo se ejecutará cada contenedor de acuerdo a los recursos que requiera. Mezcla cargas de trabajo críticas y best-effort para favorecer la utilización y el ahorro de los recursos.
  • Gestión de la configuración y secrets: la información sensible, como las passwords o las claves ssh, se almacena en Kubernetes oculta en secrets. La configuración de la aplicación secrets se extienden y se actualizan sin reconstruir la imagen ni exponer información confidencial.
  • Orquestación del almacenamiento: el sistema de almacenamiento necesario puede montarse automáticamente, ya sea almacenamiento local, almacenamiento en un proveedor de cloud pública (como GCP o AWS), o incluso un sistema de almacenamiento de red como NFS, SCSI, Gluster, Ceph, Cinder, o Flocker.
  • Ejecución Batch: ejecuta despliegues automatizados donde se llevan a cabo progresivamente los cambios en la aplicación o su configuración, mientras se monitorea su estado. Asegurando  que no se eliminen todas sus instancias al mismo tiempo. Si algo sale mal, Kubernetes revertirá el cambio además de los servicios, Kubernetes puede gestionar cargas de trabajo batch y CI, reemplazando los contenedores que fallen.
  • Autoreparación: se encarga de reiniciar los contenedores que fallan, además de reemplazar y reprogramar los nodos cuando mueran. Así como también de eliminar los contenedores que no responden.
caracteristicas kubernetes

La Arquitectura de kubernete

Se debe ver a Kubernetes como un «proyecto» más que como un «producto», Kubernetes se fundamenta en muchos productos previamente existentes los cuales combina con otros desarrollos propios.

La Instalación y configuración de un clúster de Kubernetes onpremises no es nada sencillo y es debido a ello que los servicios de Kubernetes «operados» son tan populares. Estos servicios brindan la posibilidad de disponer de un clúster Kubernetes debidamente instalado y levantado en cuestión de minutos.

Un clúster de Kubernetes está compuesto de varias máquinas. Cada una de dichas máquinas (nodos) debe jugar uno de los siguientes roles: Nodo master y Nodo minion

Nodos master

Se encargan de coordinar el clúster. Generalmentelos nodos masterno ejecutan contenedores. A pesar de que está permitido que lo hagan, pero no es un escenario recomendado en producción. Todo clúster de Kubernetes debe tener al menos un nodo master.

De igual forma los nodos master se encargan de decidir en qué nodo (minion) se debe ejecutar cada contenedor, de conservar el estado del clúster, de asegurarse que siempre exista el número deseado de contenedores en ejecución además de actualizar las aplicaciones de forma coordinada cuando se despliegan nuevas versiones.

Un nodo master lleva a cabo los siguientes procesos:

  • etcd: Etcd esta es una base de datos de tipo (clave, valor) que se usa para mantener la configuración global del clúster. La información contenida en etcd es crítica y debe tenerse siempre un plan de copias de seguridad.
  • kube-apiserver: los nodos master exponen una API la cual se usa para los nodos minion y los clientes del clúster para establecer comunicación.
  • kube-scheduler: este es el componente de Kubernetes que se encarga de decidir en qué nodo se ejecuta un determinado contenedor.
  • kube-controllermanager: tiene la responsabilidad de ejecutar los distintos controladores. El «controlador» se encarga de asegurar que en todo momento se cumpla el estado deseado de la aplicación y del clúster.

Cabe destacar que un nodo master no ejecuta contenedores, por lo tanto no necesita tener instalado Docker y ninguno del resto de elementos necesarios para un nodo minion que se expone a continuación:

Nodos minion

El nodo minion se encarga de ejecutar los contenedores desplegados en el clúster. está compuesto po tres elementos básicos:

  • Motor de contenedores: el mismo debe estar instalado en el clúster. Kubernetes puede ejecutar Docker y rkt integrandolo con otros motores existentes mediante CRI.
  • kube-proxy: es el encargado de gestionar la red virtual y las IPs virtuales adjudicadas a cada contenedor.
  • kubelet: este es el componente más importante de un nodo minion, su función principal consiste en asegurarse de que todos los contenedores que deben ejecutarse en este nodo se estén ejecutando.

Aplicación

Las restricciones para utilizar Kubernetes son mínimas, casi todas las opciones de uso son posibles debido a las posibilidades de instalación que brinda y también debido a que muchas soluciones lo están integrando en sus arquitecturas. Es por ello que se dispone de un amplio abanico de posibilidades para utilizar K8S donde se quiera.

  1. Bare Metal: se puede extender nuestro cluster sobre máquinas físicas utilizando múltiples sistemas operativos: Fedora, CentOS, Ubuntu, etc.
  2. Virtualización On Premise: si se desea montar nuestro cluster on premise, pero con máquinas virtuales, las posibilidades son mayores. Se puede utilizar Vagrant, CloudStack, Vmware, OpenStack, CoreOS, oVirt, Fedora, etc.
  3. Soluciones Cloud: si se quiere disponer de todas las ventajas de Kubernetes, sin responsabilizarnos de gestionar todo, se tiene todas estas alternativas en la nube:
  4. Google Container Engine: este servicio gestionado y ofrecido por Google, se encarga de manejar por nosotros todas las instancias de Compute Engine. Se ocupa también de la monitorización, del logging, de la salud de las instancias y de actualizar Kubernetes a la última versión.
  5. CoreOS Tectonic: a través de este producto al que CoreOS proporciona Kubernetes. Facilita la portabilidad, entre varios proveedores, de cloud tanto pública como privada. Su instalación, actualización y mantenimiento necesitan de menos trabajo de operaciones. Además incluye Prometheus para la monitorización y gestión de alertas.
  6. Kops: crea y gestiona clusters de Kubernetes, desde línea de comandos, hasta el momento, ha sido la forma oficiosa para instalar Kubernetes en AWS, ademá tienen en sus planes abarcar también Google Compute Engine y VMware vSphere.
  7. Deis: su PaaS opensource, ahora llamado Workflow, se fundamenta en Kubernetes desde hace años
  8. Mesosphere: según su último anuncio, se inclinan mucho por el uso de Kubernetes como orquestador.
  9. CloudFoundry ofrece Kubernetes en su Container Runtime.
  10. Otros: Azure, IBM, Kube2Go, GiantSwarm también ofrecen servicios gestionados de kubernetes.

¡Para saber más y estar informado sobre estos temas o relacionados puedes visitar nuestra página web!

Comunicaciones