K8s常用命令和分析

🧩 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
    
    
  • 尝试修改镜像标签触发错误,再用上面的分析步骤排查。


📚 参考资料


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容