
文章目录
-
- [开篇:一周、零 Rust、一只 AI,从想法到开源](#开篇:一周、零 Rust、一只 AI,从想法到开源)
- 一、年关将至,运维为何忙成狗
- [二、Kubeowler 是什么:一只给集群「守夜」的猫头鹰](#二、Kubeowler 是什么:一只给集群「守夜」的猫头鹰)
- [三、和别的开源巡检工具比,Kubeowler 强在哪](#三、和别的开源巡检工具比,Kubeowler 强在哪)
- 四、安装:三种姿势,任选一种
-
- [1. 直接下二进制(推荐,30 秒搞定)](#1. 直接下二进制(推荐,30 秒搞定))
- [2. Docker 跑(适合临时用或 CronJob)](#2. Docker 跑(适合临时用或 CronJob))
- [3. 从源码编(想改代码或没对应架构时)](#3. 从源码编(想改代码或没对应架构时))
- 五、使用:从「跑一次」到「纳入日常」
-
- 先跑一版默认报告
- [指定命名空间 / 输出文件 / 格式](#指定命名空间 / 输出文件 / 格式)
- [用别的 kubeconfig](#用别的 kubeconfig)
- [可选:把 node-inspector 也拉进来](#可选:把 node-inspector 也拉进来)
- [春节前「固定动作」示例:每日一份 HTML 归档](#春节前「固定动作」示例:每日一份 HTML 归档)
- 六、报告里能看到啥
- 七、接下来会干啥:路线图不画饼
别人过年贴春联,运维过年贴巡检报告。------ 鲁迅没说过,但很有道理。
开篇:一周、零 Rust、一只 AI,从想法到开源
先吹为敬。
这整坨东西------Kubeowler ,一个用 Rust 写的 Kubernetes 集群巡检工具,多维度检查、权重打分、多格式报告、按资源分组、还带可选的节点级 DaemonSet------是笔者在不到一周 里从零撸出来的。而且有个小前提:当时我对 Rust 一窍不通 。fn 和 impl 都认不全,ownership、生命周期、borrow checker 更是「听说过,没见过」。那怎么搞?完全 Cursor AI,我负责想清楚「要查啥、报告长啥样、CLI 怎么设计」,它负责把想法变成能编译、能跑、能通过 CI 的代码。不到一周:工具二进制、Docker 多架构镜像全都自动自动构建。
吹完了。下面说正事:春节前运维为啥要忙,以及 Kubeowler 能帮你干啥。
一、年关将至,运维为何忙成狗
春节前有两类人特别忙:一类是抢票的,一类是守着集群怕出事的。
业务要放假,集群不放假。节前不把「节点是不是要爆」「证书是不是快过期」「谁又开了个 NodePort 在危险区间」查清楚,大年初二一个告警就能让你从饭桌上弹起来。所以每年这时候,给集群做一轮全面巡检,几乎成了运维的保留节目。
问题来了:巡检怎么做?
- 手写脚本:灵活,但容易漏项,维护成本高,换个人接盘一脸懵。
- 东一个工具看安全,西一个工具看资源:报告散落各处,给领导汇报时得自己拼 PPT。
- 上重量级平台:功能全,但部署重、要权限、要对接,春节前未必来得及搞一轮。
有没有一种可能:一条命令、一份报告、多格式输出,覆盖健康、安全、资源、网络、存储,还带打分和整改建议?
有。它叫 Kubeowler(读作 /kuːˈbaʊlər/,Kubernetes + owl,猫头鹰------夜里帮你看集群的那种)。
二、Kubeowler 是什么:一只给集群「守夜」的猫头鹰
Kubeowler 是一个面向 Kubernetes 集群的健康与合规巡检工具,用 Rust 写成,主打:
- 一次检查,多维度覆盖:节点、Pod、网络、存储、安全、资源、控制面、证书、策略、可观测性等。
- 权重打分:不只会报问题,还会算一个总体健康分,弱项一目了然。
- 单报告、多格式:默认一份 Markdown,也可输出 JSON、CSV、HTML,方便归档、对接和汇报。
- 按资源分组:报告按 Node、Pod、Service 等对象组织,查问题不用在长列表里捞针。
- 可执行建议:每个问题带整改提示和文档链接(含项目内 issue 文档),照着改就行。
二进制是静态链接(musl) ,往老系统(RHEL 7、CentOS 7、各种国产 OS)上一丢就能跑,不跟你谈 glibc 版本。可选再部署一个 node-inspector DaemonSet,把每台机器的磁盘、内核参数、证书等也收进报告,做到「集群 + 节点」一起看。
三、和别的开源巡检工具比,Kubeowler 强在哪
市面上有不少 K8s 巡检/审计类开源工具,各有侧重。简单对一下位:
| 维度 | Kubeowler | Kubescape | Popeye | kube-bench | kube-score |
|---|---|---|---|---|---|
| 定位 | 集群健康 + 安全 + 资源综合巡检 | 安全与合规(NSA/CIS 等) | 集群「洁癖」检查 | CIS 基准检查 | 清单静态分析 |
| 输出 | 单报告,MD/JSON/CSV/HTML | 多种报告、集成多 | 终端 + 报告 | 终端/报告 | 终端/JSON |
| 打分 | 有,权重健康分 | 有 | 有 | 无 | 无 |
| 按资源分组 | 有(Node/Pod/Service...) | 按控制面/ workload 等 | 有 | 按 CIS 章节 | 按资源 |
| 运行方式 | 单二进制 / Docker / CronJob | CLI / 后端服务 | CLI | CLI / Job | CLI |
| 依赖 | 无(musl 静态) | 无 | 无 | 无 | 无 |
| 节点级数据 | 可选 DaemonSet | 无 | 无 | 无 | 无 |
人话版:
- Kubescape:偏「安全与合规框架」,策略多、集成强;Kubeowler 更偏「日常健康巡检 + 资源 + 可操作建议」,报告结构适合给人和脚本一起用。
- Popeye:也是「集群体检」,风格偏终端友好;Kubeowler 把「一份多格式报告 + 按资源分组 + 打分」做成默认体验,更适合归档和汇报,但巡检缺少节点维度的检查。
- kube-bench / kube-score :一个盯 CIS,一个盯 YAML;Kubeowler 是跑在活集群上的巡检,看的是当前状态,不是静态文件。
总结一句 :Kubeowler 的卖点是------一条命令、一份报告、多格式、带打分、按资源分组、建议可执行,并且二进制零依赖,适合当「春节前集群年终体检」的固定动作。
四、安装:三种姿势,任选一种
1. 直接下二进制(推荐,30 秒搞定)
从 GitHub Releases 按架构下对应包,解压塞进 PATH 即可:
bash
# x86_64 示例(版本号可换成最新)
curl -sSL https://github.com/Ghostwritten/kubeowler/releases/download/v0.1.1/kubeowler-v0.1.1-x86_64-linux.tar.gz | tar xz
sudo cp kubeowler /usr/local/bin/
kubeowler check --help # 能出帮助就说明装好了
arm64 用 aarch64-linux 那个包,同理。
2. Docker 跑(适合临时用或 CronJob)
有现成多架构镜像(如 ghostwritten/kubeowler:v0.1.1),挂上 kubeconfig 就能跑:
bash
docker run --rm \
-v ~/.kube/config:/home/kubeowler/.kube/config:ro \
-v $(pwd)/reports:/app/reports \
ghostwritten/kubeowler:v0.1.1 check -o /app/reports/cluster-report.md
3. 从源码编(想改代码或没对应架构时)
bash
git clone https://github.com/Ghostwritten/kubeowler.git
cd kubeowler
cargo build --release
# 二进制在 target/release/kubeowler
权限:能读集群(nodes、pods、services、namespaces 等)即可,不需要写权限。
五、使用:从「跑一次」到「纳入日常」
先跑一版默认报告
bash
kubeowler check
会连当前 kubeconfig 指向的集群,扫一圈,生成一份 Markdown,文件名类似:
{集群名}-kubernetes-inspection-report-{时间}.md。
指定命名空间 / 输出文件 / 格式
bash
# 只扫 kube-system
kubeowler check --namespace kube-system
# 指定输出文件和格式(md / json / csv / html)
kubeowler check -o report.md -f md
kubeowler check -o report.json -f json
kubeowler check -o report.html -f html
# 只看 warning 和 critical
kubeowler check --level warning,critical
用别的 kubeconfig
bash
kubeowler check --config-file ~/.kube/config-prod
# 或
export KUBECONFIG=~/.kube/config-prod && kubeowler check
可选:把 node-inspector 也拉进来
若已部署 node-inspector DaemonSet(每节点采集磁盘、内核等):
bash
kubectl apply -f deploy/node-inspector/daemonset.yaml # 若还没部署
kubeowler check --node-inspector-namespace kubeowler # 默认就是 kubeowler
报告里会多出节点级数据。
春节前「固定动作」示例:每日一份 HTML 归档
bash
# 每天 9 点跑一份 HTML,按日期存
0 9 * * * /usr/local/bin/kubeowler check -o /var/reports/daily-$(date +\%Y-\%m-\%d).html -f html
或者用 Kubernetes CronJob 在集群里跑(见项目 docker-and-kubernetes 文档)。
六、报告里能看到啥
- 集群概览:版本、节点数、Pod 数、命名空间数、大致「年龄」等。
- 总体健康分:一个 0--100 的分数,哪里扣分多,哪里就优先看。
- 按资源类型分组的问题 :Node、Pod、Service、存储、网络、安全、证书、策略等,每个问题带严重级别、简短描述和整改建议/文档链接。
- 可选:node-inspector 带来的磁盘、内核、服务状态等(部署了 DaemonSet 才有)。
Markdown 适合人读和版本管理,JSON/CSV 适合塞进监控或表格,HTML 适合直接发给领导或存档。
七、接下来会干啥:路线图不画饼
当前能用的已经都上了,但「能跑」和「好用」之间还有一段路。后面会优先做这几件事(不画大饼,列出来就是打算真搞):
- 修 CSV 报告生成的 bug:有些边界情况或字段导出不完整,会修到「导出一份 CSV 扔进 Excel/BI 能直接用」的程度。
- 弄个 Dashboard,实时看巡检结果 :不再只是「跑完命令看本地文件」,而是有个小 Web 界面,能实时看当前集群健康分、问题分布、趋势(配合定时巡检),不用到处翻报告。
- 一键下载报告 :在 Dashboard 里按时间、格式(MD/JSON/CSV/HTML)一键下载历史报告,省得登机器找文件。
- 加大巡检内容项:在现有节点、Pod、网络、存储、安全、证书等基础上,继续加检查项(例如更多策略与合规项、资源配额与 LimitRange、Ingress/TLS、可观测与告警相关等),让「年终体检」更细、更贴近实际运维场景。
如果你有特别想被巡检到的项或想先看到哪一块落地,欢迎到 GitHub Issues 提一嘴,路线图可以跟着需求微调。
项目地址 :https://github.com/Ghostwritten/kubeowler
文档与示例报告 :仓库内 docs/ 与 example/。