我很难让Kubernetes使用我的私有hub.docker.com注册表图像.
我正在使用kubectl版本:客户端版本:version.Info {Major:“1”,Minor:“1”,GitVersion:“v1.1.0-alpha.0.1588 e44c8e6661c931”,GitCommit:“e44c8e6661c931f7fd434911b0d3bca140e1df3a”,GitTreeState:“clean”}
服务器版本:version.Info {Major:“1”,GitVersion:“v1.1.3”,GitCommit:“6a81b50c7e97bbe0ade075de55ab4fa34f049dc2”,GitTreeState:“clean”}
Mac OS X Yosemite 10.10.5上的Vagrant 1.7.4
简而言之,它表示您应该登录到注册表,然后base64编码生成的.docker / config.json的内容,并在yaml文档中使用它,如下所示:
apiVersion: v1
kind: Secret
Metadata:
name: myregistrykey
data:
.dockercfg: eyAiYXV0aHMiOiB7ICJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7ICJhdXRoIjogImFXNTBjbWx1YzJsak9tSTJVVTR5Z...h1YkBpbnRyaW5zaWMud29ybGQiIH0gfSB9Cg==
type: kubernetes.io/dockercfg
然后将其喂给kubectl.然后我在我的pod定义中使用了生成的键(这里称为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大师身上的工作人员.
我错过了什么?
UPDATE
在上面的pod定义中,我省略了指定注册表主机,即docker.io.修复它,它变成:
image:docker.io/intrinsic/authorities-backend:latest
但问题仍然存在.做kubectl获取事件-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-图像拉取失败 – 后端,这可能是因为此请求没有凭据.详细信息:(错误:图像内在/ authority-backend:最新未找到)
我知道这个秘密已经正确注册,因为我在kubectl下得到了秘密:
名称类型数据年龄
default-token-a7s5n kubernetes.io/service-account-token 2 51m
myregistrykey kubernetes.io/dockercfg 1 50米
仍然困惑……
憨
使用新的.docker / config.json格式时,需要设置type:kubernetes.io/dockerconfigjson而不是type:kubernetes.io/.dockercfg.
支持类型:kubernetes.io/dockerconfigjson已在v1.1.0中添加,因此服务器支持它,但客户端不支持(v1.1.0-alpha早于v1.1.0).
当您使用type:kubernetes.io/dockerconfigjson时,它应验证您的秘密内容.
使用类型:kubernetes.io/dockerconfigjson,您确实希望保留auths包装器.