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

相关推荐
挖土机_0082 分钟前
Kubernetes 1.35 原地扩容(In-Place Pod Resize)完整解析:机制、差异与实战示例
docker·kubernetes
AOwhisky16 分钟前
Linux逻辑卷管理:从“固定隔间”到“弹性存储池”的智慧
linux·运维·服务器
05大叔1 小时前
大事件Day02
运维·服务器
五仁火烧1 小时前
Vue3 项目的默认端口行为
服务器·vue.js·nginx·容器·vue
C Yu小白2 小时前
Linux系统调用与文件操作详解
linux·运维·服务器
ZFB00012 小时前
【麒麟桌面系统】V10-SP1 2503 系统知识——常见用户组简介
linux·运维·kylin
acrelgxy2 小时前
告别被动抢修与盲目巡检!安科瑞运维云平台,让电力系统实现预测性守护。
运维·电力监控系统·智能电力仪表
EndingCoder2 小时前
类的继承和多态
linux·运维·前端·javascript·ubuntu·typescript
Anyexyz2 小时前
【更新】境内 Docker 镜像状态监控——配置生成,一键复制!
运维·docker·容器
信创天地3 小时前
深耕金融政务核心场景:国产化数据库迁移的全流程架构设计与风险管控
运维·网络安全·系统架构·系统安全·运维开发