Introducción a Kubernetes
- 1 Introducción
- 1.1 Ventajas
- 2 Arquitectura
- 3 Elementos
- 3.1 Pods
- 3.2 Deployments
- 3.3 Otros elementos
- 3.4 Helm
Introducción
Kubernetes es una plataforma de código abierto para administrar cargas de trabajo y servicios. Facilita la automatización, la configuración y el despliegue de nuestros programas y aplicaciones.
Nos ofrece un entorno de administración centrado en contenedores, con el cual orquestar la infraestructura de cómputo, redes y almacenamiento para las cargas de trabajo.
Ventajas
Los principales beneficios que ofrece Kubernetes son los siguientes:
Escalabilidad y balanceo de carga
Aislamiento de procesos y aplicaciones
Facilidades para el despliegue
Optimización de recursos de forma automática
Alta disponibilidad
Posibilidad de despliegue tanto en nubes privadas, públicas o híbridas.
Arquitectura
La arquitectura que sigue Kubernetes es la que se puede ver en el siguiente esquema:
A continuación, se describe los distintos componentes necesarios para entender y operar con Kubernetes:
Kube-apiserver: el servidor API de Kubernetes, valida y configura datos que incluyen pods, servicios, etc.
Kubelet: es el "nodo agente" principal que corre en cada nodo. Permite registrar el nodo con el apiserver.
Kube-proxy: es el proxy de red que corre en cada nodo.
Container Runtime: es un software que ejecuta contenedores y gestiona sus imágenes dentro de un nodo.
Además, Kubernetes ofrece una interfaz de línea de comandos para ejecutar las instrucciones para nuestros despliegues que es Kubectl. Para obtener más información sobre ello se puede consultar la documentación oficial.
Elementos
Pods
Los pods son el conjunto de uno o más contenedores desplegados bajo un mismo host. Son la unidad más pequeña que puede ser definida en Kubernetes.
Todos los contenedores desplegados dentro de un mismo pod compartirán los recursos de almacenamiento y de red entre ellos.
Todos los pods definidos con Kubernetes tienen un ciclo de vida definido, el cual se muestra en el siguiente diagrama:
Deployments
Los deployments añaden soporte extendido al desarrollo de software y al ciclo de vida de los despliegues. Gracias a ellos podremos definir la configuración de nuestros pods y replica sets, y que imágenes Docker van a hacer uso.
Otros elementos
Adicionalmente a pods y deployments, Kubernetes permite definir y configurar los siguientes elementos:
Replica Set: Mantiene un conjunto estable de réplicas de pods ejecutándose en todo momento. Usado para garantizar la disponibilidad de un contenedor.
Services: Funciona como un balanceador de carga interno, identifica un grupo de pods replicados, de modo que hace de proxy entre las conexiones que recibe y ellos. Toda la funcionalidad es interna, no ofrece conexión entre las peticiones externas y los diferentes contenedores.
ConfigMap: Son ficheros de configuración en los cuales se definen las variables de entorno de forma par clave-valor para que puedan ser usados en los ficheros de configuración de los deployments.
Secret: Son ficheros de configuración en los cuales se definen como par clave-valor datos que contengan información sensible. Pueden ir en cadena plana o codificados en Base64.
PVC: Los Persistent Volume Claim son peticiones para recursos con unos atributos específicos, como podrían ser los espacios de almacenamiento.
Ingress: Permiten configurar conexiones entrantes con los servicios internos. Permite tanto conexiones http como https funcionando como un proxy interno.
Helm
Helm es una herramienta para despliegues en Kubernetes que permite definir, instalar y actualizar cualquier aplicación.
La principal funcionalidad es el aplantillamiento de los ficheros de configuración de Kubernetes. A parte de proporcionarnos mayor facilidad de gestión y edición, nos ofrece un control de versiones de nuestros ficheros.