Kubernetes

[4]​ Kubernetes proviene del griego antiguo κυβερνήτης kybernḗtēs («timonel», «piloto»), que también es la raíz etimológica de «cibernética».

[4]​ Kubernetes fue fundado por los ingenieros de Google Joe Beda, Brendan Burns y Craig McLuckie,[5]​ a quienes se les unieron rápidamente otros compañeros como Brian Grant y Tim Hockin.

[10]​ Junto a esta versión de Kubernetes, Google se asoció con la Linux Foundation para formar la Cloud Native Computing Foundation (CNCF)[11]​ y ofreció Kubernetes como una tecnología semilla.

Los componentes que forman Kubernetes están diseñados para estar débilmente acoplados pero a la vez ser extensibles para que puedan soportar una gran variedad de flujos de trabajo.

[16]​ La unidad básica de planificación en Kubernetes se denomina cápsula (“pod” en idioma inglés).

Esta agrega un nivel de abstracción más elevado a los componentes en contenedores.

Un pod consta de uno o más contenedores en los que se garantiza su ubicación en el mismo equipo anfitrión y pueden compartir recursos.

[19]​ Por ejemplo, si un pod de una aplicación tiene la etiqueta para un nivel del sistema (“front-end”, “back-end”, por ejemplo) y un release_track (“canary”, “production”, por ejemplo), entonces una operación sobre todos los nodos “back-end” y “canary” podría utilizar un selector de etiquetas como el siguiente:[20]​ Un controlador es un bucle de reconciliación que lleva al estado real del clúster hacia el estado deseado.

Las abstracciones en Kubernetes le permiten implementar aplicaciones en contenedores en un clúster sin vincularlas específicamente a máquinas individuales.

Se puede cambiar esa información más adelante actualizando su Implementación.

Al crear un Despliegue se expone públicamente a través de un Servicio.

Otros componentes escuchan por cambios en este almacén para avanzar al estado deseado.

[23]​ El servidor API es un componente central y sirve a la API de Kubernetes utilizando JSON sobre HTTP, que proveen la interfaz interna y externa de Kubernetes.

Los controladores se comunican con el servidor API para crear, actualizar y eliminar recursos que ellos manejan (pods, servicios, etc.).

El estado del nodo es comunicado al maestro cada pocos segundos mediante una señal periódica ("heartbeat").

Diagrama simplificado de cómo Kubernetes utiliza las redes y los servicios de pods para resolver dependencias de red.