一、OOMKilled(内存溢出)

核心原因

Pod 使用的内存超过了配置的resources.limits.memory上限,K8s 的 OOM Killer(内存杀手)直接杀死容器,就像手机 APP 占内存太多被系统强制关闭。

常见场景(你的 Ollama 最易触发)
  1. Ollama 加载大模型(比如 qwen2.5:7b),内存占用超过限制;
  2. Pod 没设置内存限制,把节点内存占满,被节点 OOM Killer 清理;
  3. 容器内进程异常(比如死循环),疯狂吃内存。
排查步骤

# 1. 查看Pod事件,确认OOM原因
kubectl describe pod -n ai-services <pod名> | grep -i oom

# 2. 查看Pod内存使用情况
kubectl top pod -n ai-services <pod名>
解决方法(按优先级)
  1. 临时重启 Podkubectl delete pod -n ai-services <pod名>
  2. 调高内存限制(最有效):

    # 在ollama.yaml的containers里加/改
    resources:
      limits:
        memory: "2Gi"  # 从1Gi调高到2Gi,根据模型大小调整
      requests:
        memory: "1Gi"
    
  3. 换小模型:比如用 qwen2.5:1.5b(784MB)代替 7b 版本(4GB+);
  4. 检查进程异常kubectl exec -it -n ai-services <pod名> -- top,看是否有异常进程。

二、CrashLoopBackOff(容器崩溃后反复重启)

核心原因

容器启动后很快退出(退出码非 0),K8s 反复尝试重启,但一直失败,进入 “崩溃 - 重启” 循环。

常见场景
  1. 容器内程序启动失败(比如 Ollama 配置错误、模型损坏);
  2. 容器启动命令错误(比如写错command/args);
  3. 依赖的服务不可用(比如 Ollama 连不上存储);
  4. 先触发 OOMKilled,进而导致 CrashLoopBackOff。
排查步骤

# 1. 查看Pod日志,找崩溃原因(最关键)
kubectl logs -n ai-services <pod名> --previous  # 看上一次崩溃的日志

# 2. 查看Pod重启次数和状态
kubectl get pods -n ai-services <pod名>
# 输出中RESTARTS列>0就是反复重启
解决方法
  1. 查看日志定位问题:比如 Ollama 日志显示 “model not found”,重新拉取模型;
  2. 检查启动命令:确保容器启动命令正确(Ollama 默认启动命令是ollama serve,不用改);
  3. 修复程序本身:比如模型损坏就kubectl exec -it <pod名> -n ai-services -- ollama pull qwen2.5:1.5b
  4. 清理无效配置:比如挂载的存储卷不存在,先删除卷挂载。

三、ImagePullBackOff(镜像拉取失败)

核心原因

K8s 无法从镜像仓库拉取指定的容器镜像,反复尝试后进入 “拉取失败 - 重试” 状态。

常见场景
  1. 镜像地址错误(比如写了ollama/ollama:latest1,正确是ollama/ollama:latest);
  2. 镜像仓库不可达(比如节点没外网,拉取不到 Docker Hub 的镜像);
  3. 私有镜像需要认证(没配置 imagePullSecrets);
  4. 镜像标签不存在(比如拉取ollama/ollama:v1.0,但仓库没有这个标签)。
排查步骤

# 1. 查看Pod事件,找拉取失败原因
kubectl describe pod -n ai-services <pod名> | grep -i imagepull

# 2. 手动在节点测试拉取镜像
docker pull ollama/ollama:latest
解决方法
  1. 检查镜像地址:确保image字段正确(比如ollama/ollama:latest);
  2. 解决网络问题:给节点配置外网 / 代理,或使用内网镜像仓库;
  3. 配置镜像认证:如果是私有镜像,创建 imagePullSecrets 并关联到 Pod;
  4. 使用存在的标签:优先用latest或确认存在的版本标签。

总结

  1. OOMKilled:内存不够用,核心是调高内存限制 / 换小模型;
  2. CrashLoopBackOff:容器启动就崩,核心是看日志找程序错误;
  3. ImagePullBackOff:镜像拉取不到,核心是检查镜像地址 / 网络 / 认证。

这三个错误里,你的 Ollama 最容易触发OOMKilled→CrashLoopBackOff 连锁反应,优先检查内存限制和模型大小即可解决。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐