使用 Docker Hub 和私有镜像时出现 Kubernetes PullImageError

2024-03-20

我正在努力让 Kubernetes 使用我的私有 hub.docker.com 注册表映像。

我正在使用 kubectl 版本:Client Version: version.Info{Major:"1", Minor:"1+", GitVersion:"v1.1.0-alpha.0.1588+e44c8e6661c931", GitCommit:"e44c8e6661c931f7fd434911b0d3bca140e1df3a", GitTreeState:"clean"} Server Version: version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.3", GitCommit:"6a81b50c7e97bbe0ade075de55ab4fa34f049dc2", GitTreeState:"clean"}

和流浪者1.7.4在 Mac OS X 上Yosemite 10.10.5

我按照此处给出的说明进行操作:https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/user-guide/images.md#pre-pulling-images https://github.com/kubernetes/kubernetes/blob/release-1.1/docs/user-guide/images.md#pre-pulling-images

简而言之,它表示您应该登录注册表,然后对结果内容进行 Base64 编码.docker/config.json,并在 yaml 文档中使用它,如下所示:

apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
data:
  .dockercfg: eyAiYXV0aHMiOiB7ICJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7ICJhdXRoIjogImFXNTBjbWx1YzJsak9tSTJVVTR5Z...h1YkBpbnRyaW5zaWMud29ybGQiIH0gfSB9Cg==
type: kubernetes.io/dockercfg

然后将其提供给 kubectl。然后我使用生成的密钥(此处称为myregistrykey)在我的 pod 定义中:

apiVersion: v1
kind: Pod
metadata:
  name: authorities-backend
spec:
  containers:
    - name: authorities-backend
      image: intrinsic/authorities-backend:latest
  imagePullSecrets:
    - name: myregistrykey

and kubectl created it.

但是,kubectl 始终无法检索图像:

[root@kubernetes-master intrinsic]# kubectl get pods
NAME                  READY     STATUS           RESTARTS   AGE
authorities-backend   0/1       PullImageError   0          7m

然而 Kubernetes master 上的 docker pull 工作正常。

我缺少什么?

UPDATE

在上面的 pod 定义中,我省略了指定注册表主机,即 docker.io。修复它,它变成:image: docker.io/intrinsic/authorities-backend:latest然而,问题仍然存在。正在做kubectl get events -w让我明白: 6s 0s 2 authorities-backend Pod spec.containers{authorities-backend} Failed {kubelet 10.245.1.3} Failed to pull image "docker.io/intrinsic/authorities-backend": image pull failed for docker.io/intrinsic/authorities-backend, this may be because there are no credentials on this request. details: (Error: image intrinsic/authorities-backend:latest not found) 我知道这个秘密已经正确注册,因为我已经在下面了kubectl get secrets: NAME TYPE DATA AGE default-token-a7s5n kubernetes.io/service-account-token 2 51m myregistrykey kubernetes.io/dockercfg 1 50m

还是很迷茫...


该文档已过时,因为它引用了.dockercfg代替.docker/config.json。我会更新它。

当你使用新的.docker/config.json格式,需要设置type: kubernetes.io/dockerconfigjson代替type: kubernetes.io/.dockercfg.

支持type: kubernetes.io/dockerconfigjson在 v1.1.0 中添加,因此您的服务器支持它,但您的客户端不支持它(即 v1.1.0-alpha,早于 v1.1.0)。

当你使用type: kubernetes.io/dockerconfigjson,它应该验证您的秘密内容。

With type: kubernetes.io/dockerconfigjson,你确实想保留auths包装纸。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Docker Hub 和私有镜像时出现 Kubernetes PullImageError 的相关文章

随机推荐

  • 为什么 git revert 会抱怨缺少 -m 选项?

    所以我正在和其他人一起开发一个项目 并且有多个 github 分支正在开发中 有人刚刚修复了一个问题 我与他的分支合并 但后来我意识到我可以找到更好的解决方案 我想恢复我刚刚所做的提交 我尝试这样做git revert HEAD但它给了我这
  • 如何使用 refs/remotes 中的所有分支和标签克隆 git 存储库?

    我有一个从 svn 存储库创建的本地 git 存储库 git svn clone s svn 然后我创建了一个备份遥控器并将所有内容推送到其中 git remote add backup git myhost mybackup git gi
  • 子进程输出到 stdout 和 PIPE

    我正在使用subprocess像这样的模块 ping subprocess Popen fping exe 192 168 2 3 196 65 58 69 stdout PIPE output ping stdout readlines
  • AspectJ 的 NoSuchMethodError

    注意 这是概念实现的证明 而不是最终的事情 我有第三个 派对附加组件 我想限制他们对声音的使用 例如限制持续时间等 安全管理器不可能实现 为了实现这一点 我考虑用包装器替换 AudioSystem getLine 的返回值 这是测试方面 A
  • 如何使用 python 从 JSON 中提取特定字段和值?

    我正在迭代 JSON 我想从此对象中提取以下字段 Id 开放日期 User 票证状态 结束日期 我的数据结构如下 filtered data id 1021972 Aging Deferred Transferred Aging Open
  • MongoDB 全文搜索

    创建索引 db MyCollection createIndex text name FullTextIndex 搜索匹配项 db MyCollection find text search myWord count 结果为 1 对于具有值
  • 接口从类加载器中不可见

    我是新玩的 框架并使用 wsdl2java 工具 我正在开发一部戏 需要与 SOAP Web 服务交互的应用程序 我有 WSDL 并使用 jaxws 从它创建对象 它创建了一堆 java 类和 1 个接口 当我尝试进行 Web 服务调用时
  • 如何让R8 + proguard-android-optimize.txt + Google Drive API 无缝工作?

    这是我们的R8版本 当前版本是 1 4 94 来自 go r8bot luci r8 ci archive 0 5g74 的内部版本 390954928f0db9c3b888a367f7f128ce3bbfb160 当我从 buildTyp
  • 具有多个服务器和 php 工作人员的 Gearman

    我在多个服务器上运行的 gearman 工作人员遇到了问题 我似乎无法解决 当工作服务器脱机而不是工作进程被取消时 就会出现此问题 并导致所有其他工作进程出错和失败 仅 1 个客户和 2 个工作人员的示例 Client client new
  • 从docker容器访问主机的ssh隧道

    使用 ubuntu tusty 有一个在远程计算机上运行的服务 我可以通过 ssh 隧道通过端口转发来访问该服务localhost 9999 我有一个正在运行的 docker 容器 我需要从容器内通过主机的隧道访问该远程服务 我尝试从容器到
  • 没有 Web 应用程序服务器的 Java Web 服务

    我们有一个消息处理服务器 它 启动几个线程 处理消息 与数据库交互等 现在客户想要一个网络服务服务器在服务器上 他们将能够通过 Web 服务客户端查询消息处理服务器 例如给我今天的所有消息 或者删除带有 id 的消息 问题是 服务器只是一个
  • Meteorjs 加载消息

    我构建了应用程序 从 mongodb 加载初始数据集需要时间 我想显示加载 gif 直到数据加载完成 你能帮我做这件事吗 Use Session在 的里面onReady 的回调Meteor subscribe 函数 当订阅完成时调用 Met
  • 如何为 jQuery 选择器创建自定义函数

    如何创建一个自定义函数来附加到 jQuery 选择器 看起来像这样的东西 my class my function 您想要将该功能添加到jQuery fn 这是对 jQuery 对象原型的引用 欲了解更多详情 请查看 http docs j
  • sp_dbcmptlevel 被弃用后如何检查 SQL Server 数据库兼容性?

    根据 BOL SQL Server 联机丛书 sp dbcmptlevel http technet microsoft com en us library ms178653 aspx Microsoft SQL Server 的未来版本将
  • 按下退出按钮时最小化移动应用程序

    我正在使用 J2ME 和 LWUIT 开发移动应用程序 每当默认退出时Button 红色 在装有 symbian 操作系统的手机上按下 我希望我的应用程序最小化并且不退出 我该如何实现这一目标 根据诺基亚文档http library dev
  • Mysql - 根据顺序从另一列更新表列

    我有一个带有列的表格id name position old position 专栏old position包含用于在进行选择时定义顺序的唯一编号 但这些数字不是连续的 即使已订购 例如 2 12 11 14 20 35 45 28 我想要
  • Sqlite 应用内数据库迁移的最佳实践

    我在 iPhone 上使用 sqlite 我预计数据库架构可能会随着时间的推移而改变 每次成功迁移有哪些陷阱 命名约定和需要注意的事项 例如 我考虑过在数据库名称后附加一个版本 例如 Database v1 我维护的应用程序需要定期更新 s
  • Python生成特定长度的唯一范围并对它们进行分类

    我有一个数据框列 它指定用户执行某项活动的次数 例如 gt gt gt df ActivityCount Users ActivityCount User0 220 User1 190 User2 105 User3 109 User4 2
  • 带逗号和小数的 Jquery 掩码数字

    我正在使用 Jquery mask 插件来格式化我网站上的许多内容 并且我正在尝试弄清楚如何让它以我需要的方式格式化数字 我正在使用以下插件 https igorescobar github io jQuery Mask Plugin ht
  • 使用 Docker Hub 和私有镜像时出现 Kubernetes PullImageError

    我正在努力让 Kubernetes 使用我的私有 hub docker com 注册表映像 我正在使用 kubectl 版本 Client Version version Info Major 1 Minor 1 GitVersion v1