Skip to content

云原生排障命令速查 ​

云原生环境(Helm / K8s 进阶排障 / containerd / OpenTelemetry / Grafana LGTM / Cilium-eBPF)常用排障命令速查。 基础 kubectl 命令见 kubectl 命令速查;概念与部署见 K8s 系列指南 与 eBPF 指南。 用法:右侧「本页目录」跳转,或 Ctrl+K 搜索;命令可直接复制(把占位符换成你的实际值)。

版本基准(2026-09)

本篇命令基于当前稳定版:Helm 4.3、Kubernetes 1.35(临时容器自 1.25 GA)、containerd 2.3、crictl(cri-tools) v1.35、OpenTelemetry Collector v0.162、Grafana Loki 3.7、Tempo 3.0(TraceQL metrics 已 GA)、Cilium 1.20、bpftrace 0.27。版本以各发行版实际安装为准,用 xx version 自查。

Helm(release 排障) ​

命令说明
helm list -A列出所有命名空间已安装的 release
helm list -n ns查看指定命名空间 release
helm status 名查看 release 状态、资源、最近事件
helm get manifest 名查看该 release 渲染出的全部 K8s 清单
helm get values 名查看生效的 values
helm get values 名 -a含默认值的完整 values
helm history 名查看 release 修订历史
helm rollback 名 <REVISION>回滚到指定版本
helm rollback 名 0回滚到上一版本
helm template chart -f values.yaml本地渲染模板(不提交集群),排查模板错误
helm install 名 chart --dry-run --debug试运行安装并打印渲染结果与调试信息
helm upgrade 名 chart --dry-run试运行升级,看会变什么
helm lint chart检查 chart 语法/依赖问题
helm pull repo/chart --untar下载 chart 到本地查看
helm push chart.tgz oci://repo把 chart 推到 OCI 仓库
helm repo add 名 url && helm repo update添加并更新仓库索引

kubectl 进阶排障 ​

命令说明
kubectl describe pod 名看事件、调度、探针失败原因
kubectl get events -A --sort-by=.metadata.creationTimestamp按时间正序看全集群事件
kubectl get events --field-selector type=Warning只看 Warning 事件
kubectl top nodes / kubectl top pods -A节点/Pod 资源用量(需 metrics-server)
kubectl debug 名 -it --image=busybox --target=容器给崩溃/精简容器注入临时调试容器(Ephemeral Container)
kubectl debug node/节点名 -it --image=ubuntu在节点上起调试 Pod,挂载节点宿主文件系统 /host
kubectl logs 名 --previous看崩溃前那个容器的日志
kubectl get --raw /metrics直接抓取组件 metrics(如 apiserver)
kubectl get --raw /healthz?verbose健康检查详情
kubectl cluster-info dump导出集群大量调试信息到当前目录
kubectl cordon 节点标记节点不可调度
kubectl drain 节点 --ignore-daemonsets --delete-emptydir-data驱逐节点上 Pod(升级前)
kubectl uncordon 节点恢复节点可调度
kubectl auth can-i create pods --as=user模拟某账号权限(RBAC 排障)

containerd / CRI 运行时 ​

命令说明
crictl ps列出运行中的容器(CRI 接口)
crictl ps -a含已停止的容器
crictl logs 容器ID查看容器日志
crictl logs -f 容器ID实时跟踪日志
crictl inspect 容器ID容器完整详情(状态、挂载、命令)
crictl pods列出 PodSandbox
crictl stats容器资源占用实时统计
crictl info运行时与 CRI 配置信息
ctr -n k8s.io images ls用 ctr 列出 containerd 中镜像(k8s 命名空间)
ctr -n k8s.io containers ls列出 containerd 容器
crictl config runtime-endpoint unix:///run/containerd/containerd.sock指定运行时端点(切 CRI-O 用 /run/crio/crio.sock)

注意:docker 管不到 K8s 容器(除非用 docker-shim);kubelet 走 CRI,节点排障优先用 crictl。

OpenTelemetry Collector ​

命令 / 操作说明
otelcol-contrib --config=config.yaml启动 Collector(contrib 版含更多组件)
otelcol --config=config.yaml --validate只校验配置是否合法
--log-level=debug启动参数,打印每个管道的数据细节
service.telemetry.metrics.address: 0.0.0.0:8888配置 Collector 自身 metrics 端口
curl -s localhost:8888/metrics查看 Collector 自身处理指标(接收/导出/拒绝条数)
curl -s localhost:55679/debug/zpageszpages 页面:看管道活跃 trace、错误(需开启)
curl -s localhost:8888/debug/pprof/pprof 性能分析(内存/CPU)
otlphttp://<host>:4318HTTP 接收/导出端点(gRPC 为 4317)
curl -X POST localhost:4318/v1/traces -d @trace.json手动投递一条 OTLP 数据验证导出链路

zpages 需在配置里显式开启 extension: zpages 并在 service.extensions 引用;排导出失败时先看 Collector 自身 metrics 里 exporter_failed 是否在涨。

日志与链路查询 ​

Grafana Loki LogQL(日志查询):

查询说明
{job="api"}按标签选择器选出日志流
[`= "error"`](./cmd-cloudnative/logcli)
{job="api"} |~ "5[0-9]{2}"正则匹配 5xx 状态码
{job="api"} | json把 JSON 日志解析成字段
{job="api"} | label_format level="level"提取字段为标签
rate({job="api"}[5m])量化函数:日志每秒条数
count_over_time({job="api"}[5m])统计 5 分钟内日志行数
[`sum(rate(= "error"[5m])) by (status)`](./cmd-cloudnative/logcli)

Tempo TraceQL(链路查询):

查询说明
{ resource.service.name = "api" }按服务选 trace
{ span.http.status_code >= 500 }选含 5xx span 的 trace
{ .error = true }选出错的 trace
{ duration > 1s }选慢 trace
{ resource.service.name = "api" && span.http.route = "/pay" }组合条件

Jaeger:

命令 / 操作说明
jaeger_query --query.port=16686启动 Jaeger 查询 UI
浏览器打开 http://<host>:16686按服务/操作/tag 查 trace
curl localhost:16686/api/traces?service=apiAPI 方式拉 trace

Cilium 与 eBPF ​

命令说明
cilium status查看 Cilium 组件健康与版本
cilium status --verbose含节点、 Hubble 状态详情
cilium endpoint list列出所有端点(Pod)及其身份/策略状态
cilium endpoint get <pod>查看某 Pod 端点详情
cilium policy get查看已导入的网络策略
cilium policy validate -f policy.yaml校验 Cilium 网络策略
cilium hubble ui本地打开 Hubble 可观测 UI
hubble observe实时观察 Pod 间流日志(源/目的/协议/ verdict)
hubble observe --namespace ns --protocol http按命名空间/协议过滤流
cilium connectivity test跑内置连通性测试套件
bpftrace -e 'kprobe:vfs_open { printf("open by %s\n", comm); }'bpftrace 单行:追踪文件打开
bpftrace -e 'tracepoint:syscalls:sys_enter_execve { join(args->argv); }'追踪进程启动参数
bpftrace -l 'kprobe:tcp_*'列出可用探针
bpftool prog show列出已加载的 eBPF 程序
bpftool map show列出 eBPF map

网络连通性(网格 / Ingress / 服务) ​

命令说明
curl -v http://服务名/路径详细 HTTP 请求过程(看 DNS/连接/TLS)
curl -v --resolve 域名:80:IP http://域名/绕过 DNS 直连指定 IP 验证虚拟主机
curl -kv https://域名跳过证书校验排查 TLS 问题
dig 域名 @DNS服务器DNS 解析排查
nslookup 域名简易 DNS 查询
nc -zv 主机 端口测试 TCP 端口是否通
nc -uzv 主机 端口测试 UDP 端口
grpcurl -plaintext 主机:端口 list列出 gRPC 服务(服务网格排障常用)
grpcurl -plaintext 主机:端口 包.服务/方法直接调用 gRPC 方法
kubectl exec -it pod -- nslookup svc在 Pod 内验证集群 DNS
ipvsadm -Ln查看 LVS/IPVS 转发规则(kube-probe=ipvs 模式)

生产红线

  • kubectl debug 注入的临时容器不持久,Pod 重建即消失;排查完即可离开,不要依赖它常驻。
  • --log-level=debug、bpftrace 会产生大量日志/性能开销,生产排障用完即关,不要长期开启。
  • bpftool / bpftrace 在内核态运行,错误探针可能影响节点稳定性,先在测试节点验证。
  • drain 节点前确认 Pod 有 PDB 与副本冗余,避免把服务全部驱逐掉。

官方文档 ​