Files
teamai-global/skills/k8s-status/SKILL.md
T
NightStar 3d3dd79df0 Add 39 shared skills from local agent inventory
Sources: ~/.openclaw/skills, ~/.agents/skills, workshop-skills, workspace/skills
2026-09-10 16:54:57 +08:00

50 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: "k8s-status"
description: "巡检 K3s/K8s 集群:kubectl 读取节点状态、资源占用、Pod 分布、异常项,解析输出核心字段。"
---
# K8s/K3s 集群状态巡检
通过 kubectl 读取多节点集群运行状态,解析核心字段并输出结构化报告。
适用场景:用户问「集群/节点/服务现在什么状态」「帮我看看机器跑得怎么样」。
## 用法
```bash
# 襄阳2c4g(control-plane,kubectl 直接可用)
bash scripts/k8s-status.sh
# 指定 kubeconfig(从任意机器远程跑)
KUBECONFIG=/etc/rancher/k3s/k3s.yaml bash scripts/k8s-status.sh
```
环境变量:
- `KUBECTL` — kubectl 路径,默认 `kubectl`
- `KUBECONFIG` — kubeconfig 路径,默认当前上下文
## 输出内容
1. **节点状态全量** — `kubectl get nodes -o wide`
2. **节点健康解析** — jsonpath 精确提取:名称/Ready状态/角色(control-plane|worker)/版本/内网IP/公网IP/OS/内核/运行时
3. **资源占用** — `kubectl top nodes`(metrics-server 不可用时自动跳过)
4. **Pod 总数 & 节点分布**
5. **异常 Pod** — 非 Running/Completed 状态列表
6. **Warning 事件** — 最近 5 条
7. **节点磁盘** — `kubectl top nodes` 不含磁盘;三台机分别 `df -h /`(襄阳2c4g 本机直接跑,`ssh 十堰电信4c8g` / `ssh aliyun` 远程)。要**回收空间**(journal / 缓存 / prune)见 `reclaim-cluster-disk`。
## 注意事项
- 用 jsonpath + tab 分隔提取字段,避免 `-o wide` 空格切分错位(OS-IMAGE 含空格会坑 awk)
- 角色判定:`node-role.kubernetes.io/control-plane` label 为 true → control-plane,否则 worker
- metrics-server 对部分节点返回 `<unknown>`:通常是跨节点网络问题(如 flannel VXLAN 不通),不是脚本 bug
- Warning 事件 `InvalidDiskCapacity`(invalid capacity 0 on image filesystem)常见于容器内 kubelet 或磁盘识别异常,需单独排查
## 巡检命中 web_search/searxng「0 结果」时
早报链路依赖 searxng(OpenClaw `tools.web.search.provider: searxng`)。若巡检发现某 Pod `BackOff` 后虽 Running 但 `web_search` 返回 0 条,按序排查:
1. **先区分引擎故障,不是网络**:从集群内 `curl -s "http://<searxng-svc>:8080/search?q=<词>&format=json&engines=bing"`。若 `unresponsive_engines` 里有 `["baidu","Suspended: CAPTCHA"]`,那是 baidu 被验证码封 24h(transient,自动解封),不是服务挂了。
2. **bing 引擎 302 重定向坑**:searxng pod 请求 `www.bing.com` 会 302 到 `cn.bing.com`,引擎解析重定向中间响应拿不到结果(容器内手动 urllib 模拟同 UA 能拿到 b_algo,佐证是引擎对重定向的处理问题)。修法:`searxng-settings` ConfigMap 的 bing 引擎配置加 `base_url: "https://cn.bing.com"`,然后 `kubectl rollout restart deployment searxng -n default`。改前先 `kubectl get cm <cm> -o yaml > /tmp/<cm>.bak.yaml` 备份。
3. **验证要用不同 query**:OpenClaw 的 `web_search` 按 query 缓存(`"cached": true` 时同 query 会返回旧的空结果)。换一个未查过的 query 再测,确认端到端真恢复。
4. 若 searxng Deployment 无 nodeSelector,`rollout restart` 后 Pod 可能跨节点漂移(襄阳↔十堰),ClusterIP 不变不受影响。