¿Por qué Kubernetes?
En un mundo cada vez más orientado a los microservicios y la automatización, Kubernetes se ha convertido en una tecnología fundamental para el despliegue, escalado y gestión de aplicaciones en contenedores.
Hoy en día, las aplicaciones que usamos a diario como Netflix o Spotify manejan millones de usuarios sin caídas ni interrupciones. ¿El secreto? Kubernetes.
¿Qué es Kubernetes?
Kubernetes es un orquestador de contenedores. Su función es asegurarse de que las aplicaciones se ejecuten de forma confiable, escalable y sin interrupciones, sin importar si están en tu laptop, en un servidor o en la nube.
Imagina que tu aplicación es una orquesta:
- Cada contenedor es un músico.
- Kubernetes es el director de la orquesta.
- Si un músico falla, el director lo reemplaza para que la música no pare.
¿Qué es un contenedor?
Un contenedor es como una cajita mágica que contiene todo lo necesario para ejecutar una aplicación: código, dependencias, librerías, etc. Kubernetes reparte estos contenedores entre los servidores disponibles, asegurando que todo funcione correctamente.
Conceptos fundamentales de Kubernetes
Antes de comenzar a usar Kubernetes, es importante conocer algunos de sus componentes clave:
- Clúster: Conjunto de máquinas que ejecutan Kubernetes.
- Node: Máquina individual dentro del clúster.
- Pod: Unidad más pequeña que contiene contenedores.
- Deployment: Define cómo se despliega una app.
- ReplicaSet: Garantiza una cantidad fija de Pods.
- Service: Punto de acceso a los Pods desde dentro o fuera del clúster.
Como se muestra en la imagen 2, los Deployments definen cómo deben crearse y actualizarse los Pods. Los ReplicaSets garantizan que haya un número específico de réplicas de un Pod en ejecución.
¿Qué se necesita para empezar?
Requisitos previos:
- Conocimientos de contenedores (preferiblemente Docker).
- Familiaridad con terminal y YAML.
- Herramientas instaladas localmente.
Herramientas esenciales:
- kubectl: Herramienta de línea de comandos para interactuar con un clúster de Kubernetes.
- Minikube o Kind: Permiten crear un clúster de Kubernetes local en tu equipo para desarrollo y pruebas.
- Docker o una máquina virtual: Necesarios para construir y ejecutar contenedores que luego serán gestionados por Kubernetes. (Docker es la opción más común, pero una máquina virtual puede ser útil en ciertos entornos).
Instalación de kubectl en Windows
Requisitos:
- Windows 10 o superior
- PowerShell o símbolo del sistema (CMD)
- Acceso a Internet
Descargar el ejecutable de kubectl con chocolately
- Abre PowerShell o CMD como administrador.
- Ejecuta el siguiente comando para descargar la última versión de kubectl:
choco install kubernetes-cli
Pruebe para asegurarse de que la versión que instaló esté actualizada:
kubectl version --client
Instalación de Minikube en Windows
-Requisitos previos Antes de instalar Minikube, asegúrate de tener:
- Windows 10/11 (64 bits)
- Una de estas herramientas de virtualización (VM): o Hyper-V o VirtualBox
También necesitarás tener instalado:
- kubectl
- Chocolatey (opcional pero recomendado para instalación rápida)
Instalar Minikube con Chocolatey
Si tienes Chocolatey instalado, simplemente abre PowerShell como administrador y ejecuta:
choco install minikube
Esto instalará Minikube y lo agregará al PATH automáticamente.
- Verificar instalación
o Abre PowerShell o CMD y ejecuta:
minikube version
Deberías ver la versión de Minikube instalada.
¿Por qué se usa una máquina virtual con Minikube?
- Kubernetes necesita varios componentes que deben funcionar como si estuvieran en servidores reales (nodos). Como en una PC no puedes simular fácilmente varios servidores físicos, usamos una máquina virtual (VM) para emular un entorno controlado, limpio y aislado.
¿Funcionará el ejemplo práctico de kubectl con Minikube sin una máquina virtual?
- Sí funcióna. Pero necesitas usar algún driver, y ese driver puede ser una máquina virtual (como VirtualBox o Hyper-V) o Docker.
- Si tienes Docker Desktop instalado en Windows, puedes hacer funcionar Minikube sin una máquina virtual tradicional, usando:
minikube start --driver=docker
Docker se encarga de crear un contenedor (en vez de una VM) que ejecuta Kubernetes. Funciona igual que con una VM, pero es más ligero y rápido.
- Si NO tienes Docker ni una VM disponible, entonces Minikube no podrá iniciar el clúster. Necesita un entorno donde correr Kubernetes (ya sea una VM o contenedor).
- ¿Necesitas instalar tú mismo una imagen de sistema operativo (SO) en VirtualBox?
o No. No necesitas instalar manualmente ninguna imagen de SO.
o Minikube se encarga automáticamente de crear la máquina virtual, instalar el SO base (generalmente Linux) y configurar Kubernetes dentro de ella.
¿Qué hace Minikube cuando usas VirtualBox?
o Cuando ejecutas:
minikube start --driver=virtualbox
o Minikube hace todo esto por ti:
- Crea una nueva VM en VirtualBox.
- Descarga una imagen de Linux optimizada para Kubernetes.
- Instala y configura todos los componentes de Kubernetes dentro de esa VM.
- Levanta un clúster funcional.
- Te permite usar kubectl para interactuar con ese clúster.
Ejemplo práctico: Usar kubectl con Minikube y Docker Desktop
Antes de comenzar, asegúrate de tener instalado:
- kubectl
- Docker Desktop (para Windows, ya debe tener WSL 2 o Hyper-V habilitado)
- Minikube
Verifica que Docker esté corriendo:
• Inicia Minikube usando Docker como driver
minikube start --driver=Docker
• Verificar el estado del clúster:
minikube status
• Usa kubectl para interactuar con Kubernetes
Usa el comando kubectl get nodes
para listar los nodos, debes ver algo parecido a esto:
• Despliega una aplicación sencilla
kubectl create deployment mi-primer-minikube --image=kicbase/echo-server:1.0
Este comando le dice a Kubernetes que cree un Deployment llamado mi-primer-minikube, y que ese Deployment debe ejecutar una aplicación basada en la imagen de contenedor kicbase/echo-server:1.0.
Nota: ¿Qué es kicbase/echo-server:1.0?
Es una imagen ligera de servidor que simplemente devuelve cualquier cosa que le envíes, como las cabeceras HTTP o la IP del cliente. Es útil para pruebas porque no necesitas una app real para verificar que Kubernetes está sirviendo algo. • Una vez creado el Deployment, puedes verificarlo con:
kubectl get deployments
• Exponer la aplicación como un servicio (hacerlo accesible):
kubectl expose deployment mi-primer-minikube --type=NodePort --port=8080
• Ver el servicio:
kubectl get services
¿Qué significa eso?
• PORT(S): 8080:30348 el servicio expone el puerto 8080 internamente, y lo reenvía al puerto 30348 del host (tu máquina). • TYPE: NodePort: significa que puedes acceder al servicio desde fuera del clúster, usando la IP del nodo y el puerto 30348.
• Acceder a la aplicación en el navegador:
minikube service mi-primer-minikube
¿Qué significa la salida?
la IP interna del clúster (192.168.49.2) con el puerto externo (30348) al que se expone tu servicio. Luego, al usar el comando minikube service, se crea un túnel para redirigir esa IP/puerto a algo más accesible desde Windows:
Si al usar este comando no se abrió nada en tu navegador puedes copiar http://127.0.0.1:54173 y pégala tú mismo.
Ahí deberías ver la respuesta de tu aplicación, verás un JSON con los detalles de la petición.
Nota: No cierres la terminal o Mientras esté abierta, puedes acceder al servicio en el navegador. o Si la cierras, el túnel se rompe y ya no funcionará 127.0.0.1:54173.
• Cuando termines, puedes apagar el clúster:
minikube stop
• Si deseas eliminarlo completamente:
minikube delete
• Si deseas volver a ver tu clúster desde Docker desktop, lo puedes hacer de esta forma:
Haz clic en Terminal. Asegúrate de que Minikube esté en ejecución (1). Una vez que Minikube esté corriendo, abre una terminal (puede ser desde Docker Desktop, CMD o PowerShell) (2) y ejecuta el siguiente comando para iniciar tu clúster:
minikube start
(3)
Finalmente ejecuta el comando:
minikube service mi-primer-minikube
¿ Quieres conocer más ?
¡ Agenda una llamada !
¡ Contáctanos en WhatsApp