Kubernetes: información general

Kubernetes es un sistema de gestión de clústeres de contenedores de código abierto para para facilitar, escalar y gestionar aplicaciones contenerizadas de manera automática.

Con Kubernetes puede:

  • Orquestar contenedores en varios hosts

  • Actualizar y facilitar sus aplicaciones de forma rápida y previsible

  • Escalar sus aplicaciones sin interrupciones

  • Facilitar nuevas funciones de manera continua

  • Utilizar sus recursos de hardware de forma óptima

Kubernetes ofrece, entre otras, las siguientes ventajas:

  • Comprobaciones de estado y autorregeneración: los contenedores defectuosos se reinician automáticamente. Si falla un nodo, se vuelven a repartir los contenedores incluidos en él. Si los contenedores no envían una respuesta a la comprobación de estado definida por el usuario, Kubernetes los finaliza automáticamente. Además, este sistema de gestión de clústeres de contenedores de código abierto ofrece una colocación automática, autorreplicación y un escalado automático.

  • Bin Packing automático: Kubernetes coloca contenedores automáticamente a base de los recursos necesarios y de otras limitaciones sin repercutir en la disponibilidad.

  • Rollouts y Rollbacks automáticos: Kubernetes distribuye las modificaciones en el software o en la configuración con un Rollout. Al mismo tiempo, este sistema de gestión de clústeres de contenedores de código abierto controla el estado de la aplicación. Si se produce un problema, se ejecuta automáticamente un Rollback.

  • Service Discovery y Load Balancing: Kubernetes asigna a los contenedores una dirección IP unívoca y a los grupos de contenedores un nombre individual de DNS. Además, realiza un equilibrio de carga entre ellos.

  • Ejecución de archivos batch: Kubernetes puede gestionar sus batchs y el flujo de trabajo de los CI. Si lo desea, se sustituyen los contenedores defectuosos.

Arquitectura:

Los clústeres de Kubernetes están compuestos por nodos máster y worker. El nodo máster orquesta automáticamente el clúster. Además, recibe comandos del administrador y los reenvía al nodo worker. En los nodos worker, se ejecutan los contenedores Linux agrupados en pods.

Términos importantes

Master: el máster orquesta el clúster.

Worker: estas máquinas realizan las tareas asignadas y solicitadas mediante los contenedores Linux agrupados en pods.

Pod: un grupo de uno o varios contenedores que se utilizan en un único nodo. Todos los contenedores en un pod comparten la dirección IP, IPC, el nombre de host y otros recursos como, por ejemplo, almacenamientos compartidos. Cada pod está vinculado con el nodo conforme a lo planificado y se mantiene hasta que sea finalizado o eliminado. Además, cada pod ejecuta al menos un Kubelet y un tiempo de ejecución del contenedor.

Kubelet: el Kubelet es un agente del Master. Este proceso se realiza en cada nodo y se encarga de la comunicación entre máster y nodo. Los Kubelets garantizan que se inicien y funcionen los contenedores definidos.

kubectl: kubectl es una interfaz de líneas de comando para gestionar los clústeres de Kubernetes.

Controlador de replicación: un controlador de replicación garantiza que en todo momento está ejecutando un número determinado de réplicas de pods.

Encontrará más información en https://kubernetes.io/docs/home/