偏实战的 K8s 排查命令清单

AI摘要
本文是一份Kubernetes运维排查实用命令指南,属于知识分享。内容系统性地整理了Pod查询、日志查看、状态诊断、资源监控、网络服务检查等场景下的常用kubectl命令,并提供了设置别名和函数的效率优化技巧,最后给出了标准化的故障排查流程建议。

🚀 一、Pod 查询类(你现在最常用)

1️⃣ 查 Pod(模糊匹配)

kubectl get pod -n ape | grep ape-rainbow

👉 看是否存在 / 状态是否正常


2️⃣ 查 Pod + IP + Node(定位机器问题)

kubectl get pod -n ape -o wide | grep ape-rainbow

👉 排查:

  • 是否调度异常

  • 是否集中在某个 node(节点炸了)


3️⃣ 查最新 Pod(🔥高频)

kubectl get pod -n ape --sort-by=.metadata.creationTimestamp | grep ape-rainbow | tail -n 1

👉 滚动发布 / 重启后特别有用


📄 二、日志类(核心)

4️⃣ 自动查 Pod + 跟日志(你刚要的)

kubectl logs -f $(kubectl get pod -n ape | grep ape-rainbow | awk '{print $1}' | head -n 1) -n ape

5️⃣ 看最近日志(防止刷屏)

kubectl logs --tail=100 $(kubectl get pod -n ape | grep ape-rainbow | awk '{print $1}' | head -n 1) -n ape

6️⃣ 看上一个容器日志(🔥排查重启必用)

kubectl logs -p $(kubectl get pod -n ape | grep ape-rainbow | awk '{print $1}' | head -n 1) -n ape

👉 Pod 重启过才有


7️⃣ 多副本统一看日志(推荐)

kubectl logs -f -l app=ape-rainbow -n ape --max-log-requests=10

👉 前提:有 label


🧠 三、状态排查(为什么挂)

8️⃣ describe(🔥最重要)

kubectl describe pod $(kubectl get pod -n ape | grep ape-rainbow | awk '{print $1}' | head -n 1) -n ape

👉 看:

  • Events(调度失败 / 拉镜像失败)

  • OOMKilled

  • CrashLoopBackOff


9️⃣ 看 Pod 状态(筛异常)

kubectl get pod -n ape | grep -v Running

👉 快速发现异常 Pod


10️⃣ 查看重启次数

kubectl get pod -n ape | awk '{print $1, $4}'

👉 第4列是 RESTARTS


🖥 四、节点 / 资源排查

11️⃣ 查看节点资源

kubectl top node

12️⃣ 查看 Pod 资源

kubectl top pod -n ape

👉 查是否 CPU / 内存打满


🔗 五、服务 / 网络问题

13️⃣ 查看 Service

kubectl get svc -n ape

14️⃣ 查看 Endpoints(🔥判断服务是否通)

kubectl get endpoints -n ape

👉 如果是空的 = 服务挂了


15️⃣ 进入 Pod 内部排查

kubectl exec -it $(kubectl get pod -n ape | grep ape-rainbow | awk '{print $1}' | head -n 1) -n ape -- /bin/sh

👉 常用于:

  • curl 内部接口

  • 看配置


🧰 六、进阶(推荐你用)

✅ 1. 定义 alias(强烈推荐)

alias k=kubectl

之后直接:

k get pod -n ape

✅ 2. 定义函数(🔥比一行命令更爽)

klog() {
  kubectl logs -f $(kubectl get pod -n $1 | grep $2 | awk '{print $1}' | head -n 1) -n $1
}

用法:

klog ape ape-rainbow

✅ 3. 自动最新 Pod 日志(推荐)

klognew() {
  kubectl logs -f $(kubectl get pod -n $1 --sort-by=.metadata.creationTimestamp | grep $2 | tail -n 1 | awk '{print $1}') -n $1
}

🧠 给你一个排查思路(重点)

以后别死记命令,按这个顺序:

  1. Pod 在不在

    kubectl get pod
    
  2. 状态正不正常

    Running / CrashLoopBackOff / Pending
    
  3. 看日志

    kubectl logs
    
  4. 看 describe

    kubectl describe pod
    
  5. 看资源

    kubectl top
    
  6. 看网络 / svc

    endpoints / svc
    
本作品采用《CC 协议》,转载必须注明作者和本文链接
每天一点小知识,到那都是大佬,哈哈
Image
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
Image
php @ 远程
文章
99
粉丝
16
喜欢
77
收藏
88
排名:522
访问:1.6 万
私信
所有博文
社区赞助商