🧩 Kubernetes 常用命令与问题分析思路
🏁 一、前言
使用 Kubernetes(K8s)时最常见的问题就是——
“命令太多,查问题时不知道从哪开始。”
其实,K8s 的命令有固定逻辑,只要掌握核心结构与排查思路,就能迅速定位问题。
⚙️ 二、kubectl 的基本结构
Kubernetes 的命令行工具是 kubectl,几乎所有命令都遵循以下格式:
kubectl <动词> <资源类型> <资源名> [选项]
例如:
kubectl get pods
kubectl describe pod my-app
kubectl delete pod my-app
只要记住这个结构,就能理解大部分命令。
📘 三、常用命令速查表
| 操作目的 | 命令示例 | 说明 |
|---|---|---|
| 查看所有命名空间 | kubectl get ns |
列出所有 namespace |
| 查看 Pod | kubectl get pods -A |
查看所有命名空间下的 Pod |
| 查看 Deployment | kubectl get deploy -n <namespace> |
查看指定命名空间下的 Deployment |
| 查看详细信息 | kubectl describe pod <pod-name> -n <namespace> |
查看 Pod 的事件、镜像、节点等详细信息 |
| 查看 Pod 日志 | kubectl logs <pod-name> -n <namespace> |
查看标准输出日志 |
| 持续查看日志 | kubectl logs -f <pod-name> |
动态查看实时日志 |
| 进入容器 | kubectl exec -it <pod-name> -- /bin/bash |
进入容器执行命令 |
| 删除 Pod | kubectl delete pod <pod-name> -n <namespace> |
强制重启 Pod(常用调试手段) |
| 查看节点状态 | kubectl get nodes -o wide |
查看节点 IP、状态、角色 |
| 应用配置文件 | kubectl apply -f <file>.yaml |
创建或更新资源 |
| 删除配置资源 | kubectl delete -f <file>.yaml |
删除资源 |
🔍 四、分析问题的常见思路
当 K8s 服务出现异常时,可以按照以下五个步骤分析:
1️⃣ 确认资源存在
kubectl get pods -A
确认 Pod 是否正常运行,以及是否被调度到正确的节点上。
2️⃣ 查看事件详情
kubectl describe pod <pod-name> -n <namespace>
重点关注:
Events(事件)
Conditions(状态)
ImagePullError / CrashLoopBackOff 等关键字
3️⃣ 查看容器日志
kubectl logs <pod-name> -n <namespace>
如果有多个容器:
kubectl logs <pod-name> -c <container-name> -n <namespace>
这里可以看到应用本身的报错信息。
4️⃣ 进入容器内部
kubectl exec -it <pod-name> -- /bin/bash
排查配置文件、环境变量或连接性问题(如 ping 数据库、查看配置)。
5️⃣ 从上层到下层追踪
如果服务间依赖较多,可按层次分析:
Ingress → Service → Deployment → Pod → Node
每一层都可用以下命令验证:
kubectl get <资源类型> -A
找出异常环节再深入查看。
🧭 五、实战小技巧
-
使用
-o wide查看更多信息(如 IP、节点):kubectl get pods -o wide -
使用
watch动态观察变化:watch kubectl get pods -
结合
grep过滤关键字:kubectl get pods -A | grep backend -
快速重启某个 Pod:
kubectl delete pod <pod-name> -n <namespace>值得说明的是,因为管理器的存在,这里删除只是停止当前pod,会被管理器配置的最少容器数量给自动拉起来。
📈 六、总结
K8s 的命令看似复杂,其实只要掌握:
“get / describe / logs / exec / delete” 五大动作;
Pod → Service → Deployment → Node 四层结构;
再加上系统化的分析思路,就能快速解决大多数问题。
记住:Kubernetes 的命令行不是背出来的,而是逻辑推出来的。
💡 推荐练习
-
手动部署一个 Nginx Pod 并查看日志:
kubectl run nginx --image=nginx kubectl get pods kubectl logs nginx 尝试修改镜像标签触发错误,再用上面的分析步骤排查。