Introducción a Kubernetes en tu máquina local con Minikube

Introducción a Kubernetes en tu máquina local con Minikube

Kubernetes se ha convertido en el estándar de facto para orquestar contenedores a escala. Sin embargo, antes de desplegar clusters en la nube o en centros de datos corporativos, resulta muy útil replicar un entorno de desarrollo local. Aquí es donde Minikube entra en juego: una herramienta que facilita la ejecución de un clúster Kubernetes de nodo único en tu máquina, ya sea Windows, macOS o Linux.

1. ¿Por qué usar Minikube

  • Ligero y rápido: solo consume los recursos suficientes para un nodo de Kubernetes.
  • Multiplicidad de drivers: puede usar VirtualBox, Docker, HyperKit u otros.
  • Configuración simplificada: trae comandos para iniciar, detener y depurar el clúster.
  • Ideal para aprendizaje: reproduce prácticamente todos los conceptos de un clúster real.

2. Requisitos previos

  • Un sistema operativo soportado: Windows 10 , macOS 10.12 o cualquier distribución Linux moderna.
  • Virtualización habilitada en la BIOS (para drivers como VirtualBox o Hyper-V).
  • CPU con al menos 2 núcleos y 4 GB de RAM libres.
  • Docker instalado (opcional, pero recomendado si se usa el driver docker).
  • kubectl: la CLI oficial de Kubernetes. Puedes descargarla desde
    https://kubernetes.io/docs/tasks/tools/.

3. Instalación de Minikube

Minikube se distribuye como un único binario. A continuación los pasos generales:

  1. Descarga el binario adecuado:
    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-(uname -s)-(uname -m)
  2. Haz ejecutable el binario:
    chmod x minikube
  3. Mueve el binario a tu PATH, por ejemplo:
    sudo mv minikube /usr/local/bin/

4. Primeros pasos con Minikube

Comando Descripción
minikube start Inicia un clúster local.
minikube status Muestra el estado del clúster.
minikube dashboard Abre la interfaz gráfica de Kubernetes.
minikube stop Detiene el clúster.
minikube delete Elimina el clúster y los recursos asociados.

5. Desplegando una aplicación de ejemplo

Supongamos que quieres desplegar un servidor NGINX. Estos son los pasos:

  1. Crear un Deployment:
    kubectl create deployment nginx --image=nginx
  2. Exponer el servicio:
    kubectl expose deployment nginx --type=NodePort --port=80
  3. Obtener la URL:
    minikube service nginx --url

Con esto puedes abrir tu navegador y ver la página de bienvenida de NGINX.

6. Herramientas de desarrollo y debugging

  • kubectl logs: inspecciona los logs de los pods.
  • kubectl exec: ejecuta comandos dentro de un contenedor.
  • Skaffold: automatiza el ciclo build-test-deploy.
  • Telepresence: conecta tu máquina local al clúster para debugging en vivo.

7. Persistencia y volúmenes

Minikube soporta hostPath y provisión dinámica de volúmenes con provisioners como standard. Ejemplo de PersistentVolumeClaim:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: storage-claim
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
    

8. Uso de VPN para acceder al clúster

En ocasiones, quieres que miembros de tu equipo accedan a tu clúster local o tuneles servicios a través de una VPN:

  • OpenVPN:
    OpenVPN permite crear una red privada virtual sobre la que se exponen puertos de Minikube.
  • WireGuard:
    WireGuard ofrece un túnel ligero y de alto rendimiento.

9. Buenas prácticas

  • Limitar recursos: asigna --memory y --cpus al iniciar Minikube.
  • Versionado consistente: usa la misma versión de Kubernetes que tu entorno de producción.
  • Backup de configuraciones: guarda tus manifiestos en un sistema de control de versiones.
  • Reinicio frecuente: elimina y recrea el cluster si detectas fallos extraños.

10. Recursos adicionales

Este artículo ofrece un panorama profundo para comenzar a usar Kubernetes localmente con Minikube. Con estos conocimientos, estarás listo para desarrollar, probar y experimentar sin salir de tu máquina.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *