在Windows上部署Kubernetes,通常有两条主流路线:一是通过Docker Desktop自带的Kubernetes功能一键启用,二是使用minikube这类轻量级单节点集群工具。无论选择哪条路线,底层都需要WSL2提供Linux内核支持。很多安装失败的情况,根源都在于WSL2没有正确安装、CPU虚拟化没开启,或者Docker Desktop与WSL2发行版之间的通信配置不完整。

一、前置条件:WSL2与虚拟化环境必须就绪
Windows本身无法直接运行Linux容器,Kubernetes节点需要Linux内核。WSL2通过轻量级虚拟机提供完整Linux内核,比传统Hyper-V虚拟机启动更快、资源占用更少。在Windows 10版本2004及更高版本中,WSL2已经是默认的Linux子系统版本。没有WSL2,Docker Desktop的Kubernetes功能无法正常工作,minikube的docker驱动也会启动失败。
检查CPU虚拟化是第一步。打开任务管理器,切换到性能选项卡,右下角查看虚拟化状态。如果显示已启用则没问题;如果显示已禁用,需要重启电脑进入BIOS或UEFI设置,找到Intel VT-x或AMD SVM选项并将其设为Enabled。这个操作因主板品牌不同菜单名称会有差异,但关键词通常是Virtualization Technology或SVM Mode。虚拟化未开启会导致WSL2报错0x80370102,这是Windows上非常典型的Kubernetes安装障碍。
以管理员身份打开PowerShell,执行以下命令安装WSL2。如果之前安装过WSL1,可以先升级到WSL2。命令执行后需要重启计算机。
wsl --install -d Ubuntu-22.04 wsl --update
验证WSL2是否生效,启动一个Linux发行版后,在PowerShell中执行wsl --list --verbose,确认VERSION列显示2。如果显示1,需要执行wsl --set-version Ubuntu-22.04 2进行迁移。WSL2默认的虚拟磁盘文件存放在C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx,如果需要迁移到其他盘符,可以使用wsl --export和wsl --import命令。磁盘位置不固定时,后续Docker Desktop启动Kubernetes可能因为找不到WSL2发行版而持续卡在starting状态。
二、通过Docker Desktop启用Kubernetes
Docker Desktop是Windows上最省事的Kubernetes入口。它把Docker Engine、CLI、Compose和Kubernetes打包在一起,安装完成后只需要勾选一个选项就能启动单节点集群。先在Docker官网下载安装包,双击运行安装。安装向导中有一个重要选项:Use WSL 2 based engine,必须勾选,否则会退回到Hyper-V后端,两个虚拟化层同时存在会导致网络冲突。
安装完成后,打开Docker Desktop,进入Settings,找到Kubernetes选项卡,勾选Enable Kubernetes,然后点击Apply & Restart。Docker Desktop会在后台拉取所需的Kubernetes系统镜像,这个过程第一次执行可能需要几分钟。如果镜像拉取缓慢,可以在Settings的Docker Engine选项卡中配置镜像加速地址。镜像加速配置修改后同样需要重启Docker。
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
]
}
集群启动完成后,系统托盘中的Docker图标会变为稳定状态。接下来验证kubectl命令是否可用。kubectl可执行文件默认位于C:\Program Files\Docker\Docker\resources\bin\kubectl.exe,Docker Desktop安装时通常已经将该目录加入系统Path环境变量。如果命令行中找不到kubectl,可以手动添加到Path,或者直接使用完整路径执行。
kubectl version --client kubectl get nodes
执行kubectl get nodes后,正常输出中服务器的NAME应该显示docker-desktop,STATUS为Ready。如果出现Unable to connect to the server错误,先确认Docker Desktop已经完全启动,再检查C:\Users\你的用户名\.kube\config文件是否存在。这个配置文件是kubectl与集群通信的凭证存储位置,如果文件内容为空或缺失,kubectl无法定位API Server地址。有时候Docker Desktop关闭后该文件会被清空,重新启动Docker后需要等待几秒让配置重新生成。
三、minikube替代方案与驱动选择
如果不想安装Docker Desktop,或者本机已经装有Hyper-V不想再引入WSL2,minikube是更灵活的选择。minikube可以在WSL2、Hyper-V、VirtualBox等多种驱动上创建Kubernetes集群。它的安装包是一个独立的minikube.exe文件,可以放在任意目录,例如C:\Program Files\Kubernetes\minikube.exe。kubectl.exe需要单独下载,两个文件都可以通过直接复制的方式完成安装,不需要执行安装向导。
将C:\Program Files\Kubernetes添加到系统环境变量Path中。操作步骤为:右键此电脑,属性,高级系统设置,环境变量,在系统变量中找到Path并双击,新建一条记录填入C:\Program Files\Kubernetes,确定保存。设置完成后重新打开终端,输入minikube version验证是否成功。如果命令仍然无法识别,检查Path变量中是否有多余的分号或拼写错误,保存后必须重新打开终端窗口使环境变量生效。
启动minikube时,驱动选择很关键。如果Docker Desktop正在运行,可以使用--driver=docker,让minikube运行在Docker内部;如果不想依赖Docker,可以使用--driver=hyperv,由Hyper-V直接创建虚拟机。两种驱动创建出的集群网络模型不同,但kubectl操作方式完全一致。
minikube start --driver=docker --cpus=2 --memory=4096
minikube启动后会在C:\Users\你的用户名\.minikube目录下保存证书、配置文件和虚拟机磁盘。如果启动失败并提示Unable to start VM,通常是因为驱动对应的虚拟化平台没有启用。例如使用--driver=hyperv时,必须先在Windows功能中启用Hyper-V,且CPU虚拟化必须开启。使用--driver=docker时,则要求Docker Engine正常运行,否则minikube会一直等待API连接而超时。
四、安装后的验证要点与高频疑问处理
集群安装完成后,除了kubectl get nodes确认节点Ready外,还应该部署一个测试Pod来验证整个调度链路。创建一个简单的Nginx部署并暴露服务,观察Pod是否能成功获取IP地址。如果Pod一直处于Pending状态,大概率是节点资源不足或调度器异常;如果Pod运行但无法访问服务,则需要检查kube-proxy和网络插件状态。
kubectl create deployment web --image=nginx kubectl expose deployment web --port=80 --type=NodePort kubectl get pods -o wide
NotReady是最常见的安装后问题。当kubectl get nodes显示STATUS为NotReady时,优先查看节点详情,kubectl describe node docker-desktop会在Conditions段落中列出具体原因。常见原因包括容器网络插件未就绪、kubelet服务异常、以及C:\Windows\System32\drivers\etc\hosts文件中存在错误的主机名解析记录。如果hosts文件中把localhost指向了错误地址,会导致API Server无法绑定本地端口,此时需要以管理员身份编辑hosts文件,确保127.0.0.1对应localhost的记录存在且未被注释。
关于多集群切换,Windows用户通常只需要维护一个本地实验集群,但如果同时使用Docker Desktop的Kubernetes和minikube,两个集群的认证信息都写在C:\Users\你的用户名\.kube\config文件中。通过kubectl config get-contexts查看所有上下文,使用kubectl config use-context docker-desktop或kubectl config use-context minikube进行切换。切换上下文后,所有kubectl命令都会作用于新的目标集群,执行kubectl get nodes之前一定要确认当前上下文,避免在错误的集群上操作。
需要彻底清理时,Docker Desktop方案可以在设置中取消勾选Enable Kubernetes,并删除C:\Users\你的用户名\.kube\config文件。minikube方案执行minikube delete会移除虚拟机并清理集群数据,但minikube.exe文件和C:\Users\你的用户名\.minikube目录需要手动删除。清理后如果想重新开始,不需要重装任何软件,直接再次启用Kubernetes或重新执行minikube start即可。Windows上的Kubernetes安装核心并不复杂,关键是先把WSL2或Hyper-V这套底层能力准备好,上层工具的选择反而可以根据个人习惯灵活调整。
KubernetesWindows安装容器编排修改时间:2026-09-17 06:40:14