K8s高频运维命令速查表:节点Pod网络存储排查
Kubernetes 日常运维中,真正消耗时间的往往不是“会不会”,而是“命令记不记得住”。同一类故障,有经验的工程师会按固定顺序抓取信息:先看节点状态,再看 Pod 生命周期,接着查网络连通性,最后落到存储与事件日志。本文按这个排查链条,把高频使用的 kubectl 与相关命令做分类汇总,便于在故障现场快速定位,也适合作为团队内部的运维速查参考。
一、节点排查:先确认“地基”是否稳固
节点异常会直接表现为 Pod 调度失败、驱逐或大面积不可用。排查时应先确认节点是否 Ready,以及资源压力、污点和标签情况。
常用命令
- 查看节点总览:
kubectl get nodes -o wide,关注 STATUS、VERSION、内网 IP 与容器运行时。 - 查看节点详情:
kubectl describe node,重点看 Conditions、Taints、Allocatable 与已分配资源。 - 实时查看节点资源:
kubectl top node,需要集群已部署 metrics-server。 - 查看节点事件:
kubectl get events -A --field-selector involvedObject.name=,用于定位 DiskPressure、MemoryPressure 等。 - 查看污点与标签:
kubectl get node,排查 Pod 无法调度时的常见原因。-o jsonpath='{.spec.taints}' - 节点隔离与恢复:
kubectl cordon停止调度新 Pod,kubectl drain安全驱逐,维护完成后--ignore-daemonsets --delete-emptydir-data kubectl uncordon恢复。
若节点状态长时间为 NotReady,除了 describe 节点外,还需登录节点检查 kubelet 与容器运行时状态,这一步属于节点侧排障,不能仅依赖 kubectl。
二、Pod 排查:从生命周期到容器内部
Pod 是运维中最常打交道的对象。建议固定顺序:状态 → 详情 → 事件 → 日志 → 进入容器。
状态与详情
kubectl get pods -n:查看状态、重启次数、所在节点。-o wide kubectl get pods -A --field-selector status.phase!=Running:快速筛出非 Running 的 Pod。kubectl describe pod:Events 段通常直接给出 ImagePullBackOff、CrashLoopBackOff、调度失败等原因。-n kubectl get pod:查看完整 spec、状态与最后终止原因。-o yaml
日志与执行
kubectl logs:多容器 Pod 需指定容器。-n -c kubectl logs:查看上一次崩溃容器的日志,排查重启原因的关键命令。--previous kubectl logs -f:实时跟踪,限制行数避免刷屏。--tail=200 kubectl exec -it:进入容器内部验证配置与连通性。-n -- sh kubectl debug -it:临时容器调试,适合镜像精简无常用工具的场景。--image= --target=
工作负载与扩缩
kubectl rollout status deployment/:观察发布进度。-n kubectl rollout history deployment/与-n kubectl rollout undo deployment/:查看与回滚版本。--to-revision= kubectl scale deployment/:手动扩缩容。--replicas= -n kubectl top pod -n:查看各容器资源占用,辅助判断 OOM 与资源不足。--containers
三、网络排查:Service、DNS 与连通性
网络问题的表象常是“服务访问不通”,但原因可能出在 Service 选择器、端点、DNS、NetworkPolicy 或宿主机转发规则。建议自内向外逐层验证。
Service 与 Endpoint
kubectl get svc,endpoints -n:确认 Service 是否有对应的 Endpoints。kubectl describe svc:核对 Selector、Port、TargetPort 与 Endpoints 列表。-n kubectl get endpointslices -n:在较新版本中替代 Endpoints 排查后端地址。kubectl get ingress -A与kubectl describe ingress:检查域名、路径与后端 Service 映射。-n
DNS 与连通性验证
kubectl run dnstest --rm -it --image=:验证集群 DNS 解析。-- nslookup . - 在业务 Pod 内执行
curl -v或. : nc -zv,区分解析失败与端口不通。 kubectl get networkpolicy -n:确认是否存在限制流量的策略。kubectl get pods -n kube-system:检查 CoreDNS、网络插件(CNI)组件是否正常。
若 Pod 内部正常、跨节点异常,通常需要进一步检查 CNI 插件日志与节点转发规则;此类问题已超出 kubectl 单工具范围,应结合节点侧网络诊断命令判断。
四、存储排查:PV、PVC 与挂载失败
存储类故障多表现为 Pod 处于 Pending、ContainerCreating,或容器启动后读写报错。
kubectl get pv,pvc -A:查看存储卷与声明的状态、容量与绑定关系。kubectl describe pvc:Events 中常出现等待绑定、StorageClass 不存在、动态供给失败等提示。-n kubectl get storageclass:确认 StorageClass 是否存在、是否为默认。kubectl get pod:核对卷定义与挂载路径。-o jsonpath='{.spec.volumes}' - 进入容器执行
df -h、mount,确认挂载是否生效及剩余空间。 - 查看存储插件控制器日志,例如
kubectl logs -n kube-system,定位后端存储侧错误。
需要区分的是:PVC 一直 Pending 多为供给或调度问题;Pod 卡在 ContainerCreating 多为挂载未就绪;容器内读写失败则可能是权限、文件系统或后端存储异常。
五、事件、日志与全局视角
前四类排查都绕不开事件与日志。养成先看 Events 的习惯,能显著缩短定位时间。
kubectl get events -A --sort-by=.lastTimestamp:按时间排序查看全集群事件。kubectl get events -n:只看告警事件。--field-selector type=Warning kubectl get all -n:快速了解命名空间内资源全貌。kubectl api-resources与kubectl explain:确认资源类型与字段含义。. kubectl config view与kubectl config current-context:确认当前集群与上下文,避免误操作。kubectl -n:精确获取重启次数。get pod -o jsonpath='{.status.containerStatuses[*].restartCount}'
六、高频排障顺序建议
- 确认范围:是单 Pod、单服务,还是整节点、整命名空间。
- 看状态:get 系列命令确认对象当前状态与所在节点。
- 看事件:describe 与 events 获取调度、镜像、挂载、探针等失败原因。
- 看日志:应用日志与上一次容器日志结合分析。
- 进容器:验证配置、DNS、端口连通与挂载结果。
- 看节点与组件:必要时检查 kubelet、CNI、CoreDNS、CSI 等系统组件。
- 记录与复盘:把本次用到的命令和结论沉淀到团队速查文档中。
以上命令覆盖了节点、Pod、网络、存储四类高频场景。实际使用中建议结合命名空间与标签选择器(-l)缩小范围,并养成先确认上下文、再执行变更类操作的习惯。命令会随 Kubernetes 版本演进,涉及具体参数时请以集群实际版本的官方文档为准。