"Failed to inspect image XXX: Id or size of image XXX is not set"?
"Failed to inspect image XXX: Id or size of image XXX is not set"?
我正在尝试将 Docker 容器部署到 运行 本地的 minikube 实例,并在尝试拉取(?)图像时出现此错误。该图像存在于自托管 Docker 注册表中。我正在测试的图像是使用以下 Docker 文件构建的:
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
上的全部 运行ning。使用 AUR 中的 minikube 0.18.0-1
和 kubectl-bin 1.6.1-1
,社区存储库中的 docker 1:17.04.0-1
,以及 latest
中的 docker registry
容器(2.6.1
在撰写本文时)。 fabric8io kubernetes-client
的版本为 2.2.13
。
我检查过:
- 自托管注册表 运行正确地通过 HTTPS
- 甚至可以拉取图像。
docker pull
和 docker run
在主机和 minikube VM 内部都完全按预期工作
- 那个图像 运行s。见上文
- minikube 中没有任何名称冲突等。为了安全起见,我在尝试之间删除了部署、副本集和 pods,并重新创建了命名空间。但是,我发现它对我所做的并没有什么影响,因为我的代码会根据需要清理现有的 pods/replica sets/deployments
- 据我所知,DNS 不是问题
我还没有:
- 运行 本地 kubernetes(相对于 minikube),因为 kubernetes 的 AUR 包在我的机器上构建需要很长时间
- 通读kubernetes源码,不懂golang
检查 minikube dashboard
时,部署、副本集和 Pods 部分都有相同的错误:
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
正在按预期工作。这是唯一相关的搜索结果,因为出现的其他结果是
- 甚至不包含相关错误消息的 Slack 聊天室存档
- kubernetes源码,对我没有帮助
- kubernetes/minikube#947,同上
老实说,我不确定从这里到哪里去。任何意见,将不胜感激。
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 安装
在删除任何东西之前,你可以尝试minikube delete
(如果里面没有重要的东西,或者备份的东西)和minikube start
,这样你就可以一起删除你以前的集群,然后试着拉你的形象再次。它为我做到了。
我正在尝试将 Docker 容器部署到 运行 本地的 minikube 实例,并在尝试拉取(?)图像时出现此错误。该图像存在于自托管 Docker 注册表中。我正在测试的图像是使用以下 Docker 文件构建的:
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
上的全部 运行ning。使用 AUR 中的 minikube 0.18.0-1
和 kubectl-bin 1.6.1-1
,社区存储库中的 docker 1:17.04.0-1
,以及 latest
中的 docker registry
容器(2.6.1
在撰写本文时)。 fabric8io kubernetes-client
的版本为 2.2.13
。
我检查过:
- 自托管注册表 运行正确地通过 HTTPS
- 甚至可以拉取图像。
docker pull
和docker run
在主机和 minikube VM 内部都完全按预期工作 - 那个图像 运行s。见上文
- minikube 中没有任何名称冲突等。为了安全起见,我在尝试之间删除了部署、副本集和 pods,并重新创建了命名空间。但是,我发现它对我所做的并没有什么影响,因为我的代码会根据需要清理现有的 pods/replica sets/deployments
- 据我所知,DNS 不是问题
我还没有:
- 运行 本地 kubernetes(相对于 minikube),因为 kubernetes 的 AUR 包在我的机器上构建需要很长时间
- 通读kubernetes源码,不懂golang
检查 minikube dashboard
时,部署、副本集和 Pods 部分都有相同的错误:
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
正在按预期工作。这是唯一相关的搜索结果,因为出现的其他结果是
- 甚至不包含相关错误消息的 Slack 聊天室存档
- kubernetes源码,对我没有帮助
- kubernetes/minikube#947,同上
老实说,我不确定从这里到哪里去。任何意见,将不胜感激。
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 安装
在删除任何东西之前,你可以尝试minikube delete
(如果里面没有重要的东西,或者备份的东西)和minikube start
,这样你就可以一起删除你以前的集群,然后试着拉你的形象再次。它为我做到了。