Un clúster de Ku­be­r­ne­tes es un sistema compuesto por al menos un nodo de control (maestro) y varios nodos de trabajo donde se ejecutan apli­ca­cio­nes en co­n­te­ne­do­res. El clúster gestiona au­to­má­ti­ca­me­n­te la im­ple­me­n­ta­ción, el escalado y la alta di­s­po­ni­bi­li­dad de los co­n­te­ne­do­res. Esta es­tru­c­tu­ra permite ejecutar apli­ca­cio­nes de forma fiable y eficiente en entornos di­s­tri­bui­dos en la nube.

Managed Ku­be­r­ne­tes de IONOS
La pla­ta­fo­r­ma ideal para gestionar apli­ca­cio­nes en co­n­te­ne­do­res.

Co­m­ple­ta­me­n­te escalable, seguro y con ac­tua­li­za­cio­nes au­to­má­ti­cas.

¿Qué es un clúster de Ku­be­r­ne­tes?

En términos generales, un clúster es un conjunto de equipos que, vistos desde el exterior, funcionan como un único sistema. En Ku­be­r­ne­tes, varios nodos se agrupan en clústeres en lugar de or­de­na­do­res físicos. Los nodos pueden ser tanto máquinas físicas como máquinas virtuales.

Las apli­ca­cio­nes se ejecutan dentro de los clústeres de Ku­be­r­ne­tes. Por tanto, los clústeres re­pre­se­n­tan el nivel más alto dentro de la jerarquía de Ku­be­r­ne­tes.

¿Cuáles son los casos de uso de los clústeres de Ku­be­r­ne­tes?

Los clústeres son fu­n­da­me­n­ta­les para apro­ve­char todo el potencial de Ku­be­r­ne­tes. Solo mediante los clústeres puedes desplegar apli­ca­cio­nes sin depender de máquinas concretas, ya que abstraen los co­n­te­ne­do­res y permiten su ejecución en distintos equipos, in­de­pe­n­die­n­te­me­n­te del sistema operativo. Por ello, son altamente po­r­tá­ti­les.

Entre los casos de uso más ha­bi­tua­les se incluyen:

  • De­s­plie­gue de apli­ca­cio­nes completas: abarcan varios co­n­te­ne­do­res y son in­de­pe­n­die­n­tes del hardware su­b­ya­ce­n­te. Esto permite im­ple­me­n­tar ac­tua­li­za­cio­nes o nuevas funciones rá­pi­da­me­n­te sin modificar se­r­vi­do­res in­di­vi­dua­les. Como resultado, las apli­ca­cio­nes funcionan de forma coherente en todos los entornos.
  • Ar­qui­te­c­tu­ras de mi­cro­se­r­vi­cios: en esta es­tru­c­tu­ra, las apli­ca­cio­nes se comunican entre sí y ofrecen una alta es­ca­la­bi­li­dad. Los mi­cro­se­r­vi­cios in­di­vi­dua­les pueden de­sa­rro­llar­se, ac­tua­li­zar­se y ampliarse de manera in­de­pe­n­die­n­te, lo que mejora la agilidad y la to­le­ra­n­cia a fallos del conjunto.
  • In­te­gra­ción continua (CI) / entrega continua (CD): los procesos de in­te­gra­ción continua y entrega continua au­to­ma­ti­zan la co­m­pi­la­ción, las pruebas y el de­s­plie­gue de las apli­ca­cio­nes. Esto acorta los ciclos de de­sa­rro­llo, reduce los errores manuales y garantiza que las nuevas funciones lleguen a pro­du­c­ción más rá­pi­da­me­n­te.

¿De qué se compone un clúster de Ku­be­r­ne­tes?

Un clúster de Ku­be­r­ne­tes 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 co­n­s­ti­tu­ye la base de todo el clúster. Se encarga de gestionar el sistema, su­pe­r­vi­sar su estado y decidir qué apli­ca­cio­nes 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 co­mu­ni­ca­ción con el clúster. Define el estado del sistema y ofrece el punto de acceso a la API de Ku­be­r­ne­tes, que puede usarse desde la línea de comandos o mediante una interfaz gráfica de usuario (por ejemplo, Google Cloud Console).
  • Scheduler (pla­ni­fi­ca­dor): asigna los co­n­te­ne­do­res a los nodos en función de los recursos di­s­po­ni­bles. Garantiza que todos los pods de Ku­be­r­ne­tes (grupos de co­n­te­ne­do­res) se di­s­tri­bu­yan co­rre­c­ta­me­n­te y puedan eje­cu­tar­se según lo previsto.
  • Co­n­tro­ller Manager (gestor de co­n­tro­la­do­res): supervisa distintos co­n­tro­la­do­res, 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 co­he­re­n­cia de la co­n­fi­gu­ra­ción y el estado del sistema. Está or­ga­ni­za­da como un almacén de pares clave-valor.

Nodos de trabajo

Cada clúster de Ku­be­r­ne­tes cuenta con uno o varios nodos de trabajo que se encargan de ejecutar las apli­ca­cio­nes y tareas asignadas por el nodo maestro. Los nodos de trabajo incluyen dos co­m­po­ne­n­tes pri­n­ci­pa­les:

  • Kubelet: es el servicio encargado de comprobar que cada co­n­te­ne­dor de un pod esté en fu­n­cio­na­mie­n­to. Para ello, Kubelet in­ter­ac­túa con el motor de co­n­te­ne­do­res encargado de su creación y gestión.
  • Kube-proxy: aplica las reglas de red y gestiona el reenvío de las co­ne­xio­nes cuando es necesario.

Cómo crear un clúster de Ku­be­r­ne­tes

Un clúster de Ku­be­r­ne­tes puede de­s­ple­gar­se tanto en máquinas físicas como virtuales. Existen distintas formas de crear tus propios clústeres.

Crear un clúster de Ku­be­r­ne­tes con Minikube

Para crear un clúster de Ku­be­r­ne­tes sencillo con un único nodo de trabajo, puedes usar Minikube. Es una he­rra­mie­n­ta que permite ejecutar Ku­be­r­ne­tes lo­ca­l­me­n­te en tu ordenador. Minikube puede in­s­ta­lar­se en los sistemas ope­ra­ti­vos más comunes y está do­cu­me­n­ta­do en numerosos tu­to­ria­les de Ku­be­r­ne­tes. Para comprobar que la in­s­ta­la­ción se ha realizado co­rre­c­ta­me­n­te, introduce el siguiente comando en el terminal:

minikube version
bash

Inicia Minikube con este comando:

minikube start
bash

Tras eje­cu­tar­lo, Minikube inicia una máquina virtual dentro de la cual se ejecuta au­to­má­ti­ca­me­n­te un clúster de Ku­be­r­ne­tes. Para in­ter­ac­tuar con Ku­be­r­ne­tes, puedes usar la he­rra­mie­n­ta de línea de comandos kubectl. Para verificar que está instalada, usa el siguiente comando:

kubectl version
bash

Para ver la in­fo­r­ma­ción del clúster:

kubectl cluster-info
bash

Y para listar los nodos donde pueden eje­cu­tar­se las apli­ca­cio­nes:

kubectl get nodes
bash

Crear un clúster de Ku­be­r­ne­tes con kind

Si quieres crear un clúster con varios nodos, puedes utilizar la he­rra­mie­n­ta kind. Kind está di­s­po­ni­ble para todos los sistemas ope­ra­ti­vos pri­n­ci­pa­les y puede in­s­ta­lar­se fá­ci­l­me­n­te mediante un gestor de paquetes. En el siguiente ejemplo, se utiliza Choco en Windows:

choco install kind
bash

Para un clúster con varios nodos de trabajo, crea un archivo de co­n­fi­gu­ra­ción YAML en el di­re­c­to­rio que prefieras. En este archivo defines la es­tru­c­tu­ra de tu clúster. Un ejemplo de co­n­fi­gu­ra­ció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: worker

Por último, crea el clúster de Ku­be­r­ne­tes con el archivo de co­n­fi­gu­ra­ción que has definido an­te­rio­r­me­n­te mediante el siguiente comando:

kind create cluster --config archivodeejemplo.yaml
Ir al menú principal