Cómo Configurar un Clúster de Kubernetes en Docker Desktop


Introducción
Kubernetes es una plataforma de código abierto diseñada para automatizar la implementación, el escalado y la gestión de aplicaciones en contenedores. Se ha convertido en la solución de referencia para la orquestación de contenedores en entornos de producción. Sin embargo, configurar un clúster completo puede ser una tarea compleja, especialmente en entornos locales de desarrollo y pruebas.
Aquí es donde Docker Desktop juega un papel clave: permite ejecutar Kubernetes directamente en tu máquina local, facilitando las pruebas de microservicios, flujos de CI/CD y aplicaciones en contenedores sin la necesidad de un clúster remoto.
En esta guía, te explicaremos paso a paso cómo iniciar un clúster de Kubernetes en Docker Desktop y te proporcionaremos consejos de solución de problemas para garantizar una experiencia fluida.
Nota: El clúster de Kubernetes en Docker Desktop está diseñado para desarrollo y pruebas locales, no es apto para entornos de producción.
Beneficios de ejecutar Kubernetes en Docker Desktop
1. Clúster local fácil de configurar
Configurar Kubernetes en Docker Desktop es sencillo y rápido. La integración permite manejar la red entre el host y Kubernetes, además de la gestión del almacenamiento.
2. Curva de aprendizaje más amigable
Para quienes ya estén familiarizados con Docker pero sean nuevos en Kubernetes, esta opción proporciona un camino de aprendizaje sin fricciones.
3. Pruebas locales de aplicaciones basadas en Kubernetes
Docker Desktop ofrece un entorno ideal para probar aplicaciones basadas en Kubernetes, incluyendo servicios, pods, ConfigMaps y Secrets. Además, es una excelente herramienta para verificar flujos de CI/CD antes de desplegarlos en un entorno remoto.
Pasos para iniciar un clúster de Kubernetes en Docker Desktop
1. Descarga Docker Desktop
Obtén la última versión de Docker Desktop desde su sitio web oficial.
2. Instala Docker Desktop en tu sistema operativo
Docker Desktop es compatible con macOS, Linux y Windows. Sigue las instrucciones específicas para tu sistema operativo.
3. Habilita Kubernetes en Docker Desktop
Abre Docker Desktop y accede a Settings.
Dirígete a Kubernetes y selecciona Enable Kubernetes.
Haz clic en Apply & Restart.
El tiempo de configuración del clúster puede variar según la velocidad de tu conexión a Internet, ya que se descargarán las imágenes necesarias.
Verificación del estado del clúster
Puedes comprobar si Kubernetes se inició correctamente de dos maneras:
1. Desde el dashboard de Docker Desktop
Si Kubernetes está activo, verás un indicador verde en la interfaz.
2. Desde la línea de comandos
Ejecuta el siguiente comando:
kubectl get nodes
Si todo está funcionando correctamente, deberías ver un nodo con el estado Ready:
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 5d v1.30.2
Desplegar una Aplicación en Kubernetes
Para probar Kubernetes en Docker Desktop, puedes desplegar una aplicación simple. A continuación, se presenta un manifiesto YAML para desplegar un servicio web con Nginx.
Manifiesto YAML de ejemplo
apiVersion: apps/v1
kind: Deployment
metadata:
name: mi-aplicacion
spec:
replicas: 2
selector:
matchLabels:
app: mi-aplicacion
template:
metadata:
labels:
app: mi-aplicacion
spec:
containers:
- name: mi-aplicacion
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: mi-aplicacion-service
spec:
selector:
app: mi-aplicacion
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
Aplicar el Manifiesto
Guarda el archivo como nginx-deployment.yaml
y ejecútalo con el siguiente comando:
kubectl apply -f nginx-deployment.yaml
Puedes verificar el estado del deployment con:
kubectl get pods
Y ver los servicios expuestos con:
kubectl get svc
Usar Port-Forwarding
Puedes usar port-forward
para probarlo localmente:
kubectl port-forward svc/mi-aplicacion-service 8080:80
Luego accede desde tu navegador o terminal:
curl http://localhost:8080
Habilitar Load Balancer en Docker Desktop
Docker Desktop usa kind
internamente, y por defecto no tiene un LoadBalancer. Para habilitarlo, puedes usar MetalLB
, un LoadBalancer de software para Kubernetes:
Instalación de MetalLB
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/main/config/manifests/metallb-native.yaml
Habilitar la asignación de direcciones IP
Ejecuta lo siguiente para verificar el rango de direcciones IP que Kubernetes está utilizando en tu Docker Desktop:
kubectl cluster-info dump | grep -m 1 service-cluster-ip-range
Luego, crea un ConfigMap con un rango de IPs asignables dentro de --service-cluster-ip-range=10.96.0.0/16
:
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
labels:
app: metallb
component: config
annotations:
metallb.universe.tf/address-pool: "default"
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 10.96.240.0/24
Aplica la configuración:
kubectl apply -f configmap.yaml
Ahora, los servicios LoadBalancer
recibirán una IP dentro del rango 10.96.240.0/24
.
Solución de problemas en Kubernetes con Docker Desktop
Si experimentas problemas con Kubernetes en Docker Desktop, puedes obtener ayuda de varias maneras:
Generar un archivo de diagnóstico
Antes de intentar solucionar un problema, genera un archivo de diagnóstico ejecutando en macOS:
/Applications/Docker.app/Contents/MacOS/com.docker.diagnose gather -upload
Esto creará un archivo comprimido con los registros del sistema.
Verificación de registros
Para identificar errores, puedes buscar en los logs con grep
:
grep -Hrni "error" <ruta_del_archivo_descomprimido>
Un ejemplo de error común es la imposibilidad de descargar las imágenes necesarias para Kubernetes:
starting kubernetes: pulling kubernetes images: pulling registry.k8s.io/coredns:v1.9.3: Error response from daemon: received unexpected HTTP status: 500 Internal Server Error
Solución alternativa para imágenes faltantes
Si Kubernetes no arranca debido a imágenes faltantes, puedes transferirlas desde otra máquina con Docker Desktop configurado correctamente:
Guarda la imagen en un archivo tar desde la máquina que sí inició Kubernetes:
docker save registry.k8s.io/coredns:v<VERSION> > coredns.tar
Transfiere el archivo a la máquina con problemas.
Carga la imagen en la máquina de destino:
docker load < coredns.tar
Vuelve a habilitar Kubernetes desde la configuración de Docker Desktop.
Conclusión
Docker Desktop simplifica enormemente la ejecución de Kubernetes en entornos locales, proporcionando una solución conveniente para desarrolladores que desean probar sus aplicaciones en Kubernetes sin depender de un clúster remoto.
Si sigues estos pasos, podrás configurar y administrar Kubernetes en tu máquina local de manera eficiente. ¡Feliz desarrollo en contenedores!
Subscribe to my newsletter
Read articles from Rossana Suarez directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Rossana Suarez
Rossana Suarez
Soy Roxs 👩💻| Software Developer | DevOps | DevSecOps | en @295DevOps 🖼 Content Creator. No se puede crecer si no estas dispuesto a saltar a la zona de peligro 🔥