当前位置: 首页 > news >正文

在 Windows 上使用 Docker Desktop 快速搭建本地 Kubernetes 环境(附详细部署教程)

言简意赅的讲解Docker Desktop for Windows搭建Kubernetes解决的痛点

目标读者

  • 对 Docker Desktop 有一定了解,能在 Windows 上成功安装和使用 Docker Desktop。
  • 想要在本地快速搭建一套 Kubernetes 环境进行测试或学习的开发者。

一、准备工作

  1. 安装 Docker Desktop for Windows

    • 如果尚未安装,请从 Docker 官网 下载并安装 Docker Desktop for Windows。
    • 注意必须在 Windows 10(家庭版以上)或者 Windows 11,以及开启 Hyper-V 或者 WSL2 功能(具体可参考 Docker 官方文档进行配置)。
  2. 确保可以访问 Docker Hub

    • Docker Desktop 在启用 Kubernetes 时,会自动拉取所需的 Kubernetes 相关镜像。由于镜像较大,且有可能存在网络限制,建议根据自身网络环境配置科学上网工具,确保镜像能够顺利下载。
  3. 初始 Docker Desktop 设置

    • 在不启用 Kubernetes 的情况下,先启动并配置好 Docker Desktop,以确保 Docker 能正常工作。
    • 打开 Docker Desktop,在右上角齿轮图标中可以进行必要的配置(如 CPU、内存限制等),以免在启用 Kubernetes 后出现资源不足问题。

二、启用 Kubernetes

  1. 打开 Docker Desktop,进入“Settings”

    • 点击右上角齿轮图标,或在任务栏图标上右键选择 “Settings”。
  2. 选择“Kubernetes”选项卡

    • 在左侧菜单中找到 “Kubernetes”,勾选 “Enable Kubernetes”。
  3. 等待 Kubernetes 启用

    • 点击 “Apply & Restart” 之后,Docker Desktop 会重启自身并拉取 Kubernetes 所需的镜像。
    • 注意:这一步可能会耗费比较长的时间,请耐心等待。如果网络环境无法连接镜像仓库,需要配置合适的科学上网工具。
    • 启用完成后,Docker Desktop 左下角会出现 “Kubernetes running” 的状态提示。

温馨提示:如果由于网络问题导致一直无法下载镜像,可以尝试使用官方或第三方镜像加速器,这会大大提升拉取速度。

Docker desktop 启动 Kubernetes


三、初识 Kubernetes:不修改 hosts、无需安装额外 kubectl

Docker Desktop 自带了 kubectl 命令行工具,无需用户额外安装,因此后续所有 Kubernetes 命令均可直接在命令行(如 PowerShell、CMD 或 Windows Terminal)中使用。

此外,Docker Desktop 的 Kubernetes 环境默认没有安装 Ingress Controller,所以我们暂时不涉及到域名配置,也不需要去修改本机的 hosts 文件。


四、基础部署演示

下面我们来做一个最常见的 Kubernetes 上的示例:部署一个 Nginx 应用。演示如何使用 Deployment 和 Service。

1. 验证 Kubernetes 环境是否可用

在 PowerShell 或 CMD 中输入:

kubectl get nodes

若正确返回一个名为 docker-desktop 的节点(Status 为 Ready),就表示 Kubernetes 已经正确启用并可用。

Kubernetes环境验证

2. 创建 Deployment

我们可以直接用命令行创建一个 Nginx Deployment。示例如下:

kubectl create deployment nginx-deployment --image=nginx:latest
  • 这条命令会告诉 Kubernetes 创建一个名为 nginx-deployment 的 Deployment,并且使用 nginx:latest 镜像来拉起 Pod。
  • 创建完成后,可以通过下面命令查看部署情况:
kubectl get deployments
kubectl get pods

如果看到 nginx-deployment 在运行,同时有对应的 Pod 状态为 Running,就说明 Deployment 已经生效。

Kubernetes创建Deployment并验证

3. 创建 Service

虽然 Deployment 已经在 Kubernetes 内部运行,但我们需要暴露这个服务才能从本地访问。最简单的方式是创建一个 NodePort 类型的 Service,示例如下:

kubectl expose deployment nginx-deployment \--type=NodePort \--port=80
  • --type=NodePort 会在 Kubernetes 节点上随机选择一个30000-32767之间的端口,用于映射到容器内部的 80 端口。
  • 创建后,我们同样可以查看 Service:
kubectl get service

可以看到一个名为 nginx-deployment 的 Service,并在 PORT(S) 栏显示类似 80:30294/TCP (具体端口可能不同)。这就意味着,我们可以通过 Docker Desktop 提供的本地 Kubernetes 节点的 IP(一般是 127.0.0.1 结合 nodePort),或者通过 Docker Desktop 路由来访问这个 Nginx。

如果要在宿主机上访问,最简单的方式是:
http://localhost:<NodePort>

例如,如果 NodePort 为 30294,则访问 http://localhost:30294,即可看到 Nginx 的默认欢迎页。

Kubernetes Service 端口映射
Kubernetes部署成功验证


五、查看和管理 Kubernetes 资源

  1. 查看 Pod 详情
kubectl describe pod <pod-name>
  • 这条命令可以深入查看某个 Pod 的状态、事件日志、容器的启动参数等,便于排查问题。
  1. 日志查看
kubectl logs <pod-name>
  • 如果想查看日志,可以使用 kubectl logs 命令,后面加上 Pod 名称或者加 -f 进行实时查看。
  1. 伸缩(Scaling)示例
kubectl scale deployment nginx-deployment --replicas=3
  • 通过上面命令,可以让 Nginx 的副本数变为 3 个。再次查看 Pods,即可发现 3 个副本同时运行。
  1. 删除资源
kubectl delete service nginx-deployment
kubectl delete deployment nginx-deployment
  • 如果你想删除刚才创建的 Service 和 Deployment,可以使用 kubectl delete 命令,后面跟资源类型和名称即可。

六、Docker Desktop Kubernetes 与 Ingress Controller

在原生 Kubernetes 中,常见的对外暴露服务方式除了 Service Type=NodePort/LoadBalancer,还可以通过 Ingress 来灵活管理域名和路径。但需要注意,Docker Desktop 自带的 Kubernetes 环境默认没有安装 Ingress Controller,因此如果你想体验 Ingress 功能,就必须自行安装 Nginx Ingress Controller 或者其他第三方 Ingress Controller。

这里我们就不深入介绍 Ingress 的详细配置和安装,仅提示一下在本地实验环境下的可能性:

  • 如果确实需要测试 Ingress,可以自己通过 helm 或 yaml 手动安装 Nginx Ingress Controller:
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.1/deploy/static/provider/cloud/deploy.yaml
    
    不过,执行成功与否取决于你的网络环境和资源配置,需要保证能够访问相关镜像仓库。
  • 由于 Ingress 涉及到域名解析与路由规则,因此在本地测试时可能要额外配置 hosts 文件、使用自定义域名等。若纯粹是想快速上手 Kubernetes,可以暂时不必折腾这部分内容。

Docker Desktop for Windows默认没有Ingress


七、总结

  1. Docker Desktop for Windows 提供了一个非常便捷的本地 Kubernetes 环境,适合开发者做快速验证、个人学习和小型测试。
  2. 在启用 Kubernetes 前,一定要确保网络环境良好,以免拉取镜像时间过长导致卡顿或失败。
  3. 在基本部署一个 Deployment + Service 后,可以体验 Kubernetes 的核心概念:Pod、ReplicaSet、Service、Resource Management、Scale、Logs 等。
  4. Ingress 等更高级功能需要额外安装对应的组件(Ingress Controller),而 Docker Desktop 默认并未集成。
  5. 整个过程中,无需手动安装 kubectl 工具,无需手动修改 hosts 文件,更加简化了本地 K8s 的初体验。

通过上述流程和示例,你可以初步感受到 Kubernetes 在本地环境下的运行和管理方式。如果想继续深入学习,可以关注如下方向:

  • Kubernetes 基础概念:Pod、Volume、ConfigMap、Secret、DaemonSet、StatefulSet 等。
  • Kubernetes 进阶:Helm、Operator、CICD 流程整合、监控与日志体系(Prometheus、Grafana、EFK 等)。
  • 云上 Kubernetes:在云环境中体验更完整的 Kubernetes 生态。

Docker Desktop for Windows成功部署Kubernetes


附:常用命令速查表

命令说明
kubectl get nodes查看所有节点
kubectl get deployments查看所有 Deployments
kubectl get pods查看所有 Pods
kubectl get service查看所有 Services
kubectl describe deployment <deployment-name>查看某个 Deployment 详细信息
kubectl describe pod <pod-name>查看某个 Pod 详细信息
kubectl logs <pod-name>查看 Pod(容器)的日志
kubectl scale deployment <deployment-name> --replicas=n扩容/缩容 Deployment 副本数量
kubectl delete service <service-name>删除某个 Service
kubectl delete deployment <deployment-name>删除某个 Deployment

结语

在本地通过 Docker Desktop for Windows 运行 Kubernetes,是初学者和开发者快速上手 K8s 的最佳途径之一。它大幅简化了安装和配置流程,而且不需要额外的硬件或云服务。


通过上述内容,你就已经基本理解了这个方法,基础用法我也都有展示。如果你能融会贯通,我相信你会很强

Best
Wenhao (楠博万)

相关文章:

  • 死锁相关知识
  • MySQL 的 WITH ROLLUP 功能
  • WinUI3入门7:使用风格 共享控件样式
  • 以太网基础①以太网相关通信接口
  • Jmeter中常用的断言方法有哪些?
  • redis02
  • 机器学习竞赛中的“A榜”与“B榜”:机制解析与设计深意
  • Mac电脑 - Sublim Text 代码编辑器
  • el-image在表格中显示,弹出的预览图片被遮挡,如何解决
  • 基于Spring Boot+Vue的“暖寓”宿舍管理系统设计与实现(源码及文档)
  • Android13 增加产品配置文件
  • CMake实践:指定gcc版本编译和交叉编译
  • NetworkManager介绍与用法
  • linux路由
  • 2025-05-05-80x86汇编语言环境配置
  • 【职场算法】如何在合群与独立间找到最优解?
  • [接口-ihrm]
  • 图像特征检测算法SIFT
  • P2066 机器分配
  • 华为OD机试-MELON的难题-DFS(JAVA 2025A卷)
  • 网站站外引流怎么做/短视频推广策略
  • 大尺度做爰网站/seo优化的主要任务
  • 郑州专业的网站建设公司排名/百度指数搜索热度排行
  • 雁塔区住房和城乡建设局网站/重庆整站seo
  • 知道一个网站怎么知道是谁做的百度优化/深圳seo优化推广公司
  • 个人主页网站模板html/推广公司主要做什么