我试图将Docker容器部署到本地运行的minikube实例,并在尝试拉(?)图像时出现此错误。该映像存在于自托管的Docker注册表中。我测试的图像是使用以下Dockerfile构建的:
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的minikube 0.18.0-1
和kubectl-bin 1.6.1-1
,来自社区存储库的docker 1:17.04.0-1
,以及registry
(latest
上的docker 2.6.1
容器这个)。 fabric8io kubernetes-client
的版本为2.2.13
。
我查了一下:
docker pull
和docker run
完全按预期工作
我没有:
检查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"
并且pod日志永久停留在
container "YYY" in pod "YYY" is waiting to start: ImageInspectError
查看提供的错误消息会引导我https://github.com/kubernetes/minikube/issues/947,但这不是同一个问题,因为kube-dns
正在按预期工作。这是唯一相关的搜索结果,因为出现的其他结果是
老实说,我不确定从哪里开始。任何意见,将不胜感激。
答案 0 :(得分:1)
Kubernetes 1.6可能与最新的Docker版本(17.xx.xx)不兼容,您是否可以降低Docker版本并重试此版本。
如果您不确定如何找到该版本,Kubernetes(v1.6)中推荐的Docker版本为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
在尝试此
之前删除当前的Docker安装答案 1 :(得分:0)
在删除任何内容之前,您可以尝试minikube delete
(如果没有重要内容或备份内容)和minikube start
,以便您完全删除之前的群集,并尝试重新提取您的图像。它是为我做的。