Windows 10/11 零基础搭建K8s开发环境:WSL2 + Docker Desktop 一站式指南
1. 为什么要在Windows上搭建K8s开发环境对于刚接触Kubernetes的开发者来说直接在Windows电脑上搭建一个本地开发环境是最快的学习方式。相比购买云服务或配置远程服务器本地环境有三大优势零成本完全免费不需要额外硬件投入快速迭代代码修改后可以立即测试不需要等待CI/CD流程隔离安全所有操作都在本地完成不会影响线上环境我刚开始学习K8s时尝试过各种本地搭建方案最终发现WSL2 Docker Desktop的组合最稳定高效。这个方案完美解决了Windows原生不支持Linux容器的问题还能直接使用Docker内置的Kubernetes功能。2. 环境准备安装WSL22.1 启用Windows虚拟化功能首先需要确保你的Windows版本支持WSL2。建议使用Windows 10 2004及以上版本或Windows 11。按下WinR输入winver可以查看当前系统版本。以管理员身份打开PowerShell执行以下命令# 启用虚拟机平台功能 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # 启用Linux子系统功能 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart注意如果提示需要重启请先保存工作然后重启电脑2.2 安装Linux发行版打开Microsoft Store搜索并安装Ubuntu推荐20.04 LTS版本安装完成后从开始菜单启动Ubuntu等待初始化完成设置用户名和密码密码输入时不会显示正常输入即可2.3 设置为WSL2模式在PowerShell中执行# 设置WSL2为默认版本 wsl --set-default-version 2 # 查看已安装的发行版 wsl -l -v # 如果之前安装过WSL1可以转换版本 wsl --set-version Ubuntu-20.04 23. 安装配置Docker Desktop3.1 下载安装访问 Docker官网 下载安装包安装时务必勾选Install required Windows components for WSL 2安装完成后启动Docker Desktop3.2 关键配置进入Settings → Resources → WSL Integration启用Enable integration with my default WSL distro选择你安装的Ubuntu发行版点击Apply Restart3.3 验证安装在Ubuntu终端中输入docker run hello-world如果看到欢迎信息说明安装成功。我遇到过WSL网络问题导致镜像拉取失败这时可以尝试以下命令重置网络wsl --shutdown4. 启用Kubernetes集群4.1 一键开启K8s打开Docker Desktop设置进入Kubernetes选项卡勾选Enable Kubernetes点击Apply首次启用需要下载约500MB镜像耐心等待4.2 解决镜像拉取慢的问题国内用户可能会遇到镜像下载慢的问题可以通过配置阿里云镜像加速创建或修改~/.docker/daemon.json文件{ registry-mirrors: [https://pn1nqbsb.mirror.aliyuncs.com] }重启Docker服务4.3 验证集群状态在Ubuntu中运行kubectl get nodes应该能看到一个名为docker-desktop的节点。我第一次使用时遇到kubectl命令找不到的问题这是因为没有安装kubectl可以通过以下命令安装sudo apt-get update sudo apt-get install -y kubectl5. 安装Kubernetes Dashboard5.1 部署Dashboard执行以下命令部署最新版Dashboardkubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml5.2 创建访问令牌创建服务账号和集群角色绑定cat EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard EOF cat EOF | kubectl apply -f - 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 EOF5.3 获取访问令牌kubectl -n kubernetes-dashboard create token admin-user复制输出的token后续登录时使用。5.4 访问Dashboard启动代理kubectl proxy浏览器访问http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/选择Token方式登录粘贴刚才获取的token6. 日常使用技巧6.1 快速切换上下文如果你还使用其他K8s集群可以通过以下命令切换# 查看所有上下文 kubectl config get-contexts # 切换回Docker Desktop kubectl config use-context docker-desktop6.2 资源监控安装Metrics Server查看资源使用情况kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml6.3 清理资源定期清理未使用的资源可以节省磁盘空间# 删除所有已停止的容器 docker container prune # 删除所有未被使用的镜像 docker image prune -a7. 常见问题解决7.1 WSL2网络问题如果遇到DNS解析失败可以修改/etc/wsl.conf[network] generateResolvConf false然后手动配置/etc/resolv.confnameserver 114.114.114.1147.2 Kubernetes无法启动尝试重置Kubernetes集群在Docker Desktop中禁用Kubernetes删除相关文件rm -rf ~/.kube重新启用Kubernetes7.3 端口冲突问题查看被保留的端口范围netsh interface ipv4 show excludedportrange protocoltcp可以通过以下命令调整netsh int ipv4 set dynamic tcp start49152 num16384这套环境我已经稳定使用了一年多期间部署过数十个测试服务。相比Minikube等其他方案最大的优势是资源占用低且与Docker无缝集成。刚开始可能会遇到一些网络或配置问题但按照本文步骤操作应该能顺利解决。