¿Cómo puedes crear y utilizar un clúster de Kubernetes?
Un clúster de Kubernetes es un sistema compuesto por al menos un nodo de control (maestro) y varios nodos de trabajo donde se ejecutan aplicaciones en contenedores. El clúster gestiona automáticamente la implementación, el escalado y la alta disponibilidad de los contenedores. Esta estructura permite ejecutar aplicaciones de forma fiable y eficiente en entornos distribuidos en la nube.
Completamente escalable, seguro y con actualizaciones automáticas.
¿Qué es un clúster de Kubernetes?
En términos generales, un clúster es un conjunto de equipos que, vistos desde el exterior, funcionan como un único sistema. En Kubernetes, varios nodos se agrupan en clústeres en lugar de ordenadores físicos. Los nodos pueden ser tanto máquinas físicas como máquinas virtuales.
Las aplicaciones se ejecutan dentro de los clústeres de Kubernetes. Por tanto, los clústeres representan el nivel más alto dentro de la jerarquía de Kubernetes.
¿Cuáles son los casos de uso de los clústeres de Kubernetes?
Los clústeres son fundamentales para aprovechar todo el potencial de Kubernetes. Solo mediante los clústeres puedes desplegar aplicaciones sin depender de máquinas concretas, ya que abstraen los contenedores y permiten su ejecución en distintos equipos, independientemente del sistema operativo. Por ello, son altamente portátiles.
Entre los casos de uso más habituales se incluyen:
- Despliegue de aplicaciones completas: abarcan varios contenedores y son independientes del hardware subyacente. Esto permite implementar actualizaciones o nuevas funciones rápidamente sin modificar servidores individuales. Como resultado, las aplicaciones funcionan de forma coherente en todos los entornos.
- Arquitecturas de microservicios: en esta estructura, las aplicaciones se comunican entre sí y ofrecen una alta escalabilidad. Los microservicios individuales pueden desarrollarse, actualizarse y ampliarse de manera independiente, lo que mejora la agilidad y la tolerancia a fallos del conjunto.
- Integración continua (CI) / entrega continua (CD): los procesos de integración continua y entrega continua automatizan la compilación, las pruebas y el despliegue de las aplicaciones. Esto acorta los ciclos de desarrollo, reduce los errores manuales y garantiza que las nuevas funciones lleguen a producción más rápidamente.
¿De qué se compone un clúster de Kubernetes?
Un clúster de Kubernetes se compone de un plano de control, también conocido como nodo maestro, y uno o más nodos de trabajo.
Nodo maestro
El nodo maestro constituye la base de todo el clúster. Se encarga de gestionar el sistema, supervisar su estado y decidir qué aplicaciones se ejecutan y cuándo. El plano de control se compone de varios elementos:
- Servidor API: el servidor API actúa como interfaz principal del nodo maestro y gestiona la comunicación con el clúster. Define el estado del sistema y ofrece el punto de acceso a la API de Kubernetes, que puede usarse desde la línea de comandos o mediante una interfaz gráfica de usuario (por ejemplo, Google Cloud Console).
- Scheduler (planificador): asigna los contenedores a los nodos en función de los recursos disponibles. Garantiza que todos los pods de Kubernetes (grupos de contenedores) se distribuyan correctamente y puedan ejecutarse según lo previsto.
- Controller Manager (gestor de controladores): supervisa distintos controladores, es decir, tareas que se ejecutan en segundo plano. Actúa cuando un nodo falla y se asegura de que el estado actual del clúster coincida con el deseado.
- etcd: etcd es una base de datos de tipo clave-valor que almacena todos los datos críticos del clúster. Como parte del plano de control, sirve de respaldo y garantiza la coherencia de la configuración y el estado del sistema. Está organizada como un almacén de pares clave-valor.
Nodos de trabajo
Cada clúster de Kubernetes cuenta con uno o varios nodos de trabajo que se encargan de ejecutar las aplicaciones y tareas asignadas por el nodo maestro. Los nodos de trabajo incluyen dos componentes principales:
- Kubelet: es el servicio encargado de comprobar que cada contenedor de un pod esté en funcionamiento. Para ello, Kubelet interactúa con el motor de contenedores encargado de su creación y gestión.
- Kube-proxy: aplica las reglas de red y gestiona el reenvío de las conexiones cuando es necesario.
Cómo crear un clúster de Kubernetes
Un clúster de Kubernetes puede desplegarse tanto en máquinas físicas como virtuales. Existen distintas formas de crear tus propios clústeres.
Crear un clúster de Kubernetes con Minikube
Para crear un clúster de Kubernetes sencillo con un único nodo de trabajo, puedes usar Minikube. Es una herramienta que permite ejecutar Kubernetes localmente en tu ordenador. Minikube puede instalarse en los sistemas operativos más comunes y está documentado en numerosos tutoriales de Kubernetes. Para comprobar que la instalación se ha realizado correctamente, introduce el siguiente comando en el terminal:
minikube versionbashInicia Minikube con este comando:
minikube startbashTras ejecutarlo, Minikube inicia una máquina virtual dentro de la cual se ejecuta automáticamente un clúster de Kubernetes. Para interactuar con Kubernetes, puedes usar la herramienta de línea de comandos kubectl. Para verificar que está instalada, usa el siguiente comando:
kubectl versionbashPara ver la información del clúster:
kubectl cluster-infobashY para listar los nodos donde pueden ejecutarse las aplicaciones:
kubectl get nodesbashCrear un clúster de Kubernetes con kind
Si quieres crear un clúster con varios nodos, puedes utilizar la herramienta kind. Kind está disponible para todos los sistemas operativos principales y puede instalarse fácilmente mediante un gestor de paquetes. En el siguiente ejemplo, se utiliza Choco en Windows:
choco install kindbashPara un clúster con varios nodos de trabajo, crea un archivo de configuración YAML en el directorio que prefieras. En este archivo defines la estructura de tu clúster. Un ejemplo de configuración para un clúster con un nodo maestro y dos de trabajo sería:
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: workerPor último, crea el clúster de Kubernetes con el archivo de configuración que has definido anteriormente mediante el siguiente comando:
kind create cluster --config archivodeejemplo.yaml
