Kubernetes
Kubernetes

Kubernetes debe su origen a Google Cloud, ya que fue aquí donde se desarrolló y se publicó como software libre en 2014. Desde entonces, se ha convertido en la solución más popular para gestionar cargas de trabajo en contenedores desde cualquier parte. Esta herramienta te permite orquestar contenedores de forma automática y gestionar máquinas de manera eficiente para mejorar la fiabilidad y reducir el tiempo y los recursos destinados a DevOps.

Kubernetes tiene a sus espaldas 15 años de ejecución de cargas de trabajo en contenedores de Google y recibe valiosas contribuciones de la comunidad de código abierto. Para guiar la evolución de Kubernetes de la mano de esta comunidad, se ha colaborado en la constitución de la Cloud Native Computing Foundation (CNCF).

Kubernetes define un conjunto de bloques de construcción (primitivas) que conjuntamente proveen los mecanismos para el despliegue, mantenimiento y escalado de aplicaciones. 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. La extensibilidad es provista en gran parte por la API de Kubernetes, que es utilizada por componentes internos así como extensiones y contenedores ejecutados sobre Kubernetes.

Cápsulas (Pods)
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. Cada pod en Kubernetes es asignado a una única dirección IP (dentro del clúster) que permite a las aplicaciones utilizar puertos sin riesgos de conflictos. Un pod puede definir un volumen, cómo puede ser un directorio de disco local o un disco de red, y exponerlo a los contenedores dentro del pod. . Los pods pueden ser administrados manualmente a través de la API de Kubernetes, o su administración puede ser delegada a un controlador.

Etiquetas y selectores
Kubernetes permite a los clientes (usuarios o componentes internos) vincular pares clave-valor llamados etiquetas (en inglés label) a cualquier objeto API en el sistema, como pods o nodos. Correspondientemente, selectores de etiquetas son consultas contra las etiquetas que resuelven a los objetos que las satisfacen .
Las etiquetas y los selectores son el mecanismo principal de agrupamiento en Kubernetes, y son utilizados para determinar los componentes sobre los cuales aplica una operación .
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 siguiente17 :
nivel=back-end AND release_track=canary

Controladores
Un controlador es un bucle de reconciliación que lleva al estado real del clúster hacia el estado deseado. Hace esto mediante la administración de un conjunto de pods. Un tipo de controlador es un «Replication Controller», que se encarga de la replicación y escala mediante la ejecución de un número especificado de copias de un pod a través de un cluster. También se encarga de crear pods de reemplazo si un nodo subyacente falla. Otros controladores que forma parte del sistema central de Kubernetes incluye al «DaemonSet Controller» para la ejecución de exactamente un pod en cada máquina (o algún subconjunto de máquinas), y un «Job Controller» para ejecutar pods que ejecutan hasta su finalización, por ejemplo como parte de un trabajo batch. El conjunto de pods que un controlador administra está determinado por los selectores de etiquetas que forman parte de la definición del controlador.

Servicios
Un servicio Kubernetes es un conjunto de pods que trabajan en conjunto, como una capa de una aplicación multicapas. El conjunto de pods que constituyen un servicio está definido por el selector de etiquetas . Kubernetes provee de un servicio de descubrimiento y enrutamiento de pedidos mediante la asignación de una dirección IP estable y un nombre DNS al servicio, y balancea la carga de tráfico en un estilo round-robin hacia las conexiones de red de las direcciones IP entre los pods que verifican el selector (incluso cuando fallas causan que los pods se muevan de máquina en máquina). Por defecto un servicio es expuesto dentro de un cluster (por ejemplo, pods de un back end pueden ser agrupados en un servicio, con las peticiones de los pods de front end siendo balanceadas entre ellos), pero un servicio también puede ser expuesto hacia afuera del clúster.

Esta tecnología permite el desarrollo de aplicaciones en diferentes lenguajes como Java, Node Js, Net Core., php entre otros.

En APIService, contamos con una amplia experiencia en el manejo intensivo de contenedores la modernización de aplicaciones, tanto en ambientes Cloud, On premise y también en cloud híbrida.

Artículos interesantes sobre Kubernetes

Que es Cloud Native ?

Que es Cloud Native ?

  Felicitamos a nuestroLíder de Arquitectura Digital Felipe Andrés Velásquez Castro,  porque su articulo sobre Cloud Native ha sido publicado en Blog de Google Developer Expert LATAM. En este artículo pondremos entender qué es Cloud Native y cómo podemos llevar...

leer más
Cómo advertir una mala arquitectura TI

Cómo advertir una mala arquitectura TI

Una arquitectura de TI sólida mantiene el ritmo de la estrategia tecnológica de su empresa. Desde kludges hasta reingreso manual a aplicaciones redundantes, estos son los indicadores de un entorno de TI al borde del colapso. Es probable que alguien en algún momento...

leer más