Kubernetes: información general

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

Con Kubernetes puedes hacer lo siguiente:

  • Orquestar contenedores mediante varios hosts

  • Facilitar y actualizar tus aplicaciones de manera previsible y rápida

  • Escalar tus aplicaciones sin interrupciones

  • Facilitar nuevas funciones de manera continua

  • Aplicar tus recursos de hardware de manera óptima

Además, Kubernetes te ofrece las siguientes ventajas, entre otras:

  • Comprobaciones de estado y autorregeneración: los contenedores defectuosos se reinician automáticamente. Si un nodo falla, se redistribuyen los contenedores que este incluye. Si los contenedores no envían ninguna 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 automatizados: Kubernetes distribuye los cambios de software o de la configuración con un Rollout. Simultáneamente, 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 realiza un Rollback automáticamente.

  • 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 tus batchs y el flujo de trabajo de los CI. Si lo deseas, se reemplazan los contenedores defectuosos.

Arquitectura:

Los clústeres de Kubernetes constan de nodos máster y worker. El máster orquesta el clúster automáticamente. Recibe comandos del administrador y los redirige a los worker. En los nodos worker, se ejecutan los contenedores Linux agrupados en pods.

Términos importantes

Máster: orquesta el clúster automáticamente.

Worker: estas máquinas ejecutan las tareas solicitadas y asignadas a través de los contenedores Linux agrupados en pods.

Pod: es un grupo de uno o varios contenedores, que se usan en un único nodo. Todos los contenedores en un pod comparten la dirección IP, IPC, el nombre de host y otros recursos, tales como el almacenamiento compartido. Cada pod está vinculado con el nodo en el que está planeado y permanece allí hasta que sea finalizado o eliminado. Además, cada pod ejecuta por lo menos un Kubelet y un tiempo de ejecución del contenedor.

Kubelet: El Kubelet es un agente del Maestro. Este proceso se ejecuta en cada Nodo y es responsable de la comunicación entre el Maestro y el Nodo. Los Kubelets se encargan de que los contenedores definidos se pongan en marcha y estén en funcionamiento.

kubectl: el Kubelet es un agente del máster. Este proceso se ejecuta en cada nodo y es responsable de la comunicación entre el máster y el nodo. Los Kubelets garantizan que los contenedores definidos se inicien y que estén en funcionamiento.

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

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