Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes PullImageError使用带有私有映像的Docker Hub_Docker_Kubernetes_Docker Registry - Fatal编程技术网

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

Kubernetes PullImageError使用带有私有映像的Docker Hub,docker,kubernetes,docker-registry,Docker,Kubernetes,Docker Registry,我正在努力让Kubernetes使用我的私有hub.docker.com注册表映像 我使用的是kubectl版本:客户端版本:version.Info{Major:“1”,Minor:“1+”,GitVersion:“v1.1.0-alpha.0.1588+e44c8e6661c931”,GitCommit:“e44c8e6661c931f7fd434911b0d3bca140e1df3a”,GitRestate:“clean”} 服务器版本:Version.Info{Major:“1”,Min

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

我使用的是kubectl版本:
客户端版本:version.Info{Major:“1”,Minor:“1+”,GitVersion:“v1.1.0-alpha.0.1588+e44c8e6661c931”,GitCommit:“e44c8e6661c931f7fd434911b0d3bca140e1df3a”,GitRestate:“clean”}
服务器版本:Version.Info{Major:“1”,Minor:“1”,GitVersion:“v1.1.3”,GitCommit:“6a81b50c7e97bbe0ade075de55ab4fa34f049dc2”,GitTreeState:“clean”}

Mac OS X上的流浪者
1.7.4
Yosemite 10.10.5

我遵照这里的指示:

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

apiVersion: v1
kind: Secret
metadata:
  name: myregistrykey
data:
  .dockercfg: eyAiYXV0aHMiOiB7ICJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOiB7ICJhdXRoIjogImFXNTBjbWx1YzJsak9tSTJVVTR5Z...h1YkBpbnRyaW5zaWMud29ybGQiIH0gfSB9Cg==
type: kubernetes.io/dockercfg
然后把它喂给库贝特。然后,我在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
码头工人拉上了库伯内特斯船长的工作

我错过了什么

更新 在上面的pod定义中,我忽略了指定注册表主机,即docker.io。修复它,它将变成:
image:docker.io/intrinsive/authorities后端:最新
然而,问题依然存在。执行
kubectl获取事件-w
获取我:

6s 0s 2 authorities backend Pod spec.containers{authorities backend}失败{kubelet 10.245.1.3}未能拉取映像“docker.io/instruction/authorities backend”:docker.io/instruction/authorities-backend的映像拉取失败,这可能是因为此请求上没有凭据。详细信息:(错误:映像内部/权限后端:未找到最新版本)
我知道该秘密已被正确注册,正如我在
kubectl get secrets
下所述:

名称类型数据时代
default-token-a7s5n kubernetes.io/service-account-token 2 51m
myregistrykey kubernetes.io/dockercfg 1 50m

仍然困惑


Candide

因此,我一直在网上寻找问题的答案,最终发现:

在线程的最末端,JW27已将其锁定。提到
.dockercfg.json
文件只是为了说明其内容需要进行base64编码。这个文件实际上有两个问题:

  • 看起来它实际上变成了另一个文件,即
    .docker/config.json
  • 此文件中的身份验证信息由附加的
    auths
    对象包装,您必须删除这些对象
  • 引用jjw27

    不起作用:

    {
      "auths": {
        "hub.example.com:1024": {
          "auth": "asdf=",
          "email": "example@example.com"
         }
      }
    }
    
    工作:

    {
      "hub.example.com:1024": {
        "auth": "asdf=",
        "email": "example@example.com"
      }
    }
    
    谷歌,请更新这个文件


    给Kubernetes开发人员的信息#2:另外,不抱怨格式错误的base64编码秘密是非常误导的。请验证用户输入并投诉是否包含错误。

    文档已过期,因为它引用的是
    .dockercfg
    ,而不是
    .docker/config.json
    。我会更新的

    使用新的
    .docker/config.json
    格式时,需要设置
    类型:kubernetes.io/dockerconfigjson
    ,而不是
    类型:kubernetes.io/.dockercfg

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

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


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

    修复文档。欢迎您的审阅。实际上,由于疏忽,Kubernetes当前没有验证
    类型:Kubernetes.io/dockerconfigjson
    。我写这封信是为了解决这个问题。谢谢这个Eric-文档工作得很好。小毛病:我不能实际执行
    nodes=$(kubectl get nodes-o jsonpath='{range.items[*].metadata}{.name}{end}')
    (getting
    错误:输出格式“jsonpath={range.items[*].metadata}{.name}{end}”无法识别
    ),可能是因为我不知道如何执行。如果再明确一点就好了。