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

Rossana SuarezRossana Suarez
5 min read

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.

💡
Para efectos de está guía estaré usando Kind

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:

  1. 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
    
  2. Transfiere el archivo a la máquina con problemas.

  3. Carga la imagen en la máquina de destino:

     docker load < coredns.tar
    
  4. 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!

0
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 🔥