Lens(桌面客户端)
如果你想在 Windows 主机上远程管理虚拟机中的 K8S,Lens 是最佳选择。
方式 1:自动化脚本(推荐)
项目提供了自动化脚本,一键完成所有配置。
双击运行(最简单):
直接双击 scripts\connect-lens.bat 即可运行,无需打开命令行。
脚本会自动:
- 从 Linux 虚拟机导出 kubeconfig
- 复制到 Windows 本地(
~\.kube\minikube-config) - 建立 SSH 隧道(后台运行)
执行完成后,在 Lens 中 File → Add Cluster → 选择 C:\Users\你的用户名\.kube\minikube-config 即可。
隧道是否建立成功:
netstat -ano | findstr :8443
方式 2:手动配置
安装与连接步骤:
第一步:导出 kubeconfig(在 Linux 虚拟机上执行)
必须使用 --flatten 参数将证书内嵌到文件中,否则 kubeconfig 里会包含 Linux 文件路径(如 /root/.minikube/ca.crt),Windows 上找不到这些文件会报 unable to read client-cert 错误。
kubectl config view --flatten > /tmp/kubeconfig-export.yaml
第二步:复制到 Windows
scp root@192.168.3.200:/tmp/kubeconfig-export.yaml C:\Users\shihao\.kube\minikube-config
第三步:编辑 kubeconfig,添加跳过证书验证
- 在
cluster下添加insecure-skip-tls-verify: true(因为 SSH 隧道改变了访问地址,服务端证书的 SAN 不匹配): - 删除
certificate-authority-data
clusters:
- cluster:
certificate-authority-data: LS0tLS1C...(删除!!!)
insecure-skip-tls-verify: true
server: https://127.0.0.1:8443
name: minikube
第四步:查看 Minikube API Server 的实际端口
Minikube 用 Docker 驱动时,API Server 端口会被映射到宿主机的随机端口:
# 在 Linux 上执行
docker port minikube
# 输出示例:
# 8443/tcp -> 127.0.0.1:32779
记住 8443/tcp 对应的实际端口(本例为 32779)。
第五步:建立 SSH 隧道(在 Windows PowerShell 执行)
Lens 在 Windows 上,API Server 在 Linux 虚拟机的 Docker 容器里,中间隔着两层网络隔离,必须用 SSH 隧道打通:
┌──────── Windows ────────┐
│ │
│ Lens → 127.0.0.1:8443 │
│ │ │
│ SSH 隧道 │
└──────────────┼───────────┘
▼
┌──────── Linux VM ───────┐
│ 127.0.0.1:32779 │ ← Docker 端口映射(仅绑定 127.0.0.1,外部不可达)
│ │ │
│ ┌──────▼──────────┐ │
│ │ Minikube 容器 │ │
│ │ API Server:8443 │ │
│ └─────────────────┘ │
└──────────────────────────┘
为什么需要隧道:
- 第一层隔离:API Server 运行在 Minikube Docker 容器内部,通过 Docker 端口映射暴露到 Linux 宿主机,但只绑定了
127.0.0.1(本机回环),从外部访问192.168.3.200:32779不通 - 第二层隔离:Windows 和 Linux 是两台不同的机器,Windows 无法访问 Linux 的
127.0.0.1
SSH 隧道将两端桥接起来:
ssh -L 8443:127.0.0.1:32779 root@192.168.3.200 -N
| 参数 | 含义 |
|---|---|
-L 8443: |
在 Windows 本地监听 8443 端口 |
127.0.0.1:32779 |
转发到 Linux 上的 127.0.0.1:32779(Minikube API Server) |
root@192.168.3.200 |
通过 SSH 连接到 Linux 虚拟机 |
-N |
不打开远程 Shell,只做端口转发 |
端口号
32779替换为第四步查到的实际值。隧道窗口需保持打开。
第六步:在 Lens 中导入
File → Add Cluster → 选择 C:\Users\shihao\.kube\minikube-config
常见报错
| 报错 | 原因 | 解决 |
|---|---|---|
unable to read client-cert /root/.minikube/... |
kubeconfig 中使用了 Linux 文件路径而非内嵌证书 | 用 kubectl config view --flatten 重新导出 |
channel: open failed: connect refused |
SSH 隧道的目标端口不对 | docker port minikube 查实际端口 |
Invalid credentials |
证书数据不完整或被截断 | 用 scp 复制文件,不要手动粘贴 |
certificate has expired or is not yet valid |
虚拟机系统时间不对 | sudo date -s "正确时间" 并安装 chrony |
Lens 功能:
- 图形化查看所有 K8S 资源(Pod、Service、Deployment 等)
- 实时日志查看
- 一键进入容器终端
- 资源使用率监控(CPU、内存图表)
- 多集群管理