diag-k8s-node-pressurelisted
Install: claude install-skill seed-forge/harness-ai-kit
# K8s Node Pressure Full-Chain Diagnostics
## 用途
当节点出现 `NotReady`、Pod 被驱逐、或监控报节点资源告警时触发。
## 输入
- kubectl 上下文、目标节点名称(可选,默认排查所有)
## 输出
- 节点资源压力报告 + 缓解建议
## 诊断步骤
### Step 1: 节点状态总览
```bash
kubectl get nodes -o wide
kubectl describe node {node_name}
# 关注 Conditions: MemoryPressure / DiskPressure / PIDPressure / Ready
```
### Step 2: 资源用量
```bash
kubectl top nodes
kubectl top pods --all-namespaces --sort-by=memory | head -20
kubectl top pods --all-namespaces --sort-by=cpu | head -20
```
### Step 3: 驱逐事件
```bash
# 最近被驱逐的 Pod
kubectl get events --all-namespaces --field-selector reason=Evicted --sort-by='.lastTimestamp' | tail -20
# 节点上的驱逐历史
kubectl get events --field-selector involvedObject.name={node_name} | grep -i evict
```
### Step 4: Allocatable vs Allocated
```bash
kubectl describe node {node_name} | grep -A 20 "Allocated resources"
# 关注 CPU/ memory requests 占 Allocatable 的百分比
```
### Step 5: 系统级排查
```bash
# 在目标节点上(SSH 或通过 kubectl debug)
df -h # 磁盘使用
free -h # 内存使用
ps aux --sort=-%mem | head -10 # 高内存进程
dmesg | grep -i oom # OOM killer
journalctl -u kubelet --since "1 hour ago" | tail -50
```
## 输出模板
```
K8s Node Pressure Analysis Report
════════════════════════════════════════
Cluster: {context}
Node: {node_name}
Time: {timestamp}
Node Conditions
Ready: {ready}
MemoryPressure: {mem_pressure}
DiskPressure: {disk_pressure}
PIDPressure: {pid_pressure}
Resource Usa