Compartir comentarios
Las respuestas se generan en base a la documentación.

Explora la vista de Kubernetes

Docker Desktop incluye un servidor y un cliente de Kubernetes independientes, así como integración con la CLI de Docker, lo que te permite el desarrollo y pruebas locales de Kubernetes directamente en tu máquina.

El servidor de Kubernetes se ejecuta como un clúster de uno o varios nodos dentro de contenedores de Docker. Esta configuración ligera te ayuda a explorar las funciones de Kubernetes, probar cargas de trabajo y trabajar con la orquestación de contenedores en paralelo con otras funciones de Docker.

Activar Kubernetes

Con Docker Desktop versión 4.51 y posteriores, puedes administrar Kubernetes directamente desde la vista Kubernetes en el Panel de Docker Desktop.

  1. Abre el Panel de Docker Desktop y selecciona la vista Kubernetes.
  2. Selecciona Create cluster (Crear clúster).
  3. Elige el tipo de clúster:
    • Kubeadm crea un clúster de un solo nodo y la versión la define Docker Desktop.
    • kind crea un clúster de múltiples nodos y puedes definir la versión y el número de nodos. Para obtener información más detallada sobre cada tipo de clúster, consulta Método de aprovisionamiento del clúster.
  4. Opcional: Selecciona Show system containers (advanced) (Mostrar contenedores del sistema (avanzado)) para ver los contenedores internos al utilizar comandos de Docker.
  5. Selecciona Create (Crear).

Esto configura las imágenes necesarias para ejecutar el servidor de Kubernetes como contenedores e instala la herramienta de línea de comandos kubectl en tu sistema en /usr/local/bin/kubectl (Mac) o en C:\Program Files\Docker\Docker\resources\bin\kubectl.exe (instalaciones para todos los usuarios) o %LOCALAPPDATA%\Programs\DockerDesktop\resources\bin\kubectl.exe (instalaciones por usuario) (Windows). Si instalaste kubectl usando Homebrew o mediante algún otro método y experimentas conflictos, elimina /usr/local/bin/kubectl.

Note

Docker Desktop para Linux no incluye kubectl por defecto. Puedes instalarlo por separado siguiendo la guía de instalación de Kubernetes. Asegúrate de que el binario de kubectl esté instalado en /usr/local/bin/kubectl.

Las siguientes acciones también se desencadenan en el backend y en la máquina virtual de Docker Desktop:

  • Generación de certificados y configuración del clúster.
  • Descarga e instalación de componentes internos de Kubernetes.
  • Arranque del clúster.
  • Instalación de controladores adicionales para redes y almacenamiento.

Cuando Kubernetes está activado, su estado se muestra en el pie de página del Panel de Docker Desktop y en el menú de Docker.

Puedes comprobar qué versión de Kubernetes estás utilizando con:

$ kubectl version

Método de aprovisionamiento del clúster

Kubernetes en Docker Desktop se puede aprovisionar con los proveedores kubeadm o kind.

kubeadm es el proveedor más antiguo. Admite un clúster de un solo nodo, no permite seleccionar la versión de Kubernetes, es más lento de aprovisionar que kind y no es compatible con el aislamiento de contenedores mejorado Enhanced Container Isolation (ECI), lo que significa que si ECI está activado, el clúster funciona pero no está protegido por ECI.

kind es el proveedor más reciente. Admite clústeres de múltiples nodos (para una configuración de Kubernetes más realista), te permite elegir la versión de Kubernetes, es más rápido de aprovisionar que kubeadm y es compatible con ECI. Cuando ECI está activado, el clúster de Kubernetes se ejecuta en contenedores de Docker sin privilegios, haciéndolo más seguro.

Característicakubeadmkind
Soporte para clústeres de múltiples nodosNo
Selector de versión de KubernetesNo
Velocidad de aprovisionamiento~1 min~30 segundos
Soportado por ECINo
Funciona con el almacén de imágenes de containerd
Funciona con el almacén de imágenes de DockerNo

Vista del panel (Dashboard view)

Cuando un clúster de Kubernetes está activado, la vista Kubernetes muestra un panel en vivo que incluye:

  • Un selector de espacio de nombres (namespace) en la parte superior.
  • Una lista en tiempo real de los recursos (pods, servicios, despliegues) en el espacio de nombres seleccionado.
  • Actualizaciones automáticas cuando se crean, eliminan o modifican recursos.

Verificar la instalación

Confirma que tu clúster está en ejecución:

$ kubectl get nodes
NAME                 STATUS    ROLES            AGE       VERSION
docker-desktop       Ready     control-plane    3h        v1.29.1

Si kubectl está apuntando a otro entorno, cambia al contexto de Docker Desktop:

$ kubectl config use-context docker-desktop
Tip

Si no aparece ningún contexto, intenta:

  • Ejecutar el comando en el Símbolo del sistema o en PowerShell.
  • Configurar la variable de entorno KUBECONFIG para que apunte a tu archivo .kube/config.

Para obtener más información sobre kubectl, consulta la documentación de kubectl.

Editar o detener tu clúster

Cuando Kubernetes está activado:

  • Selecciona Edit cluster (Editar clúster) para modificar la configuración. Por ejemplo, cambiar entre kubeadm y kind, o modificar el número de nodos.
  • Selecciona Stop (Detener) para desactivar el clúster. Se muestra el progreso y la vista Kubernetes vuelve a la pantalla Create cluster. Esto detiene y elimina los contenedores de Kubernetes, y también elimina el comando /usr/local/bin/kubectl.

Actualizar tu clúster

Los clústeres de Kubernetes no se actualizan automáticamente con las actualizaciones de Docker Desktop. Para actualizar el clúster, debes seleccionar manualmente Reset cluster (Restablecer clúster) en la configuración de Kubernetes.

Configurar un registro de imágenes personalizado para las imágenes del plano de control de Kubernetes

Docker Desktop utiliza contenedores para ejecutar el plano de control (control plane) de Kubernetes. Por defecto, Docker Desktop descarga las imágenes de contenedor asociadas desde Docker Hub. Las imágenes descargadas dependen del método de aprovisionamiento del clúster.

Por ejemplo, en el modo kind se requieren las siguientes imágenes:

docker.io/kindest/node:<tag>
docker.io/envoyproxy/envoy:<tag>
docker.io/docker/desktop-cloud-provider-kind:<tag>
docker.io/docker/desktop-containerd-registry-mirror:<tag>

En el modo kubeadm se requieren las siguientes imágenes:

docker.io/docker/desktop-kubernetes:<tag>
docker.io/docker/desktop-storage-provisioner:<tag>
docker.io/docker/desktop-vpnkit-controller:<tag>
docker.io/docker/desktop-kubernetes-etcd:<tag>
docker.io/docker/desktop-kubernetes-coredns:<tag>
docker.io/docker/desktop-kubernetes-pause:<tag>
docker.io/docker/desktop-kubernetes-apiserver:<tag>
docker.io/docker/desktop-kubernetes-controller-manager:<tag>
docker.io/docker/desktop-kubernetes-scheduler:<tag>
docker.io/docker/desktop-kubernetes-proxy:<tag>

Las etiquetas de las imágenes son seleccionadas automáticamente por Docker Desktop según diversos factores, incluida la versión de Kubernetes que se esté utilizando. Las etiquetas varían para cada imagen y pueden cambiar entre las versiones de Docker Desktop. Para mantenerte informado, consulta las notas de publicación de Docker Desktop.

Note

En las versiones de Docker Desktop 4.44 o posteriores, puedes ejecutar docker desktop kubernetes images list para listar las imágenes de Kubernetes utilizadas por la versión instalada actualmente de Docker Desktop. Para obtener más información, consulta la CLI de Docker Desktop.

Para adaptarse a escenarios donde no se permite el acceso a Docker Hub, los administradores pueden configurar Docker Desktop para descargar las imágenes enumeradas anteriormente desde un registro diferente (por ejemplo, un espejo) utilizando la configuración KubernetesImagesRepository de la siguiente manera.

El nombre de una imagen se puede dividir en los componentes [registry[:port]/][namespace/]repository[:tag]. La configuración KubernetesImagesRepository permite a los usuarios anular la parte [registry[:port]/][namespace] del nombre de la imagen.

Por ejemplo, si Kubernetes en Docker Desktop está configurado en modo kind y KubernetesImagesRepository está configurado como my-registry:5000/kind-images, entonces Docker Desktop descargará las imágenes de:

my-registry:5000/kind-images/node:<tag>
my-registry:5000/kind-images/envoy:<tag>
my-registry:5000/kind-images/desktop-cloud-provider-kind:<tag>
my-registry:5000/kind-images/desktop-containerd-registry-mirror:<tag>

Estas imágenes deben clonarse/duplicarse a partir de sus respectivas imágenes en Docker Hub. Las etiquetas también deben coincidir con las que espera Docker Desktop.

El enfoque recomendado para configurar esto es el siguiente:

  1. Inicia Kubernetes utilizando el método de aprovisionamiento de clúster deseado: kubeadm o kind.
  2. Una vez que Kubernetes se haya iniciado, utiliza:
    • (Docker Desktop versión 4.44 o posterior) docker desktop kubernetes images list para listar las etiquetas de imagen que descargará la instalación actual de Docker Desktop.
    • docker ps para ver las imágenes de contenedor utilizadas por Docker Desktop para el plano de control de Kubernetes.
  3. Clona o duplica esas imágenes (con las etiquetas correspondientes) en tu registro personalizado.
  4. Detén el clúster de Kubernetes.
  5. Configura la opción KubernetesImagesRepository para que apunte a tu registro personalizado.
  6. Reinicia Docker Desktop.
  7. Verify that the Kubernetes cluster is using the custom registry images using the docker ps command.
Note

La configuración KubernetesImagesRepository solo se aplica a las imágenes del plano de control utilizadas por Docker Desktop para configurar el clúster de Kubernetes. No tiene ningún efecto sobre otros pods de Kubernetes.

Note

En las versiones de Docker Desktop 4.43 o anteriores, cuando utilizas KubernetesImagesRepository y tienes activado Enhanced Container Isolation (ECI), añade las siguientes imágenes a la lista de imágenes de montaje de socket Docker de ECI:

[imagesRepository]/desktop-cloud-provider-kind: [imagesRepository]/desktop-containerd-registry-mirror:

Estos contenedores montan el socket de Docker, por lo que debes añadir las imágenes a la lista de imágenes de ECI. De lo contrario, ECI bloqueará el montaje y Kubernetes no se se iniciará.

Resolución de problemas

  • Si Kubernetes no se inicia, asegúrate de que Docker Desktop se esté ejecutando con suficientes recursos asignados. Comprueba Settings > Resources.
  • Si los comandos de kubectl devuelven errores, confirma que el contexto esté configurado en docker-desktop:
    $ kubectl config use-context docker-desktop
    
    Luego puedes intentar comprobar los logs de los contenedores del sistema de Kubernetes si has activado esa configuración.
  • Si experimentas problemas con el clúster después de una actualización, restablece tu clúster de Kubernetes. Restablecer un clúster de Kubernetes puede ayudar a resolver problemas al devolver el clúster a un estado limpio, eliminando malas configuraciones, datos dañados o recursos bloqueados que puedan estar causando problemas. Si el problema persiste, es posible que debas limpiar y purgar los datos, y luego reiniciar Docker Desktop.