Tabla de Contenidos
Kubernetes
Sistema para la automatización del despliegue, ajuste de escala y manejo de aplicaciones en contenedores. Soporta diferentes entornos para la ejecución de contenedores, incluido Docker.
Entra dentro de lo que se conoce como orquestadores.
Orquestador
Un orquestador es una tecnología que permite lanzar un conjunto de contenedores en un cluster de servidores.
Kubernetes permite:
- Ejecutar contenedores en varias máquinas
- Service discovery: cada vez que se añaden nuevos contenedores, facilita su descubrimiento.
- Balanceo de carga
- Configuración de red
- Escalabilidad: añadir o eliminar contenedores a demanda
- Logging y monitorización
- Tolerante a fallos: si algo funciona en el cluster, el orquestador recreará la máquina o contenedor para que la aplicación siempre esté disponible
- Comunidad
Kubernetes se ha convertido en el estandar para ejecutar contenedores en el cloud (Amazon, Azure y Google)
Arquitectura
El cluster de Kubernetes se divide en dos tipos de nodo:
- Nodo Master: ejecuta la mayor parte de la capa de control de Kubernetes
- Nodo Worker: ejecuta los pods y contenedores de los usuarios.
En una configuración de desarrollo podríamos tener solo 1 nodo que haga de master y worker
La forma de interactuar con Kubernetes es a través de kubectl, que se encarga de hablar con la API REST de Kubernetes.
kubelet lanza los contenedores en los pods.
kube-proxy utiliza iptables para realizar las rutas para que los contenedores sean visibles entre los diferentes nodos del cluster.
Instalación
Posibilidades para instalar un cluster de Kubernetes.
A nivel local:
- Minikube: crea una máquina virtual donde ejecuta Kubernetes. Es la primera que salió y está soportada por el proyecto Kubernetes. Es la más compatible, pero la más pesada.
- Microk8s: instalaciones en Linux utilizando Snap.
- k3s: originalmente diseñado para trabajar en IoT.
- KinD (Kubernetes in Docker): Kubernetes dentro de un contenedor. Ideal para Integración Continua.
- Docker Desktop: igual que Minikube, crea una máquina virtual. Consume muchos recursos.
En cuanto a instalaciones de Kubernetes en la nube:
- GKE: Google Kubernetes Engine. El que mejor funciona.
- AKS: el de Azure (Microsoft).
- EKS: el de Amazon.
- Digital Ocean: centrada en desarrolladores y es la más barata.
