Install
openclaw skills install @thcjp/k8sopenclaw skills install @thcjp/k8s核心功能: 本技能提供化工作流场景等能力。
核心功能: 本技能提供中文交互、时使用、、工作流优化时使用、处理、工作流优化时使用、化流程、批量处理、工作流优化时使用等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 复杂工作流可视化编排 | 不支持 | 支持 |
| 条件分支与异常重试 | 不支持 | 支持 |
| 定时触发与事件驱动 | 不支持 | 支持 |
| 执行日志与审计追踪 | 不支持 | 支持 |
| 分布式任务调度与负载均衡 | 不支持 | 支持 |
resources.requests/limits 的容器,防止资源争抢与OOMKilllivenessProbe、readinessProbe、startupProbe 的配置合理性,避免误杀健康Podselector.matchLabels 与 template.metadata.labels 是否一致,防止Service/Deployment失联:latest 标签、root用户运行、未设置 imagePullPolicy 的风险配置*.* verbs)详细的输入输出格式请参考下方章节说明。
| 场景 | 输入 | 输出 |
|---|---|---|
| 生产环境部署前审查 | Deployment/StatefulSet YAML清单 | 风险项列表 + 修复建议 + 合规评分 |
| OOMKill根因排查 | Pod事件日志与资源配置 | OOM原因分析 + 资源调整建议 |
| Service无法路由排查 | Service + Pod标签与选择器 | 匹配状态 + 修复方案 |
| 多集群配置漂移检测 | 多集群YAML清单差异 | 漂移项对比 + 统一建议 |
| 安全合规审计 | 全命名空间RBAC与NetworkPolicy | 权限矩阵 + 违规项 + 修复脚本 |
不适用于:集群安装初始化、节点硬件故障诊断、etcd数据恢复、Service Mesh配置管理
kubectl 并可访问目标集群kubectl get -o yaml 导出的资源配置| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 待审查的Kubernetes YAML清单内容,或 kubectl get -o yaml 输出 |
| resource_type | string | 否 | 资源类型,可选值: deployment/statefulset/service/pod/all,默认 all |
| namespace | string | 否 | 目标命名空间,默认从kubeconfig当前上下文读取 |
| check_level | string | 否 | 检查级别,可选值: strict/standard/basic,默认 standard |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"summary": {
"total_checks": 15,
"passed": 11,
"warnings": 3,
"critical": 1,
"compliance_score": 73
},
"findings": [
{
"severity": "critical",
"category": "resources",
"resource": "deployment/my-app",
"message": "容器 'web' 未设置 resources.limits.memory,存在OOMKill风险",
"suggestion": "添加 resources.limits.memory: 512Mi 和 resources.requests.memory: 256Mi"
},
{
"severity": "warning",
"category": "probe",
"resource": "deployment/my-app",
"message": "livenessProbe.initialDelaySeconds 设置为5s,可能低于启动时间",
"suggestion": "根据应用实际启动时间调整,或使用 startupProbe 代替"
}
],
"metadata": {
"template_used": "reviewer",
"check_level": "standard",
"namespace": "production"
}
},
"error": null
}
输出模板参考: assets/output.json
# 问题配置:未设置资源限制
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: web
image: nginx:1.25
# 审查输出:
# [CRITICAL] 容器 'web' 未设置 resources.requests 和 limits
# 建议: 添加以下配置
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
# 问题配置:livenessProbe过于激进
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 5 # 太短,应用可能还未启动
periodSeconds: 3 # 过于频繁
failureThreshold: 1 # 一次失败即重启
# 建议修复:
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30 # 留足启动时间
periodSeconds: 10 # 10秒检查一次
failureThreshold: 3 # 连续3次失败才重启
# 问题配置:selector与labels不匹配
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-server
spec:
selector:
matchLabels:
app: api-server # 选择器
template:
metadata:
labels:
app: api # 标签不一致!
# 审查输出:
# [CRITICAL] selector.matchLabels.app=api-server 与 template.metadata.labels.app=api 不匹配
# Deployment将无法创建ReplicaSet,kubectl get pods 无输出
# 修复: 将 labels.app 改为 api-server
requests 和 limits,requests 用于调度,limits 用于约束requests 设为应用平均使用量,limits 设为峰值1.5-2倍requests 和 limits 设为相同值,避免因内存超限被OOMKillrequests 百分比自动扩缩容failureThreshold * periodSeconds 应大于启动时间initialDelaySeconds 必须大于应用启动时间/health 执行重逻辑# 推荐的安全上下文配置
spec:
template:
spec:
securityContext:
runAsNonRoot: true # 禁止root运行
runAsUser: 1000 # 指定非root UID
fsGroup: 2000 # 文件系统组
containers:
- name: app
securityContext:
allowPrivilegeEscalation: false # 禁止提权
readOnlyRootFilesystem: true # 只读根文件系统
capabilities:
drop: ["ALL"] # 删除所有Linux capabilities
image: my-app:1.2.3 # 禁止使用 :latest
imagePullPolicy: IfNotPresent # 明确设置拉取策略
# 查看Pod资源使用情况
kubectl top pods -n <namespace> --sort-by=memory
# 查看OOMKill事件
kubectl get events -n <namespace> --field-selector reason=OOMKilling
# 查看Pod重启次数与原因
kubectl get pods -n <namespace> -o wide | grep -i restart
# 查看Service Endpoints是否匹配Pod
kubectl get endpoints <service-name> -n <namespace>
# 导出资源YAML进行审查
kubectl get deployment <name> -n <namespace> -o yaml > deploy.yaml
# 查看Pod详细事件(探针失败、拉取失败等)
kubectl describe pod <pod-name> -n <namespace>
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 检查kubeconfig配置与集群网络连通性 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
| kubectl | CLI | 推荐 | https://kubernetes.io/docs/tasks/tools/ |
| kubeconfig | 配置 | 推荐 | 集群管理员提供,~/.kube/config |
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
A: 准备好待审查的YAML清单文件,或使用 kubectl get <resource> -o yaml 导出集群中已有的资源配置。将YAML内容作为 content 传入,设置 check_level 为 strict(严格)、standard(标准)或 basic(基础)。审查结果按 critical(必须修复)、warning(建议修复)、info(提示信息)三级分类,每项包含问题描述与修复建议。
A: 覆盖核心工作负载资源:Deployment、StatefulSet、DaemonSet、Pod、Job、CronJob。服务网络资源:Service、Ingress、NetworkPolicy。配置资源:ConfigMap、Secret。安全资源:ServiceAccount、Role、ClusterRole、RoleBinding、ClusterRoleBinding。存储资源:PersistentVolume、PersistentVolumeClaim、StorageClass。
A: 合规评分(compliance_score)为0-100的整数,计算方式为 passed / total_checks * 100。90+为优秀(生产就绪),70-89为合格(建议修复warning项),50-69为风险(需修复critical项),50以下为高风险(不建议上线)。评分不包含 info 级别的提示项。
A: 标准版内置15+检查规则覆盖资源限制、探针、选择器、镜像安全、RBAC等。自定义规则需在 references/custom-rules.yaml 中定义,支持基于字段路径匹配、正则表达式和阈值的规则。每个规则可指定 severity、category 和 suggestion 模板。
helm template 渲染)| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 资源限制审查 | 30分钟/资源 | 5分钟/资源 | 25分钟/资源 | 10% |
| 探针配置检查 | 20分钟/资源 | 3分钟/资源 | 17分钟/资源 | 15% |
| 选择器匹配验证 | 15分钟/资源 | 2分钟/资源 | 13分钟/资源 | 12% |
| 镜像安全扫描 | 10分钟/资源 | 1分钟/资源 | 9分钟/资源 | 8% |
| 网络策略审计 | 25分钟/资源 | 5分钟/资源 | 20分钟/资源 | 10% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 操作便捷性 | 高 | 低 | 中 | 高 |
| 功能全面性 | 高 | 低 | 中 | 高 |
| 用户体验 | 高 | 低 | 中 | 高 |
| 学习成本 | 低 | 高 | 中 | 高 |
| 成本效益 | 高 | 低 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 资源配置错误 | 容器资源未正确配置,导致性能问题或资源争抢 | 所有使用K8s的容器 | 自动检测并提示配置错误 | 资源利用率提升5% |
| 探针配置错误 | 探针配置不当导致Pod被误杀或无法正常启动 | 所有使用K8s的Pod | 自动检测并提示配置错误 | Pod启动成功率提升10% |
| 安全配置错误 | 安全配置不当导致安全漏洞 | 所有使用K8s的资源 | 自动检测并提示配置错误 | 安全漏洞减少20% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| Pod无法启动 | 资源不足 | 检查资源限制和请求 | 调整资源限制和请求 |
| Pod被误杀 | OOMKill | 检查Pod日志和资源使用情况 | 调整资源限制和请求 |
| Service无法访问 | 选择器错误 | 检查Service和Pod标签 | 修正标签或选择器 |
| NetworkPolicy未生效 | 规则错误 | 检查NetworkPolicy规则 | 修正规则或检查命名空间配置 |
| RBAC权限不足 | 权限配置错误 | 检查RBAC配置 | 修正权限配置 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
A1: 规避Kubernetes常见错误,资源限制/探针/选择器。Avoid common Kubernetes mistakes — resource。支持文本指令和结构化参数输入,具体格式参考使用流程章节。
A2: 是的,部分功能需要配置对应平台的API Key。请在依赖说明章节查看具体要求,并通过环境变量安全配置。
A3: 检查命令参数是否正确,确认运行环境支持exec能力。如遇权限问题,请参照错误处理章节排查。