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

Kubectl查看Pod显示ErrImageNeverPull错误:MySQL Kubernetes部署问题求助

解决Kubernetes Pod状态为0/1 ErrImageNeverPull的问题

首先咱们拆解下这个错误的核心原因:你的Deployment配置里设置了imagePullPolicy: Never,这个参数的作用是完全禁止从远程镜像仓库拉取镜像,只能使用本地已经存在的镜像。但显然你的Docker环境里还没有mysql:5.6这个镜像,所以Pod启动时找不到镜像就报错了。

另外我还发现一个潜在的配置问题:你的Secret名字是kazi-db,但Deployment里引用的Secret名称是db-secret,这个不匹配的问题后续也会导致Pod启动失败,我会一起给出解决方法。

方法一:如果你确实要使用本地镜像(不想从Docker Hub拉取)

  • 第一步,先在你的Docker环境中拉取mysql:5.6镜像:
    docker pull mysql:5.6
    
  • 第二步,删除当前处于错误状态的Pod,让Deployment自动重新创建一个新Pod:
    kubectl delete pod kazi-db-758b978ccc-7m29n
    
  • 第三步,等待片刻后用kubectl get pods查看状态,Pod应该就能正常启动了。

方法二:允许从远程仓库拉取镜像(更适合大多数场景)

  • 第一步,修改你的deployment.yml文件中的imagePullPolicy配置,推荐改成IfNotPresent(优先使用本地镜像,本地没有时再从远程拉取):
    containers:
    - image: mysql:5.6
      name: mysql
      imagePullPolicy: IfNotPresent  # 替换原来的Never
      # 其他配置保持不变
    
  • 第二步,重新应用Deployment配置:
    kubectl apply -f deployment.yml
    
  • 第三步,同样删除错误状态的Pod,让Deployment重新创建Pod:
    kubectl delete pod kazi-db-758b978ccc-7m29n
    

必须修正的Secret名称不匹配问题

你的Secret配置文件db-secret.yml中,Secret的名字是kazi-db,但Deployment里引用的Secret名称是db-secret,这会导致Pod无法获取到MySQL的root密码,进而启动失败。你需要二选一修改:

选项1:修改Deployment中的Secret引用

把deployment.yml里的secretKeyRef.name改成kazi-db:

env:
- name: MYSQL_ROOT_PASSWORD
  valueFrom:
    secretKeyRef:
      name: kazi-db  # 原来的是db-secret,改成kazi-db
      key: password

然后重新应用配置:kubectl apply -f deployment.yml

选项2:修改Secret的名称

把db-secret.yml里的metadata.name改成db-secret:

apiVersion: v1
kind: Secret
metadata:
  name: db-secret  # 原来的是kazi-db,改成db-secret
type: kubernetes.io/basic-auth
stringData:
  password: xcvas

然后重新应用Secret配置:kubectl apply -f db-secret.yml

完成以上步骤后,你的MySQL Pod应该就能正常启动并运行了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 08:38:06