Kubernetes中无法拉取Mongo镜像问题求助
解决Kubernetes中MongoDB镜像拉取超时问题
问题场景
Deployment清单
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
错误信息
Failed to pull image "mongo": rpc error: code = Unknown desc = context deadline exceeded Warning Failed 13s kubelet Error: ErrImagePull Normal BackOff 13s kubelet Back-off pulling image "mongo" Warning Failed 13s kubelet Error: ImagePullBackOff
排查与解决步骤
验证节点网络连通性
登录到Kubernetes集群的工作节点,执行以下命令测试Docker Hub的连通性:curl -I https://registry-1.docker.io再尝试手动拉取镜像,确认是否是网络问题:
docker pull mongo如果手动拉取也超时,说明节点无法正常访问Docker Hub,需要解决网络连通问题(比如检查防火墙、代理配置)。
更换国内镜像源
由于Docker Hub在国内访问可能不稳定,修改Deployment中的image字段为国内可信镜像源,比如阿里云镜像:image: registry.cn-hangzhou.aliyuncs.com/google_containers/mongo:latest修改后重新应用Deployment:
kubectl apply -f your-deployment-file.yaml配置节点镜像加速
在K8s工作节点上配置Docker镜像加速,编辑/etc/docker/daemon.json文件(如果不存在则创建):{ "registry-mirrors": ["https://<你的阿里云镜像加速地址>.mirror.aliyuncs.com"] }重启Docker和kubelet服务:
systemctl restart docker systemctl restart kubelet检查节点资源状态
查看节点是否有足够的CPU、内存资源来拉取和运行镜像:kubectl describe node <节点名称>如果节点资源不足,需要释放资源或扩容节点。
确认镜像拉取Secret(若使用私有仓库)
如果你的镜像仓库是私有仓库,需要创建对应的imagePullSecret,并在Deployment的spec.template.spec中添加:imagePullSecrets: - name: <你的镜像拉取Secret名称>
内容的提问来源于stack exchange,提问作者Leon Mahbub
相关产品推荐
相关产品推荐

