k8s工作运维中常用命令

一、 每日必用(查看状态)

这些命令用于日常巡检,看服务活着没。

命令 作用 场景/技巧

命令 作用 场景/技巧
kubectl get pods 查看 Pod 列表 最基础。技巧:加 -o wide 可以看到 Pod 在哪个 Node 上以及它的 IP。
kubectl get svc 查看 Service 列表 查看 Service IP 和端口映射。
kubectl get nodes 查看节点状态 确认机器是不是 Ready。技巧:加 -L topology.kubernetes.io/zone 可以直接看到节点在哪个区 (b/c/d)。
kubectl get ing 查看 Ingress 如果你用了 Ingress,这里看入口 IP。
kubectl top pod 查看 Pod 资源占用 查看 CPU/内存 谁高谁低。
kubectl top node 查看 节点 资源占用 看看是不是某台机器快被撑爆了。

💡 重点参数:

  • -n <namespace>: 指定命名空间(如你的 -n xxx)。
  • -A: 查看所有命名空间(All namespaces)。
  • -w: 持续监控变化(Watch),比如 kubectl get pods -w,看着 Pod 从 Creating 变 Running。

二、 排查神器(找 Bug 核心)

当你发现服务不对劲(连不上、报错、重启)时,用这组命令。

1.显微镜:describe

这是 K8s 里最重要的命令,没有之一。

// 查看 Pod 为什么起不来,或者为什么 Readiness 失败

kubectl describe pod <pod-name> -n <namespace>

  • 看哪里 :拉到最下面的 Events 部分。镜像拉取失败、健康检查不过、资源不足都在这写着。

#查看 Service 流量分发给谁了

kubectl describe svc <service-name> -n <namespace>

  • 看哪里 :看 Endpoints 这一行。如果是 None 或者 IP 很少,说明 Service 找不到 Pod。

2. 查日志:logs

#查看当前日志

kubectl logs <pod-name> -n <namespace>

#实时追踪日志(像 Linux 的 tail -f)

kubectl logs -f <pod-name> -n <namespace>

#【高阶】查看"上一次"崩溃前的日志

kubectl logs <pod-name> --previous -n <namespace>

  • 场景 :如果 Pod 陷入 CrashLoopBackOff(反复重启),直接看当前日志可能什么都没有,用 --previous 能看到它死前最后吐了什么错。

3. 登录容器:exec

就像 SSH 进虚拟机一样,进去手动测连通性。

#进入容器内部

kubectl exec -it <pod-name> -n <namespace> -- /bin/bash

#或者 (如果镜像里没有 bash)

kubectl exec -it <pod-name> -n <namespace> -- /bin/sh

  • 进去干嘛curl localhost:8080 测接口,或者 ping 数据库地址,验证网络通不通。

4. 配置文件导出:get -o yaml

#把线上的配置导出成 yaml 文件,方便对比

kubectl get pod <pod-name> -n <namespace> -o yaml > my-pod.yaml

三、 救火操作(修复与重启)

1. 优雅重启

不需要删除 Pod,让 K8s 逐个重启(滚动更新)。

#重启某个 Deployment 下的所有 Pod

kubectl rollout restart deployment/<deployment-name> -n <namespace>

2. 暴力删除

删掉 Pod,让控制器自动拉一个新的(常用于卡死状态)。

kubectl delete pod <pod-name> -n <namespace>

#【慎用】如果卡在 Terminating 删不掉,强制删除

kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force

3. 临时修改

直接在线编辑配置,保存即生效(用于快速验证参数)。

kubectl edit svc <service-name> -n <namespace>

4. 扩缩容

流量突然来了,手动加机器。

kubectl scale deployment <deployment-name> --replicas=5 -n <namespace>

四、 排查流程总结

遇到问题可以按这个顺序敲命令:

  1. 看宏观
    kubectl get pods -n dayzero -o wide
    (看是不是有的 Running 有的 Pending,IP 分配了没,在哪个节点)
  2. 看资源
    kubectl top pods -n dayzero
    (看是不是有的忙死,有的闲死)
  3. 看细节(关键)
    kubectl describe pod <那个闲死的Pod> -n dayzero
    (看 Events 有没有 Readiness probe failed)
  4. 看网络端点
    kubectl get endpoints <service-name> -n dayzero
    (确认 Service 纳管了这个 IP 没)
  5. 看日志
    kubectl logs <那个闲死的Pod> -n dayzero
    (看有没有报错)

五、 懒人技巧 (Alias)

每次都敲 kubectl 太累了,建议在你的终端配置文件(.bashrc 或 .zshrc)里加上这行:

alias k='kubectl'

以后就可以:k get podsk logs ...,效率翻倍。

相关推荐
电商API_180079052476 小时前
京东商品详情API技术文章
大数据·运维·人工智能·网络爬虫
三言老师7 小时前
秘诀-如何远程SSN访问家里的八台电脑(frp 实操方案)
linux·运维·ssh
BTU_YC8 小时前
Docker Compose 部署 DozerDB 完整教程
运维·docker·容器
流烟默9 小时前
Kubernetes 调度器完全指南:从原理到生产实战
云原生·容器·kubernetes
RisunJan11 小时前
Linux命令-scriptreplay(终端会话回放)
linux·运维·chrome
x²+(y-√³x²)²=112 小时前
Linux打包文件到Windows,文件/文件类型丢失
linux·运维·windows
世人万千丶12 小时前
去重插入与超限淘汰:ArkTS 实现鸿蒙搜索历史的 LIMIT 艺术
运维·服务器·学习·华为·harmonyos·鸿蒙
未来之窗软件服务12 小时前
企业自动化运营-电子合同预览-东方仙盟
运维·自动化·仙盟创梦ide·东方仙盟
流烟默12 小时前
Kubernetes Service 完全指南:从原理到生产实战
云原生·容器·kubernetes
airobotcn12 小时前
智能巡检平台容器化部署:Docker+K8s在工业边缘的实践
人工智能·docker·容器·kubernetes·机器人·自动化