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

相关推荐
ai小陈10 小时前
GPU服务器租用存储验收:检查点写入与磁盘吞吐实战
运维·服务器·人工智能·ai·ssh·gpu算力
有毒的教程13 小时前
VMware仅主机模式:物理机 ↔ 虚拟机 文件共享
运维
山岚的运维笔记15 小时前
ComfyUI NVIDIA安装教程:官方便携版下载+run_nvidia_gpu.bat启动,8G显存Windows实操
运维·服务器·windows·笔记·prompt·aigc·comfyui
海宇大数据16 小时前
零信任架构实战:基于海宇活体识别V步骤1构建自动化远程公证会话初始化网关
运维·人工智能·架构·自动化
lisanmengmeng16 小时前
Nagios邮件报警的配置
linux·运维·服务器
Ruiery16 小时前
Linux 6.6内核 CPU 深度解析(六):cpufreq
linux·运维·服务器
天远数科17 小时前
零信任架构实战:基于天远全能消金报告构建自动化消费分期网关
运维·人工智能·架构·自动化
硅基手札17 小时前
【linux内核专栏 08】时间与定时器
linux·运维·服务器
想做小南娘,发现自己是女生喵18 小时前
Linux之Ubuntu入门篇知识总结
linux·运维·服务器
帷幕落秋18 小时前
Redis哨兵模式
运维·数据库