k3d 是 macos 上配置本地多容器编排 k3s 环境最轻快、最可控的方案:它把 k3s 打包进 docker 容器运行,不依赖虚拟机驱动,m1/m2 下实测仅占 800mb 内存、25 秒冷启,天然支持多节点模拟和 ingress 流量路由,且与 docker desktop 的 kubernetes 互不干扰。
直接用 k3d 是 macos 上配置本地多容器编排 k3s 环境最轻快、最可控的方案:它把 k3s 打包进 docker 容器运行,不依赖虚拟机驱动,m1/m2 下实测仅占 800mb 内存、25 秒冷启,天然支持多节点模拟和 ingress 流量路由,且与 docker desktop 的 kubernetes 互不干扰。
必须先停用 Docker Desktop 内置 Kubernetes
否则 kubectl 上下文会混乱,k3d 创建的集群可能被自动覆盖或无法切换。操作很简单:
- 打开 Docker Desktop → Preferences → Kubernetes → 取消勾选 Enable Kubernetes
- 点击 Apply & Restart
- 终端执行
kubectl config get-contexts,确认无docker-desktop相关上下文
安装 k3d 并创建多节点集群
k3d 封装了 k3s,让多节点编排像写 Compose 一样直观。注意几个关键点:
- 安装时加环境变量避免 brew 卡住:
HOMEBREW_NO_AUTO_UPDATE=1 brew install k3d - 创建带 1 主 2 工作节点的集群(含 Ingress 支持):
k3d cluster create mycluster --servers 1 --agents 2 --port 443:443@loadbalancer
⚠️ 必须显式加--port 443:443@loadbalancer,否则 Ingress Controller 无法接收外部 HTTPS 流量 - 切换上下文:
kubectl config use-context k3d-mycluster(注意不是k3d-k3d-mycluster,k3d v5.4+ 已简化命名)
快速部署并验证多容器服务
有了集群,就能用标准 Kubernetes 方式编排多个容器——比如一个前端 + 后端 + Redis:
- 启用内置 Traefik Ingress:
kubectl apply -f https://raw.githubusercontent.com/k3s-io/k3s/master/manifests/traefik.yaml - 部署示例服务(含 Service + Ingress):
kubectl create deploy nginx --image=nginxkubectl expose deploy nginx --port=80 --type=LoadBalancerkubectl apply -f ingress-nginx.yaml(定义 host 和 path 路由) - 验证:
kubectl get pods,svc,ingress -A全部为Running/Active即可
调试与日常维护要点
k3d 集群是容器化的,调试方式和传统 VM 不同,但更贴近生产习惯:
- 查看节点日志:
k3d node list→ 找到 master 容器名 →docker logs k3d-mycluster-server-0 - 进入节点 shell:
k3d node exec mycluster-server-0 -- sh,里面自带kubectl和crictl - 导入本地镜像(避免拉取失败):
k3d image import -c mycluster nginx:alpine - 国内网络建议提前配置镜像源:
k3d cluster create ... --k3s-arg "--registry-mirror=https://registry.cn-hangzhou.aliyuncs.com@server:*"











