gpt4 book ai didi

docker - Kubernetes PullImageError 使用带有私有(private)镜像的 Docker Hub

转载 作者:IT老高 更新时间:2023-10-28 21:25:02 25 4
gpt4 key购买 nike

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

我正在使用 kubectl 版本:客户端版本:version.Info{Major:"1", Minor:"1+", GitVersion:"v1.1.0-alpha.0.1588+e44c8e6661c931", GitCommit:"e44c8e6661c931f7fd434911b0d3bca140e1df3a ", GitTreeState:"干净"}
服务器版本:version.Info{Major:"1", Minor:"1", GitVersion:"v1.1.3", GitCommit:"6a81b50c7e97bbe0ade075de55ab4fa34f049dc2", GitTreeState:"clean"}

和 Mac OS X 上的 Vagrant 1.7.4 Yosemite 10.10.5

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

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

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

然后将其提供给 kubectl。然后我在我的 pod 定义中使用了生成的 key (这里称为 myregistrykey):

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

然后 kubectl 创建它。

但是,kubectl 一直无法检索图像:

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

但是,Kubernetes 主服务器上的 docker pull 可以正常工作。

我错过了什么?

更新

在上面的 pod 定义中,我省略了指定注册表主机,即 docker.io。修复它,它变成:图像:docker.io/intrinsic/authorities-backend:latest但是,问题仍然存在。做 kubectl get events -w 让我:
6s 0s 2 authority-backend Pod spec.containers{authorities-backend} 失败 {kubelet 10.245.1.3} 无法拉取镜像“docker.io/intrinsic/authorities-backend”:docker.io/intrinsic/authorities- 的镜像拉取失败后端,这可能是因为此请求没有凭据。详细信息:(错误:图像内在/权限后端:未找到最新的)
我知道 secret 已经正确注册,因为我在 kubectl get secrets 下拥有它:
姓名类型数据年龄
默认 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 时,它应该验证你的 secret 内容。

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

关于docker - Kubernetes PullImageError 使用带有私有(private)镜像的 Docker Hub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34290528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com