El flujo de trabajo que encaja en Mac
Un clúster Kubernetes en un portátil es una copia de algo que en realidad se ejecuta en otro lugar. Para gran parte del trabajo de plataforma y aplicaciones no necesitas esa copia: necesitas resultados rápidos sobre el propio contenedor, los servicios con los que se comunica y una terminal abierta en el clúster real. En un Mac con chip de Apple, esto se divide en cuatro tareas.
| Tarea | Herramienta | En Oxcart |
|---|---|---|
| Inspeccionar y administrar clústeres | kubectl, k9s | Herramientas nativas de Mac; conexión a cualquier contexto de kubeconfig |
| Compilar imágenes para el clúster | docker buildx build | Compilar juntas imágenes amd64 y arm64 |
| Ejecutar la app y sus dependencias | docker compose | Levantar tus servicios con comprobaciones de salud, up --wait y puertos publicados |
| Probar manifiestos contra un servidor de API | kwok | Comprobar manifiestos contra un plano de control real con nodos y pods simulados |
kubectl y k9s con tus clústeres
kubectl y k9s leen el mismo kubeconfig, así que todo lo que puedas alcanzar con uno puedes explorarlo con el otro. Las CLI de la nube escriben los contextos por ti: aws eks update-kubeconfig, az aks get-credentials y gcloud container clusters get-credentials añaden un contexto cada uno.
kubectl config get-contexts # every cluster in your kubeconfig
kubectl config use-context my-eks # switch the current context
kubectl get pods -A # works against the current context
k9s # the same context, in a terminal UI
k9s --context my-aks --readonly # another context, read-only Instala k9s con Homebrew o MacPorts, como indica su página de instalación. Mantén archivos kubeconfig separados por entorno y elige uno con KUBECONFIG=~/.kube/staging k9s cuando quieras dejar producción fuera de alcance.
Compilar imágenes para el clúster
La mayoría de los clústeres usa nodos amd64, y tu Mac es arm64. Buildx en Oxcart compila ambas arquitecturas desde un Dockerfile con el constructor predeterminado:
docker buildx ls # default builder: linux/amd64, linux/arm64
docker buildx build --platform linux/amd64,linux/arm64 -t myapp:dev .
docker run --rm --platform linux/amd64 myapp:dev # runs through Rosetta
docker run --rm --platform linux/arm64 myapp:dev # runs natively Pasa --platform linux/amd64 cuando ejecutes una imagen solo para amd64 que hayas compilado en local. Para desplegar, envía una etiqueta por plataforma o deja que la CI publique un manifiesto multi-arquitectura que seleccione la imagen adecuada para cada nodo:
docker buildx build --platform linux/amd64 --load -t registry.example.com/myapp:1.4.0-amd64 .
docker push registry.example.com/myapp:1.4.0-amd64 Las compilaciones son rápidas: Oxcart registró 341 ms para una compilación sin caché de un contexto local pequeño y 121 ms con caché, los mejores resultados de los tres entornos que probamos. docker login guarda las contraseñas de los registros en el Llavero de macOS.
Ejecutar las dependencias de la app con Compose
Mientras el servicio que estás modificando se comunica con un clúster remoto, su base de datos, caché y cola pueden ejecutarse en tu Mac. Un compose.yaml con comprobaciones de salud y depends_on: condition: service_healthy se levanta con docker compose up -d --wait, que solo termina cuando todos los servicios están saludables. Consulta Docker Compose en equipos con chip de Apple para ver un ejemplo completo. Los contenedores arrancan lo bastante rápido como para eliminarlos entre pruebas: 42 ms para docker run --rm y 77 ms para detener y eliminar 20 contenedores.
Una API real de Kubernetes en tu Mac con kwok
kwok (Kubernetes WithOut Kubelet) inicia los componentes reales del plano de control como contenedores y simula nodos y pods. En Oxcart, kwokctl levantó etcd, kube-apiserver, kube-scheduler y kube-controller-manager (v1.36.1) en unos 15 segundos, incluidas las descargas de imágenes, y kubectl y k9s en el Mac se conectaron a él.
kwokctl create cluster --name dev --runtime docker
kwokctl scale node --replicas 2 --name dev
kubectl apply -f deploy.yaml
kubectl rollout status deploy/web # "successfully rolled out"
kubectl get pods -o wide # 3/3 Running on simulated nodes
k9s # browse it like any cluster
kwokctl delete cluster --name dev Úsalo para comprobar que los manifiestos se aplican, que las reglas RBAC permiten lo que esperas, que un controlador u operador se comunica correctamente con la API y para aprender k9s sin tocar un clúster compartido. Ningún contenedor de tu Deployment se ejecuta realmente: los pods son registros del servidor de API, marcados como Running por kwok.
Elige dónde reside tu clúster
Mantén tu ciclo de desarrollo rápido en el Mac y usa el clúster que encaje con tu equipo. Un clúster de desarrollo compartido ofrece a todos los mismos controladores, políticas e integraciones con la nube. Un clúster local es útil cuando necesitas pods reales sin estar conectado a ese entorno.
Oxcart admite contenedores privilegiados para cargas de trabajo que necesitan permisos elevados dentro de Linux. Un clúster Kubernetes completo también depende de la red y la configuración de ejecución de la herramienta de clúster. Para un clúster incluido en una app de escritorio, consulta la comparativa de apps de contenedores para Mac; para el desarrollo diario de apps, los flujos con Compose, Buildx y kwok descritos arriba mantienen la iteración en local.
Clústeres en la nube desde tu Mac
- EKS: compila y envía a ECR, y después
aws eks update-kubeconfig. Consulta AWS ECS, EKS, Fargate y Lambda en local. - AKS: envía a Azure Container Registry, y después
az aks get-credentials. Consulta Azure Container Apps y AKS en local. - GKE y Cloud Run: envía a Artifact Registry; Cloud Run necesita
linux/amd64. Consulta Cloud Run en local.
Preguntas
¿Cómo encaja Oxcart en un flujo de trabajo con Kubernetes?
Usa Oxcart para compilar tus imágenes, ejecutar la app y sus dependencias en local y probar manifiestos con un servidor de API kwok local. Los contenedores privilegiados forman parte de la plataforma. Usa kubectl y k9s en tu Mac para tu clúster compartido o en la nube; Oxcart no incluye un clúster Kubernetes.
¿Hay alguna API local de Kubernetes que pueda usar con Oxcart?
Sí. kwok ejecuta un plano de control real de Kubernetes (etcd, kube-apiserver, kube-scheduler y kube-controller-manager, v1.36 en nuestra prueba) como contenedores de Oxcart, y kubectl y k9s en tu Mac se conectan a él. Sus nodos y pods son simulados, por lo que sirve para probar manifiestos, RBAC y el comportamiento de la API, no para ejecutar los contenedores de tu app.
¿kubectl y k9s funcionan en un Mac con chip de Apple?
Sí. Ambos son herramientas de línea de comandos nativas de macOS. Usan tu kubeconfig, así que funcionan con cualquier clúster al que apunte: EKS, AKS, GKE, un clúster del trabajo o un servidor de API local. k9s documenta la instalación con Homebrew y MacPorts.
¿Cómo compilo imágenes para un clúster Kubernetes amd64 en un Mac con chip de Apple?
Usa Buildx con --platform linux/amd64 o --platform linux/amd64,linux/arm64 para ambas arquitecturas. En Oxcart, la compilación multiplataforma termina con el constructor predeterminado y ambas arquitecturas se ejecutan en local. No se admite enviar una imagen multiplataforma desde Oxcart, así que envía una etiqueta por plataforma o deja que la CI publique el manifiesto multi-arquitectura.
¿Dónde puedo ejecutar un clúster Kubernetes local completo en Mac?
Varias apps de contenedores para Mac incluyen un clúster de un solo nodo. Se comparan, con fuentes, en la página de comparativas. Muchos equipos desarrollan con un clúster compartido o en la nube y solo ejecutan en local las dependencias de la app, que es el flujo de trabajo que cubre esta guía.
¿k9s necesita un servidor de métricas?
k9s se conecta sin él; registra una advertencia y deja vacías las columnas de CPU y memoria cuando el clúster no tiene API de métricas. En nuestra prueba con kwok indicó «Kubernetes connectivity OK» junto a esa advertencia.
Fuentes y método
- Ejemplo de API local: Oxcart 0.1.2, Mac17,14, macOS 27.2, 2026-10-10; kwokctl v0.8.0, k9s v0.51.0 y kubectl v1.33.9.
- kwok: https://kwok.sigs.k8s.io/; k9s: https://k9scli.io/ y https://k9scli.io/topics/install/; kind: https://kind.sigs.k8s.io/docs/user/known-issues/; k3d: https://k3d.io/stable/; controladores de minikube: https://minikube.sigs.k8s.io/docs/drivers/. Comprobado el 2026-10-10.
- Velocidad de compilaciones y contenedores: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPU y 12 GiB, medianas de cinco muestras; los otros entornos se midieron antes ese mismo día en el mismo Mac, con el mismo sistema de medición y el cliente docker 29.4.