跳到正文
发现
kube-score:K8s 清单静态检查工具
命令行工具开发者工具

kube-score:K8s 清单静态检查工具

对 Kubernetes YAML 和 Helm 清单做静态分析,给出可靠性与安全改进建议的命令行工具。

admin
发布于 2026-10-30
浏览
2
访问
0
下载
0
版本
v1.20.0
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

kube-score 是一款对 Kubernetes 对象定义做静态代码分析的工具。它会扫描你的 YAML 清单与 Chart 渲染结果,输出一份建议列表,指出哪些地方可以改得更安全、更健壮,从而帮助避免线上故障和隐患。

除本地命令行使用外,官网还提供了在线 Demo,可以直接在浏览器里试用。

主要功能

内置的检查项覆盖多个方面(完整列表见仓库的 README_CHECKS.md):

  • 容器应设置资源 limits
  • Pod 应被 NetworkPolicy 选中,建议同时配置 ingress 与 egress 规则
  • Deployment 和 StatefulSet 应配置 PodDisruptionPolicy
  • Deployment 和 StatefulSet 应配置 host PodAntiAffinity
  • 容器探针:应配置 readiness,且不应与 liveness 探针完全相同
  • 容器 securityContext:以较大的用户/组 ID 运行,不要以 root 或可写 root 文件系统运行
  • API 稳定性:有稳定 API 时使用稳定版本(支持 Deployments、StatefulSets、DaemonSet)

安装与使用

安装方式:

  • macOS、Linux、Windows 预编译二进制:见 GitHub releases
  • Docker:docker pull zegl/kube-score
  • Homebrew(macOS / Linux):brew install kube-score
  • Krew(macOS / Linux):kubectl krew install score

配合 Helm 使用:

helm template my-app | kube-score score -

配合 Kustomize 使用:

kustomize build . | kube-score score -

直接检查静态 YAML:

kube-score score my-app/*.yaml

检查已部署到集群中的资源:

kubectl api-resources --verbs=list --namespaced -o name \
  | xargs -n1 -I{} bash -c "kubectl get {} --all-namespaces -oyaml && echo ---" \
  | kube-score score -

用 Docker 运行:

docker run -v $(pwd):/project zegl/kube-score:latest score my-app/*.yaml

动作(action)包括 score(检查并给出评分和建议)、list(以 CSV 列出所有检查项)、version、help。

常用参数:

  • --output-format:可选 human、json、ci、sarif,默认 human;sarif 便于接入 CI 平台
  • --exit-one-on-warning:出现 warning 时也以退出码 1 结束
  • --ignore-test:全局禁用某个检查,可重复设置
  • --enable-optional-test:启用某个可选检查,可重复设置
  • --kubernetes-version:按生产环境所用的 Kubernetes 版本调整检查,默认 v1.18
  • --ignore-container-cpu-limit / --ignore-container-memory-limit:不再强制要求设置 CPU / 内存 limit

注意事项

kube-score 可以放进 CI/CD 流程:发现严重问题时以退出码 1 结束,从而阻断流水线;通过 --exit-one-on-warning 可以把触发阈值降低到 warning。为了让检查结果最准确,建议把部署到同一 namespace 的所有应用一起作为输入。

单项检查也可以按对象忽略或启用:在对象 metadata 的 annotations 中写 kube-score/ignore 或 kube-score/enable,值为逗号分隔的检查项 ID。例如给 Service 加上 kube-score/ignore: service-type 就会跳过 service-type 检查。

从源码构建需要 Go 1.21 或更高版本:

go build ./cmd/kube-score

本作品整理自 GitHub 开源项目 zegl/kube-score,原作者 @zegl,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v1.20.0当前版本

    修复了 seccomp 可选检查(#590),补充 MinReplicasDeployment 与 MinReplicasHPA 测试,完善探针一致性与 JUnit 测试报告文档,更新 Docker 中的 Go 版本并升级多项依赖。

评论