Docker Desktop 一键部署 K8s 集群:从零搭建本地开发测试环境
2026/5/12 12:22:10 网站建设 项目流程

1. 为什么选择Docker Desktop搭建K8s环境

刚开始接触Kubernetes时,我在云服务器上折腾过Minikube,也尝试过手动部署多节点集群,结果不是网络配置出问题就是资源消耗太大。直到发现Docker Desktop内置的Kubernetes功能,才真正体会到什么叫"开箱即用"。这个方案特别适合以下场景:

  • 本地开发测试:不需要额外虚拟机,笔记本就能跑起完整集群
  • 快速验证想法:部署一个应用只需几分钟,随时可以推倒重来
  • 学习K8s基础:所有核心功能都支持,从Pod到Service再到Ingress

我团队现在所有新人的K8s入门第一课,都是在Docker Desktop上完成的。相比其他方案,它有三大优势:

  1. 零配置:勾选一个复选框就能启用K8s
  2. 资源友好:可以灵活调整CPU/内存分配
  3. 生态集成:和Docker镜像仓库无缝配合

2. 环境准备与安装

2.1 安装Docker Desktop

国内用户建议从阿里云镜像站下载安装包,速度会快很多。安装时注意:

  • Windows系统需要开启WSL2后端(Win10 2004以上版本)
  • macOS建议分配至少4GB内存给Docker
  • 首次启动后记得在Settings→Docker Engine里配置国内镜像源
// 推荐镜像配置 { "registry-mirrors": [ "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn" ] }

2.2 启用Kubernetes功能

在Docker Desktop的设置界面,找到Kubernetes选项卡:

  1. 勾选"Enable Kubernetes"
  2. 建议将API Server端口改为6443(避免与其他服务冲突)
  3. 点击Apply按钮等待安装完成

第一次启动可能会下载约500MB的镜像,建议挂上网络加速工具。我在公司网络下实测安装需要15-20分钟,完成后会看到右下角鲸鱼图标变成绿色。

注意:如果长时间卡在starting状态,可以尝试重置集群(Reset Kubernetes Cluster)

3. 验证集群状态

安装完成后,打开终端运行几个基本命令:

# 检查节点状态 kubectl get nodes # 查看所有系统Pod kubectl get pods -n kube-system # 获取集群信息 kubectl cluster-info

正常情况应该看到类似这样的输出:

NAME STATUS ROLES AGE VERSION docker-desktop Ready control-plane 5d v1.25.2

4. 部署Dashboard可视化界面

虽然命令行够用,但有个可视化面板会更直观。推荐使用官方Dashboard:

# 安装Dashboard kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml # 创建管理员账号 kubectl apply -f - <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard EOF # 绑定集群管理员权限 kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard EOF

获取访问令牌:

kubectl -n kubernetes-dashboard create token admin-user

启动代理后,浏览器访问:

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

5. 实战:部署Nginx应用

让我们用三种不同方式部署Nginx,体验K8s的核心功能:

5.1 直接创建Deployment

kubectl create deployment nginx-demo --image=nginx:latest --replicas=2

5.2 通过YAML文件部署

创建nginx-deployment.yaml:

apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:alpine ports: - containerPort: 80

应用配置:

kubectl apply -f nginx-deployment.yaml

5.3 暴露Service访问

# 创建NodePort类型的Service kubectl expose deployment nginx --type=NodePort --name=nginx-service # 获取访问端口 kubectl get svc nginx-service

访问测试:

  • Docker Desktop会自动映射端口到localhost
  • 浏览器打开http://localhost: 就能看到Nginx欢迎页

6. 常见问题排查

6.1 镜像拉取失败

典型报错:

ErrImagePull or ImagePullBackOff

解决方法:

# 先检查镜像名称是否正确 kubectl describe pod <pod-name> # 国内环境可以为特定Pod配置镜像加速 kubectl edit deployment <deployment-name> # 在spec→containers→image字段替换为国内镜像源

6.2 Pod一直处于Pending状态

运行:

kubectl describe pod <pod-name>

常见原因:

  • 资源不足(调整Docker Desktop内存分配)
  • 节点有污点(开发环境可以移除污点)
  • 存储卷挂载失败

6.3 Dashboard无法访问

检查步骤:

  1. 确认代理是否运行:kubectl proxy
  2. 检查防火墙是否放行8001端口
  3. 尝试清除浏览器缓存

7. 进阶配置技巧

7.1 自定义资源配额

在Docker Desktop的Advanced设置中,可以调整:

  • CPUs数量(建议留1核给系统)
  • 内存大小(开发环境4GB起步)
  • Swap大小(不建议完全禁用)

7.2 使用本地镜像

开发时经常需要测试自建镜像:

# 先构建本地镜像 docker build -t my-app:latest . # 让K8s使用本地镜像 kubectl run my-app --image=my-app:latest --image-pull-policy=Never

7.3 持久化存储配置

创建hostPath类型的存储卷示例:

apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: nginx name: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: test-volume volumes: - name: test-volume hostPath: path: /data type: Directory

8. 日常开发工作流

我个人的最佳实践是:

  1. 在本地用Docker构建和测试单个容器
  2. 编写K8s部署描述文件(YAML)
  3. 使用kubectl apply -f部署到本地集群
  4. 通过kubectl port-forward调试服务
  5. 确认无误后提交到代码仓库

对于复杂项目,建议使用Skaffold这样的工具自动化这个流程。它能在代码变更时自动重建镜像并重新部署,大幅提升开发效率。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询