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 pods,k logs ...,效率翻倍。

相关推荐
分布式存储与RustFS5 分钟前
机器要下线,数据先线上搬家:RustFS 存储池退役实操
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
96245619 分钟前
一次 Dell PowerEdge R750xs 启动故障复盘:从 iDRAC 带外管理到 Linux 多内核回退与 initramfs 重建
linux·运维·服务器
Flynn Liang1 小时前
MQTT 共享订阅$share/原理:怎么用它给消费端水平扩容做负载均衡
运维·物联网·mqtt·iot·mqtt broker
海宇AI1 小时前
零信任架构实战:基于海宇行驶OCR证识别构建自动化租车车队行驶证电子档案网关
运维·人工智能·架构·自动化·1024程序员节
北京中科新远科技2 小时前
高速接口兼容排查实战:OSFP、QSFP112与QSFP56如何逐层验证
linux·运维·网络
Ruiery2 小时前
Linux 6.6内核 CPU 深度解析(零):x86 内核引导协议 — 从 bootloader 到 main()
linux·运维·服务器
Ruiery2 小时前
Linux 6.6内核 CPU 深度解析(十六):x86 保护机制 — 从 ring 到页表的权限防线
linux·运维·服务器
不老刘2 小时前
异构双 Agent 协同:构建无人值守的长任务自动化研发流水线
运维·人工智能·自动化·ai编程·1024程序员节
织码weavecodes3 小时前
医疗、零售、物业培训怎么落地?织码在线教育系统的三类行业案例
运维·服务器·零售
智能运维指南3 小时前
企业运维监控平台哪家好?2026年五大全栈可观测方案对比与选型推荐
大数据·运维·人工智能