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

相关推荐
Leinwin3 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
2401_865382503 小时前
信息化项目运维与运营的区别
运维·运营·信息化项目·政务信息化
漠北的哈士奇3 小时前
VMware Workstation导入ova文件时出现闪退但是没有报错信息
运维·vmware·虚拟机·闪退·ova
如意.7593 小时前
【Linux开发工具实战】Git、GDB与CGDB从入门到精通
linux·运维·git
运维小欣3 小时前
智能体选型实战指南
运维·人工智能
yy55273 小时前
Nginx 性能优化与监控
运维·nginx·性能优化
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ4 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
05大叔6 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密6 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi20156 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑