Este proyecto consiste en el diseño e implementación de una infraestructura virtualizada on-premise para el despliegue de servicios contenerizados. Se simula un entorno de producción real garantizando Alta Disponibilidad (HA), escalabilidad y gestión centralizada mediante un clúster de Kubernetes robusto.
[!IMPORTANT] Puedes consultar el detalle estratégico en el Documento de Análisis de Requisitos y Viabilidad.
| Icono | Rol | SO | Función | IP Estática |
|---|---|---|---|---|
| 🛡️ | K8s Control Plane | Ubuntu Server | Gestión del clúster (API, Etcd, Scheduler) | 192.168.1.110 |
| 👷 | K8s Worker 1 | Ubuntu Server | Ejecución de cargas de trabajo | 192.168.1.111 |
| 👷 | K8s Worker 2 | Ubuntu Server | Redundancia y HA | 192.168.1.112 |
| 🤖 | Servidor Ansible | Ubuntu Server | Automatización y aprovisionamiento (IaC) | 192.168.1.115 |
| 💾 | Servidor NFS | Ubuntu Server | Almacenamiento persistente (PV/PVC) | 192.168.1.116 |
| 💻 | Cliente | Linux Desktop | Pruebas de usuario final y validación de red | DHCP |
Se han elaborado manuales técnicos detallados para replicar la infraestructura paso a paso:
[!TIP] Se recomienda seguir las guías en orden secuencial para garantizar la correcta visibilidad de red entre los componentes del clúster.
Kubernetes v1.30 ☸️containerd 📦Flannel 🕸️NFS (Persistent Volumes) 💾Ansible 🤖Git + GitHub 🐙Durante el despliegue se resolvieron retos técnicos críticos documentados para futuras referencias:
[!CAUTION] Gestión de Red: Desactivación obligatoria de IPv6 a nivel de kernel para evitar conflictos en el Control Plane.
systemd en containerd para asegurar la estabilidad del proceso kubelet.--node-ip en la configuración de kubelet para forzar la interfaz IPv4 correcta sobre el hardware virtualizado.routes: to: default via 192.168.1.1) en lugar del parámetro obsoleto gateway4./etc/default/kubelet con el parámetro KUBELET_EXTRA_ARGS="--node-ip=<IP_ESTATICA>".CrashLoopBackOff por la ausencia del módulo br_netfilter. Se solucionó cargando el módulo manualmente y asegurando su persistencia en /etc/modules-load.d/k8s.conf.NetworkPluginNotReady mediante la limpieza manual de interfaces residuales (cni0, flannel.1) y el reinicio de containerd.ConfigMap de kube-proxy para activar strictARP: true, requisito indispensable para el correcto enrutamiento en Capa 2.LoadBalancer) para asegurar que MetalLB devuelva la IP externa (192.168.1.200) al pool, dejándola disponible para el controlador Ingress.
Proyecto Integrado de Grado Superior ASIR
© 2026 - jobopaK