2017-04-17 82 views
1

我正试图部署一个Docker容器到本地运行的minikube实例,并在尝试拉(?)图像时得到此错误。该映像存在于自托管的Docker注册表中。我用与以下Dockerfile内置测试图像:“无法检查图像XXX:图像的ID或尺寸未设置XXX”?

FROM alpine:latest 
ENTRYPOINT ["echo"] 

我使用fabric8io kubernetes-client库创建像这样部署:

// 'kube' is an instance of io.fabric8.kubernetes.client.KubernetesClient 
final Deployment deployment = kube.extensions().deployments() 
     .createOrReplaceWithNew() 
     .withNewMetadata() 
      .withName(name) 
      .withNamespace("staging") 
     .endMetadata() 
     .withNewSpec() 
      .withReplicas(1) 
      .withNewTemplate() 
       .withNewMetadata() 
        .addToLabels("app", name) 
       .endMetadata() 
       .withNewSpec() 
        .addNewImagePullSecret() 
         // "regsecret" is the kubectl-created docker secret 
         .withName("regsecret") 
        .endImagePullSecret() 
        .addNewContainer() 
         .withName(name) 
         .withImage(imageName + ":latest") 
        .endContainer() 
       .endSpec() 
      .endTemplate() 
     .endSpec() 
     .done(); 

这是Arch Linux的所有正在运行,内核Linux 4.10.9-1-ARCH x86_64 GNU/Linux。使用来自社区存储库的AUR,docker 1:17.04.0-1minikube 0.18.0-1kubectl-bin 1.6.1-1以及使用latest(本书编写时的2.6.1)的码头registry容器。 fabric8io kubernetes-client的版本是2.2.13

我已经检查:

  • ,自托管的注册表正确
  • ,图像甚至可以拉运行在HTTPS。 docker pulldocker run在主机和minikube虚拟机的内部工作与预期的完全相同
  • 图像运行。请参阅上面的
  • minikube中没有任何名称冲突/等。我在两次尝试之间删除了部署,副本集和pod,为了安全起见,我重新创建了命名空间。但是,我发现它并没有什么不同,因为我的代码根据需要清理了现有的Pod /副本集/部署
  • DNS根本不是问题,据我所知

我没有:

  • 运行kubernetes本地(相对于minikube),作为AUR包kubernetes需要一个令人难以置信的长的时间来建立我的机器
  • 通过kubernetes源代码阅读,因为我不知道golang

当检查minikube dashboard,用于部署的部分,副本集,和豆荚都具有相同的错误:

Failed to inspect image "registry_domain/XXX/YYY:latest": Id or size of image "registry_domain/XXX/YYY:latest" is not set 
Error syncing pod, skipping: failed to "StartContainer" for "YYY" with ImageInspectError: "Failed to inspect image \"registry_domain/XXX/YYY:latest\": Id or size of image \"registry_domain/XXX/YYY:latest\" is not set" 

和荚日志永远停留在

container "YYY" in pod "YYY" is waiting to start: ImageInspectError 

仰望错误提供的信息导致我到https://github.com/kubernetes/minikube/issues/947,但这不是相同的问题,因为kube-dns按预期工作。这是唯一相关的搜索结果,因为这想出其他的结果是

  • 甚至不包含相关的错误信息
  • 的kubernetes源,这是不利于我
  • 松弛聊天室档案
  • kubernetes/minikube#947,如上

我真的不知道在哪里可以从这里走。任何意见,将不胜感激。

+0

之前安装你能为kubernetes和泊坞窗后的版本号吗?此外,请使用码头注册表。并非所有版本都正确交互。 –

+0

版本号已被编辑到帖子中@JanosLenart – user7876637

回答

1

Kubernetes 1.6可能与最新的Docker版本(17.xx.xx)不兼容,您是否可以降低Docker版本并重试此操作。

如果您不确定如何找到该版本,Kubernetes中推荐的Docker版本(v1.6)为1.12。在Ubuntu或使用的Debain此:

apt-get update && apt-get install -y apt-transport-https 
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - 
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list 
deb http://apt.kubernetes.io/ kubernetes-xenial main 
EOF 
apt-get update 
apt-get install -y docker.io 

为CentOS,ref

删除您目前的码头工人尝试这种

+0

同样的问题,码头1.12.1,minikube 0.18.0,kubectl 1.6.1 – user7876637

+0

所以你遇到这个问题只使用你的形象?那么其他人如何像busybox:最新? – Crazykev

+0

busybox:latest产生'back-off重启失败的容器 错误同步pod,跳过:未能通过CrashLoopBackOff:“StartContainer”获得“StartContainer”:“回退10s重启失败容器= XXX pod = XXX”',原因阿尔派:最新现在产生相同的结果。检查容器日志显示容器实际启动并运行成功,所以我不知道发生了什么变化。我意外地运行了一次完整的系统升级,现在Docker显示“Docker版本17.04.0-ce,build 4845c567eb”,所以我真的不明白是什么改变了。非常感谢! – user7876637