K8sQuest 教程:先把 kubeconfig 边界守住,再开始闯关
K8sQuest 把 Kubernetes 排障做成 5 个世界、50 个任务。它不是网页模拟器:任务真正落在本机 kind 集群里,玩家在第二个终端用 kubectl 修复 Pod、Deployment、Service、网络和存储问题。
1. 游戏引擎和集群怎样配合
install.sh 创建 Python 虚拟环境、安装 requirements.txt、建立名为 k8squest 的 kind 集群,并切换到 kind-k8squest context。engine 负责布置任务、检查状态和记录进度,worlds 保存各关内容。
游戏终端提供 check、hint、solution、validate、skip、reset 和 quit。实际修复仍由你在另一个终端执行 kubectl,因而能练到对象状态、日志和事件的真实排查顺序。
2. 安装前先检查这六项
docker info kind version kubectl version --client python3 --version # 需要 3.9+ jq --version bash --version
Linux 与 macOS 可按官方路径运行脚本;Windows 要使用 Git Bash,并先启动采用 WSL2 后端的 Docker Desktop。PowerShell 和 CMD 不是 README 给出的支持入口。
git clone https://github.com/Manoj-engineer/k8squest.git cd k8squest git rev-parse HEAD sed -n '1,220p' install.sh ./install.sh kubectl config current-context ./play.sh
最后一条检查应返回 kind-k8squest。如果不是,先停止,不要继续执行关卡命令。
3. RBAC 有边界,也有盲区
官方 RBAC 为 k8squest-player 创建 namespace Role。它允许在 k8squest 内操作 Pod、Secret、Service、Deployment、Job 和网络策略等对象;节点、命名空间等集群资源主要是只读。这个设计能减少误伤,却不等于沙箱。
安装脚本仍然连接 Docker daemon、下载 Python 包与 kind 镜像,还会修改当前 kubeconfig context。机器上若同时保存生产集群凭据,建议改用专用本机账户或可丢弃虚拟机,并在每次练习前检查 context。
4. 卡关、重置与清理
先用 check 看实时资源,再逐级打开 hint;需要重新开始时用游戏内 reset,或运行 python3 engine/reset.py <level>。all 会重置全部进度与关卡资源,执行前同样核对 context。
仓库没有付费、订阅、充值或转售入口。
5. 与 kind 的区别
Kubernetes SIGs 的 kind负责用 Docker 节点建立本地集群,本身不提供闯关内容。K8sQuest 在 kind 之上增加故障任务、提示、校验、复盘和进度。
只需要 CI 或开发用本地集群时,直接使用 kind;需要循序练习 kubectl 排障时,再加入 K8sQuest。
这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。
先判断这个项目是否适合你
适合谁用
适合在可丢弃的本地集群中练习 kubectl 和常见故障定位,也可用作课堂演示。它不是生产集群演练器;已有 kubeconfig 中包含真实集群的人,应先备份配置并核对当前 context。
采用建议
保留。它没有商业漏斗,教程价值在于把安装脚本对 Docker、网络和 kubeconfig 的实际影响说透,并把练习严格放在 kind-k8squest 中。
原教程未展开的系统信息
架构与数据流
install.sh 建立 Python venv、安装 requirements.txt、创建 kind 集群并应用 namespace/RBAC;engine 负责关卡状态、校验与终端界面;worlds 保存 5 组任务定义;玩家的 kubectl 操作直接进入 kind-k8squest。进度保存在本地,reset.py 可重置单关或全部关卡。
官方与对比资料
以下链接用于核对版本、安装方式、功能边界和同类差异。
- https://github.com/kubernetes-sigs/kind
- https://github.com/Manoj-engineer/k8squest
- https://github.com/Manoj-engineer/k8squest#features
- https://github.com/Manoj-engineer/k8squest/blob/main/install.sh
- https://github.com/Manoj-engineer/k8squest/releases
- https://github.com/Manoj-engineer/k8squest/blob/main/rbac/k8squest-rbac.yaml
- https://github.com/Manoj-engineer/k8squest#requirements
- https://github.com/Manoj-engineer/k8squest#installation
常见问题
K8sQuest 会操作我现有的 Kubernetes 集群吗?
install.sh 会创建名为 k8squest 的 kind 集群,并把当前 context 切到 kind-k8squest。开始前仍应备份 kubeconfig,运行后再用 kubectl config current-context 核对,不能只依赖脚本提示。
K8sQuest 的 RBAC 能保证绝对安全吗?
不能。RBAC 把常用写操作限制在 k8squest namespace,并让部分集群资源只读,但安装仍能访问 Docker daemon 和 kubeconfig。最稳妥的做法是在专用本机账户或可丢弃虚拟机里使用。
Windows 可以直接在 PowerShell 里安装 K8sQuest 吗?
官方要求 Windows 使用 Git Bash,并先启动采用 WSL2 后端的 Docker Desktop。PowerShell 和 CMD 不是 README 给出的支持路径。
K8sQuest 卡在某一关时怎样重来?
游戏内可使用 reset;仓库还提供 python3 engine/reset.py 加关卡编号或 all 的重置方式。重置会改动练习 namespace 中的资源,先确认 context 是 kind-k8squest。
K8sQuest 和 kind 是同一种工具吗?
不是。kind 负责创建本地 Kubernetes 集群;K8sQuest 使用 kind 集群承载 50 个故障任务,并加上提示、校验、讲解和进度系统。