You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fedora环境Minikube部署MongoDB遇ImagePullBackOff错误求助

解决Minikube部署MongoDB的ImagePullBackOff错误

问题场景

在Fedora机器上使用Minikube部署MongoDB实例时,持续出现ImagePullBackOff错误。

部署YAML配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongodb-deployment
  labels:
    app: mongodb
spec:
 replicas: 1
 selector:
   matchLabels:
     app: mongodb
 template: 
  metadata:
    labels:
      app: mongodb
  spec:
    containers:
      - name: mongodb
        image: mongo
        ports:
            - containerPort: 27017
        env:
           - name: MONGO_INITDB_ROOT_USERNAME
             valueFrom:
              secretKeyRef:
                 name: mongodb-secret
                 key: mongo-root-username
           - name: MONGO_INITDB_ROOT_PASSWORD
             valueFrom:
              secretKeyRef:
                 name: mongodb-secret
                 key: mongo-root-password

---
apiVersion: v1
kind: Service
metadata:
   name: mongodb-service
spec:
  selector:
      app: mongodb
  ports:
     - protocol: TCP
       port: 27017
       targetPort: 27017

已尝试的排查动作

  • 多次执行docker pull mongo、minikube image pull mongo、minikube image pull mongo-express拉取镜像
  • 多次重启Docker和Minikube
  • 在浏览器和终端登录DockerHub
  • 执行docker login后修改/etc/resolv.conf添加nameserver 8.8.8.8,并重启Docker

Pod描述信息(kubectl describe pod输出)

Name:         mongodb-deployment-6bf8f4c466-85b2h
Namespace:    default
Priority:     0
Node:         minikube/192.168.49.2
Start Time:   Mon, 29 Aug 2022 23:04:12 +0530
Labels:       app=mongodb
          pod-template-hash=6bf8f4c466
Annotations:  <none>
Status:       Pending
IP:           172.17.0.2
IPs:
  IP:           172.17.0.2
Controlled By:  ReplicaSet/mongodb-deployment-6bf8f4c466
Containers:
 mongodb:
   Container ID:   
   Image:          mongo
   Image ID:       
   Port:           27017/TCP
   Host Port:      0/TCP
   State:          Waiting
     Reason:       ImagePullBackOff
   Ready:          False
   Restart Count:  0
   Environment:
     MONGO_INITDB_ROOT_USERNAME:  <set to the key 'mongo-root-username' in secret 'mongodb-secret'>  
     Optional: false
     MONGO_INITDB_ROOT_PASSWORD:  <set to the key 'mongo-root-password' in secret 'mongodb-secret'>  
     Optional: false
   Mounts:
      
     /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-vlcxl (ro)
  Conditions:
       Type              Status
       Initialized       True 
       Ready             False 
       ContainersReady   False 
       PodScheduled      True 
  Volumes:
     kube-api-access-vlcxl:
     Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                         node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason          Age                  From               Message
  Normal   Scheduled       22m                  default-scheduler  Successfully assigned default/mongodb-deployment-6bf8f4c466-85b2h to minikube
  Warning  Failed          18m (x2 over 20m)    kubelet            Failed to pull image "mongo:latest": rpc error: code = Unknown desc = context deadline exceeded
  Warning  Failed          18m (x2 over 20m)    kubelet            Error: ErrImagePull
  Normal   BackOff         17m (x2 over 20m)    kubelet            Back-off pulling image "mongo:latest"
  Warning  Failed          17m (x2 over 20m)    kubelet            Error: ImagePullBackOff
  Normal   Pulling         17m (x3 over 22m)    kubelet            Pulling image "mongo:latest"
  Normal   SandboxChanged  11m                  kubelet            Pod sandbox changed, it will be killed and re-created.
  Normal   Pulling         3m59s (x4 over 11m)  kubelet            Pulling image "mongo:latest"
  Warning  Failed          2m (x4 over 9m16s)   kubelet            Failed to pull image "mongo:latest": rpc error: code = Unknown desc = context deadline exceeded
  Warning  Failed          2m (x4 over 9m16s)   kubelet            Error: ErrImagePull
  Normal   BackOff         83s (x7 over 9m15s)  kubelet            Back-off pulling image "mongo:latest"
  Warning  Failed          83s (x7 over 9m15s)  kubelet            Error: ImagePullBackOff

解决方法

从事件日志的context deadline exceeded错误来看,核心问题是Minikube节点无法正常访问Docker Hub,导致镜像拉取超时。按以下步骤处理:

  1. 检查Minikube节点的网络连通性

    • 进入Minikube节点:minikube ssh
    • 测试DNS解析:nslookup hub.docker.com,若无法解析,说明节点DNS配置异常
    • 测试网络连接:curl -I https://hub.docker.com,若超时,说明节点出站网络受限
  2. 配置Minikube使用自定义DNS或代理

    • 启动Minikube时指定公共DNS:
      minikube start --dns=8.8.8.8
      
    • 若宿主机需代理访问外网,启动时传入代理参数:
      minikube start --docker-env HTTP_PROXY=http://你的代理地址:端口 --docker-env HTTPS_PROXY=http://你的代理地址:端口 --docker-env NO_PROXY=192.168.49.0/24,192.168.99.0/24
      
  3. 手动将镜像加载到Minikube节点

    • 宿主机拉取镜像:docker pull mongo
    • 拷贝镜像到Minikube节点:minikube image load mongo
    • 重新部署:kubectl apply -f 你的部署文件.yaml
  4. 检查防火墙与SELinux设置

    • 临时关闭SELinux测试:sudo setenforce 0,若问题解决,再配置对应的SELinux规则
    • 开放防火墙伪装规则:sudo firewall-cmd --add-masquerade --permanent && sudo firewall-cmd --reload

内容的提问来源于stack exchange,提问作者DevOpsnoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 13:45:49