Cómo construir y gestionar un clúster de Kubernetes de Raspberry Pi con fines educativos
NULLX
Posted on May 5, 2024
Introducción
Esta guía está dirigida a estudiantes de ingeniería informática que tienen la intención de aprender a construir y gestionar un sistema de computación descentralizado como Kubernetes, con un ejemplo práctico de cómo crear un cluster utilizando dispositivos Raspberry Pi.
¿Qué es Kubernetes?
Kubernetes es una plataforma de código abierto que automatiza las operaciones de contenedores Linux. Elimina muchos de los procesos manuales involucrados en el despliegue y la escalabilidad de aplicaciones contenerizadas.
Objetivo
Al final de este tutorial, podrás:
- Configurar varios Raspberry Pis para formar un cluster.
- Instalar y configurar Kubernetes usando una herramienta ligera llamada k3s.
- Desplegar y gestionar aplicaciones contenerizadas en el cluster.
Configuración del Hardware
Nuestro cluster, llamado clusperry, consiste en 6 unidades de Raspberry Pi 4B, cada una con 4GB de RAM.
Configuración Inicial
-
Crear Imágenes Linux:
- Usaremos una herramienta GUI desarrollada para generar imágenes de Linux, las cuales luego serán grabadas en tarjetas microSD.
- Herramienta disponible en: clusperry-installer.
-
Descargar y Configurar:
- Obtén la herramienta desde la página de lanzamientos.
- Elige el sistema operativo para los nodos y configura los ajustes de red y las llaves SSH.
-
Escribir y Cargar Imágenes del SO:
- Escribe las imágenes del SO descargadas en tarjetas microSD.
- Carga estas imágenes en tus Raspberry Pis.
Configuración del Software
Instalación de Kubernetes con k3s
k3s es una versión ligera de Kubernetes ideal para entornos de edge, IoT y CI que requieren un menor consumo de recursos, como en nuestro caso.
-
Preparación para la Instalación:
- Utiliza Ansible para la automatización.
- Clona el repositorio Ansible de k3s:
git clone https://github.com/k3s-io/k3s-ansible.git cd k3s-ansible cp -R inventory/sample inventory/my-cluster nano inventory/my-cluster/hosts.ini
-
Configuración:
- Configura
inventory/my-cluster/hosts.ini
yinventory/my-cluster/group_vars/all.yml
con detalles como la versión de Kubernetes, el usuario del sistema y la IP del nodo maestro.
- Configura
-
Despliegue:
- Ejecuta el playbook de Ansible para instalar k3s en tus nodos:
ansible-playbook site.yml -i inventory/my-cluster/hosts.ini
-
Instalar kubectl:
- Instala kubectl en tu máquina local para interactuar con el cluster.
brew install kubectl scp ubuntu@192.168.1.100:~/.kube/config ~/.kube/config
Verificación de la Instalación
Asegúrate de que todos los nodos estén listos ejecutando:
kubectl get nodes
Despliegue de Aplicaciones
Desplegando una Aplicación de Prueba
- Configurar DNS Local:
- Añade una entrada DNS a /etc/hosts para el dominio de prueba.
sudo echo "192.168.1.100 test.com" >> /etc/hosts
- Desplegar una Aplicación:
- Crea un despliegue, servicio e ingreso para el servidor web Nginx.
YAML de Despliegue
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 2 # indica al despliegue ejecutar 2 pods replicados
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
name: nginx-service
spec:
ports:
- port: 80
name: http
selector:
name: nginx-deployment
--------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: nginx-ingress
annotations:
kubernetes.io/ingress.class: traefik
spec:
rules:
- host: "test.com"
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
- Verifica el despliegue:
kubectl get pods
curl http://test.com
Limpieza y Aprendizaje Adicional
- Recuerda eliminar cualquier configuración temporal como las entradas DNS.
- Para soluciones de almacenamiento persistente, consulta esta guía.
Conclusión
Este ejercicio práctico introduce los conceptos básicos y los pasos para configurar un cluster de Kubernetes en Raspberry Pi. Esta configuración fomenta el aprendizaje mediante la experiencia práctica y es ideal para fines educativos en currículos de ingeniería informática.
Posted on May 5, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
May 5, 2024