手把手教你:Windows + Docker启动Kubernetes(k8s)快速部署Nginx指南
一、环境准备
已安装Docker Desktop。
二、启用 Docker Desktop Kubernetes
打开 Docker Desktop → 右上角 Settings(⚙️) → 左侧 Kubernetes。
勾选 Enable Kubernetes。

勾选 Enable Kubernetes 后,Cluster settings 有两个选项:集群创建方式 + 是否显示系统容器。

(一)Choose cluster provisioning method(集群创建方式)
Docker Desktop 提供两种,新手优先选 kubeadm,想玩多节点选 kind。
|
选项 |
特点 |
适用场景 |
推荐度 |
|
kubeadm |
单节点、版本固定、启动快、兼容性好 |
本地开发、部署 Nginx 等简单服务、不想折腾 |
⭐⭐⭐⭐⭐ |
|
kind |
多节点、可自选 K8s 版本、启动稍慢 |
学习多节点、测试集群调度、模拟生产 |
⭐⭐⭐ |
本地部署 Nginx 选 kubeadm 即可,稳定、省心、够用。
(二)Show system containers (advanced)(显示系统容器)
不勾选(默认):docker ps 看不到 K8s 内部容器(如 apiserver、etcd),界面干净。
勾选:docker ps 会列出 K8s 系统容器,方便调试,但列表会变多。
新手无需看系统容器,不勾选即可。
点击 Apply →点击Install →等待自动下载镜像、启动集群(底部状态栏 K8s 图标变绿即就绪)。





下载的镜像列表如下:
registry.k8s.io/kube-apiserver:v1.34.1:K8s 接口入口
registry.k8s.io/kube-controller-manager:v1.34.1:控制器,管理各种资源
registry.k8s.io/kube-scheduler:v1.34.1:调度器,决定 Pod 跑在哪
registry.k8s.io/kube-proxy:v1.34.1:节点网络代理
registry.k8s.io/coredns/coredns:v1.12.1:集群内部 DNS
registry.k8s.io/pause:3.10.1:Pod 基础沙箱容器
registry.k8s.io/etcd:3.6.4-0:K8s 数据库
desktop-kubernetes : 跑 K8s 的 “虚拟机 / 容器”
desktop-storage-provisioner : 给 K8s 提供本地硬盘
desktop-vpnkit-controller : 给 K8s 开 “对外网络端口”
(三)验证集群
打开 PowerShell/CMD,执行以下命令:
kubectl get nodes
三、关闭 Docker Desktop Kubernetes
打开 Docker Desktop → 右上角 Settings(⚙️) → 左侧 Kubernetes。
把 Enable Kubernetes 前面的 √ 去掉,点击下方 Apply,Docker 会自动重启,K8s 就关掉了。
下次想用的时候,重新把 Enable Kubernetes 勾上 → Apply,等它变成绿色 running 就能继续用。
四、通过YAML方式部署Nginx
创建文件夹:D:\Docker\k8s\nginx。
(一)编写nginx-deploy.yaml
在文件夹中创建nginx-deploy.yaml文件,并增加如下内容:
# API 版本(固定写法,不用改)
apiVersion: apps/v1
# 资源类型
kind: Deployment
# 部署的名字
metadata:
name: k8s-nginx-deploy
# 部署的规格
spec:
# 跑几个副本(1个就够了)
replicas: 1
# 用来找到下面的Pod
selector:
matchLabels:
app: nginx
# Pod 模板(容器长啥样)
template:
metadata:
labels:
app: nginx # 标签必须和上面 selector 对应
# 容器配置
spec:
containers:
- name: k8s-nginx # 容器名字
image: nginx:latest # 用 nginx 镜像
ports:
- containerPort: 80 # 容器内部用 80 端口
作用:创建Nginx容器:
(二)编写nginx-svc.yaml
在文件夹中创建nginx-svc.yaml文件,并增加如下内容:
# API 版本(固定)
apiVersion: v1
# 资源类型:Service
kind: Service
# 服务名字
metadata:
name: k8s-nginx-svc
# 服务规格
spec:
# 类型:NodePort 让外部可以访问
type: NodePort
# 通过标签找到要暴露的 Pod(必须和 deploy 里的标签一样)
selector:
app: nginx
# 端口配置
ports:
- port: 8082 # 集群内部访问端口
nodePort: 32000 # 👈 你自己定义的外部端口
作用:让 Nginx 可以被浏览器访问
(三)应用配置
1.部署 Deployment
打开PowerShell或CMD,切换到创建的文件夹内,执行命令:
kubectl apply -f nginx-deploy.yaml
验证Deployment是否部署成功:
kubectl get pods
Running 就是正常,后面 Service 才有东西可以转发流量。
2.部署 Service
打开PowerShell或CMD,切换到创建的文件夹内,执行命令:
kubectl apply -f nginx-svc.yaml
验证Service是否部署成功:
kubectl get svc
看到记录就表示成功,PORT(S) 80:32000/TCP,32000 就是你浏览器访问的端口
(四)验证与访问
# 看 Pod 状态
kubectl get pods
# 看 NodePort 端口
kubectl get svc
通过浏览器访问:http://localhost:<NodePort端口>
五、常用命令
# 查看集群节点列表
kubectl get nodes
# 查看部署的应用列表(Deployment)
kubectl get deploy
# 查看容器实例(Pod)
kubectl get pods -o wide
# 查看服务列表(Service)
kubectl get svc
# 删除 Deployment(连带删除 Pod)
kubectl delete -f nginx-deploy.yaml
# 删除 Service
kubectl delete -f nginx-svc.yaml更多推荐


所有评论(0)