k8squest 是什么?

K8sQuest 是在本机 kind 集群里练 Kubernetes 排障的闯关项目。它把 50 个任务分成 5 个世界,由 Python 游戏引擎布置故障、检查结果并记录进度;玩家仍在第二个终端里使用真实 kubectl。

⭐ 1,300 Stars 🍴 133 Forks Shell Apache-2.0 作者: Manoj-engineer
来源:github.com/Manoj-engineer/k8squest 查看 GitHub 仓库 → 📘 使用教程 →

为什么值得关注

官方把 Pod、Deployment、Service、网络、存储和排障任务分布在 5 个世界,并提供 check、hint、solution、validate、skip 和 reset 流程。install.sh 创建名为 k8squest 的 kind 集群,并把当前 kubectl context 切到 kind-k8squest。

来源:github.com/Manoj-engineer/k8squest

核心功能

50 个渐进任务

官方把 Pod、Deployment、Service、网络、存储和排障任务分布在 5 个世界,并提供 check、hint、solution、validate、skip 和 reset 流程。

来源:github.com/Manoj-engineer/k8squest
独立 kind 集群

install.sh 创建名为 k8squest 的 kind 集群,并把当前 kubectl context 切到 kind-k8squest。

来源:github.com/Manoj-engineer/k8squest/blob/main/install.sh
命名空间级 RBAC

官方清单为 k8squest-player 绑定 Role,常用工作负载的写权限限于 k8squest namespace;节点和命名空间等集群资源只开放读取。

来源:github.com/Manoj-engineer/k8squest/blob/main/rbac/k8squest-rbac.yaml

技术架构

install.sh 建立 Python venv、安装 requirements.txt、创建 kind 集群并应用 namespace/RBAC;engine 负责关卡状态、校验与终端界面;worlds 保存 5 组任务定义;玩家的 kubectl 操作直接进入 kind-k8squest。进度保存在本地,reset.py 可重置单关或全部关卡。

来源:github.com/Manoj-engineer/k8squest

项目知识图谱

知识图谱:项目核心节点(中心)+ 核心功能(内环六边形)+ 关键技术依赖(外环 chip) Docker Desktop 或可用的 Docker daemonDocker Desktop… kubectl kind bash Python 3.9+ 50 个渐进任务 独立 kind 集群 命名空间级 RBAC k8squest 项目本体 核心功能 关键依赖

技术栈

语言Bash + Python 3.9+框架kind 本地 Kubernetes 集群 + kubectl
Docker Desktop 或可用的 Docker daemonkubectlkindbashPython 3.9+jqrequirements.txt 中的 rich 与 PyYAML
安装会拉取 Python 包和 kind 节点镜像,创建 Docker 容器,并修改当前 kubeconfig context;Windows 必须从 Git Bash 运行
来源:github.com/Manoj-engineer/k8squest

快速上手

先运行 docker info、kind version、kubectl version --client、python3 --version 与 jq --version。克隆仓库并审核 install.sh 后执行 ./install.sh;随后确认 kubectl config current-context 输出 kind-k8squest,再运行 ./play.sh。游戏终端保持打开,另开终端执行任务中的 kubectl 命令。
来源:github.com/Manoj-engineer/k8squest

使用场景

适合在可丢弃的本地集群中练习 kubectl 和常见故障定位,也可用作课堂演示。它不是生产集群演练器;已有 kubeconfig 中包含真实集群的人,应先备份配置并核对当前 context。

来源:github.com/Manoj-engineer/k8squest

优势与局限

优势

  • 任务使用真实 Kubernetes API,而不是静态选择题
  • 50 个任务覆盖基础对象、网络、存储和排障
  • 默认创建独立 kind 集群
  • RBAC 清单明确列出可写和只读资源

局限

  • 没有 GitHub release 或 tag,复现需要固定 commit
  • 安装脚本会改变当前 kubectl context
  • Role 对 k8squest namespace 内 secrets 等资源有全部操作权限
  • Windows 依赖 Git Bash,PowerShell 和 CMD 不是官方路径
  • 安全护栏不能替代对 kubeconfig 和 Docker daemon 的隔离
来源:github.com/Manoj-engineer/k8squest

最新版本

截至 2026-09-23,官方 GitHub Releases 页面没有 release,仓库也没有稳定版本安装入口。生产可复现记录应固定具体 commit,而不是只写 main。

来源:github.com/Manoj-engineer/k8squest/releases

实测与证据

status: docs-only  |  checked_at: 2026-09-23  |  environment: 核对官方 README、install.sh、requirements.txt、RBAC 清单和 GitHub Releases 页面  |  limitations: 未运行 install.sh,未拉取镜像,未创建 kind 集群,未执行任何 kubectl 或关卡命令  |  observed_output: 官方 Releases 页面无 release;install.sh 会创建 venv、安装依赖、创建 k8squest kind 集群、切换 context 并应用 RBAC

来源:github.com/Manoj-engineer/k8squest/releases

同类项目对比

Kubernetes 官方 kind 用 Docker 节点快速创建本地集群,提供的是集群工具;K8sQuest 在 kind 之上增加任务、故障、提示、校验和进度。只需要本地测试集群时直接用 kind;需要按关卡练排障时再加 K8sQuest。

来源:github.com/kubernetes-sigs/kind

总结评价

保留。它没有商业漏斗,教程价值在于把安装脚本对 Docker、网络和 kubeconfig 的实际影响说透,并把练习严格放在 kind-k8squest 中。

来源:github.com/Manoj-engineer/k8squest

常见问题

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 个故障任务,并加上提示、校验、讲解和进度系统。

资料与核验范围
本文依据项目公开资料整理。版本、安装命令和功能边界可能随上游更新,请以所列来源和项目当前版本为准。 资料核对时间: 2026-09-23 13:55.

参考材料:README、GitHub API、依赖文件