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

如何创建imagePullSecret适配使用私有镜像的deployment.yaml?

解决私有镜像仓库拉取失败(ImagePullBackOff)的方案

要解决这个问题,你需要分两步操作:先创建用于私有仓库认证的imagePullSecret资源,再在你的Deployment配置中引用这个Secret。

1. 创建imagePullSecret

直接用kubectl命令生成Secret是最快捷的方式,无需单独编写配置文件:

kubectl create secret docker-registry my-private-reg-secret \
  --docker-server=你的私有仓库地址(例如:registry.yourdomain.com) \
  --docker-username=你的仓库登录用户名 \
  --docker-password=你的仓库登录密码 \
  --docker-email=你的联系邮箱
  • my-private-reg-secret是你给这个Secret起的自定义名称,后续要在Deployment里复用这个名字
  • 替换命令里的仓库地址、用户名、密码、邮箱为你实际的私有仓库信息

如果一定要用YAML文件创建Secret,需要先把认证信息转换成Base64编码,再编写如下配置文件(命名为secret.yaml):

apiVersion: v1
kind: Secret
metadata:
  name: my-private-reg-secret
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: 此处填入Base64编码后的Docker认证配置内容

生成Base64编码的认证内容可以用这条命令:

echo '{"auths":{"registry.yourdomain.com":{"username":"你的用户名","password":"你的密码","email":"你的邮箱","auth":"'$(echo -n "用户名:密码" | base64)'"} } }' | base64

完成后执行kubectl apply -f secret.yaml即可创建Secret。

2. 在Deployment中引用imagePullSecret

修改你现有的deployment.yaml,在Pod模板的spec字段下添加imagePullSecrets配置,示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-deployment-name
spec:
  replicas: 1
  selector:
    matchLabels:
      app: your-app-label
  template:
    metadata:
      labels:
        app: your-app-label
    spec:
      # 添加这部分引用配置
      imagePullSecrets:
        - name: my-private-reg-secret  # 填入你刚才创建的Secret名称
      containers:
      - name: your-container-name
        image: registry.yourdomain.com/your-image:tag  # 你的私有镜像地址

修改完成后执行kubectl apply -f deployment.yaml更新Deployment,新创建的Pod就会使用这个Secret完成私有镜像的拉取认证。

总结:imagePullSecret是独立的Kubernetes Secret资源,不需要直接作为Deployment的字段写死,而是通过在Deployment的Pod模板中引用已创建的Secret来实现认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:25:21