首页/云/Kubernetes 速查/docker-registry 类型 Secret 结构
配置与存储54 条

docker-registry 类型 Secret 结构

docker-registry Secret 的内容与 ~/.docker/config.json 同构:auths 下按仓库地址存 base64 的「用户:密码」,排障时可解码核对。

Kubernetes 速查云更新于 2026-10-13

docker-registry Secret 里面是什么

这类 Secret(类型 kubernetes.io/dockerconfigjson)的内容与 docker 客户端的 config.json 同构:auths 下按仓库地址分组,每项里的 auth 是「用户名:密码」再做 base64 得到的字符串。kubelet 拉取私有镜像时读取它完成认证。也正因结构透明,排障方式很直接:取出 .dockerconfigjson 字段、base64 解码,核对仓库地址、用户名与密码是否正确。

基本信息

Secret 类型kubernetes.io/dockerconfigjson
数据键.dockerconfigjson,值是 base64 编码的 JSON
内容结构auths → 仓库地址 → auth(base64 的 用户名:密码)
创建方式kubectl create secret docker-registry,或用 --from-file=.dockerconfigjson 导入
权限建议只授权能拉取的目标仓库,避免使用个人账号

典型使用场景

  • 拉取私有镜像:为工作负载提供仓库认证凭据
  • 多仓库支持:一份 config.json 里包含多个仓库的认证信息
  • 凭据轮换:仓库密码更新后同步替换 Secret 内容
  • 故障定位:解码核对内容,判断是凭据问题还是网络问题
  • 权限收敛:为 CI 或运维单独创建只读拉取权限的机器人账号

解码核对

解码核对
kubectl get secret regcred -n prod -o jsonpath='{.data.\.dockerconfigjson}' | base64 -d
kubectl get secret regcred -n prod -o jsonpath='{.type}'
kubectl describe pod web-x -n prod | grep -i -A2 'Failed to pull'   # 拉取失败的具体报错
kubectl get events -n prod --field-selector reason=Failed --sort-by=.lastTimestamp | tail

从现有文件创建

从现有文件创建
kubectl create secret generic regcred -n prod \
  --from-file=.dockerconfigjson=$HOME/.docker/config.json \
  --type=kubernetes.io/dockerconfigjson
kubectl create secret docker-registry regcred -n prod \
  --docker-server=registry.example.com \
  --docker-username=robot$pull --docker-password=<密码> --docker-email=ops@example.com

内容字段与排错提示

字段含义排错提示
auths按仓库地址分组的认证项地址必须与镜像引用中的仓库完全一致,含端口
authbase64 后的用户名与密码手工拼接容易漏补结尾等号或混入换行
多仓库项一份文件可包含多个仓库整体导入时确认目标仓库都在其中
手工拼 JSON 时常见错误是 base64 少写结尾的等号或带入换行:这类问题会让认证失败,而 kubelet 的报错比较笼统,容易把方向引向网络排查。
这类 Secret 等价于仓库密码:排查凭据泄漏时先确认哪些主体能读取它,并尽量使用只具备拉取权限的机器人账号而不是个人账号。
排查顺序建议固定为:先看 Pod 事件里的拉取报错文本,再解码核对 Secret 内容,最后才怀疑仓库或网络;多数拉取失败在第二步就能定位,能省下大量无效尝试。

易错点

  • 仓库地址与镜像引用不一致(尤其是带端口或路径前缀):认证失败,表现为镜像拉取一直失败
  • 使用个人账号且密码轮换后忘记更新:某天开始新 Pod 全部拉取失败,而老 Pod 仍正常
  • Secret 读取权限开得过宽:多团队可见即多团队可用,凭据泄漏面扩大
  • 手工构造 base64 出错:报错信息笼统,排查容易跑偏到网络与仓库可用性上

数据来源与参考

  • Kubernetes 官方文档 · Pull an Image from a Private Registry
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌