当前位置: 首页 > 面试题库 >

Kubernetes PullImageError使用带有私有映像的Docker Hub

黄成荫
2023-03-14
问题内容

我正在努力让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.4Mac OS X上的VagrantYosemite 10.10.5

我按照此处给出的说明进行操作: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

然后kubectl create把它

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

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

码头工人拉上Kubernetes大师工作了。

我想念什么?

在上面的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/dockerconfigjsonv1.1.0的支持已添加,因此服务器支持,但客户端不支持(v1.1.0-alpha早于v1.1.0)。

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

使用type: kubernetes.io/dockerconfigjson,您确实希望保留auths包装。



 类似资料:
  • 问题内容: 我创建了两个Docker容器。第一个提供专用的Docker注册表,第二个提供官方Docker注册表的镜像: 现在,我想将两者结合起来。每当用户 提取 图像时,都应首先查询私有注册表,然后查询镜像。当图像被 推送时, 它们仅应被推送到私有注册表。 我不知道如何做到这一点。任何帮助表示赞赏。 问题答案: 您不能仅仅强制所有 docker push 命令推送到您的私有注册表。原因之一是您可以

  • 我正在尝试加强我对asyncTask的了解,所以我按照教程下载了一个图像,但我不明白,我得到了一个错误的ArrayOutofBound索引,所以如果有人告诉我原因这里是代码,请告诉我为什么他迭代进度条最大 下面是堆栈跟踪01-20 03:37:40.607 407 5-4096/com.gamecodeschool.bodybuilder E/AndroidRuntime:致命异常:AsyncTa

  • 问题内容: 我正在使用shippable将私有docker映像推送到Google容器注册表,然后再从笔记本电脑本地或Google Compute Engine实例内部提取。 我知道该命令有效,但是我不能依赖gcloud被安装在有人可能需要从中提取映像的每台计算机上。 如果我在计算机上运行,则会出现以下错误: 是否可以通过某种形式的OAuth或密钥来认证或访问图像?我想避免在需要拉取映像的每台计算机

  • 我在kubernetes(minikube)上有问题,从Docker上的本地图像库中提取图像。创建了Docker存储库:

  • 我正在制作这个应用程序,用户可以有一张个人资料图片(但只有一张图片每人)。我得到了所有的设置,但当图片是2MB+时,它需要一些时间来加载,实际上我只需要图片是50KB左右(只有图片的小显示,最大40像素)。我做了一些代码将图像直接放入实时数据库(转换为画布并使它们成为一个7KB的base64字符串)。但是,这并不是真的干净,最好使用Firebase存储。 自从新的更新3.3.0以来,您可以使用pu

  • 我已经浏览了Stackoverflow一整天,寻找如何做到这一点,但我还没有成功 我正在将我制作的一个快速游戏打包成一个可执行的jar,但我没有正确地引用图像,我只是引用了文件 我的类在src default package中,我不确定应该在哪里添加映像,或者是否必须将映像添加到构建路径中,或者在最新版本的eclipse中将映像添加到构建路径中的正确方法