I'm attempting to deploy a Docker container to a minikube instance running locally, and getting this error when it attempts to pull(?) the image. The image exists in a self-hosted Docker registry. The image I'm testing with is built with the following Dockerfile:
FROM alpine:latest
ENTRYPOINT ["echo"]
I'm using the fabric8io kubernetes-client
library to create a deployment like so:
// '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();
This is all running on Arch Linux, kernel Linux 4.10.9-1-ARCH x86_64 GNU/Linux
. Using minikube 0.18.0-1
and kubectl-bin 1.6.1-1
from the AUR, docker 1:17.04.0-1
from the community repositories, and the docker registry
container at latest
(2.6.1
as of writing this). fabric8io kubernetes-client
is at version 2.2.13
.
I have checked:
- that the self-hosted registry is running over HTTPS correctly
- that the image can even be pulled.
docker pull
anddocker run
on both the host and inside the minikube VM work exactly as expected - that the image runs. See above
- that there aren't any name conflicts / etc. in minikube. I delete the deployments, replica sets, and pods between attempts, and I recreate the namespace, just to be safe. However, I've found that it doesn't make a difference which I do, as my code cleans up existing pods/replica sets/deployments as needed
- that DNS is not an issue, as far as I can tell
I have not:
- run kubernetes locally (as opposed to minikube), as the AUR package for kubernetes takes an unbelievably long time to build on my machine
- read through the kubernetes source code, as I don't know golang
When checking minikube dashboard
, the sections for Deployments, Replica Sets, and Pods all have the same error:
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"
and the pod logs are permanently stuck at
container "YYY" in pod "YYY" is waiting to start: ImageInspectError
Looking up the error message provided leads me to https://github.com/kubernetes/minikube/issues/947, but this is not the same issue, as kube-dns
is working as expected. This is the only relevant search result, as the other results that come up are
- Slack chatroom archives that don't even contain the relevant error message
- The kubernetes source, which isn't helpful to me
- kubernetes/minikube #947, as above
I'm honestly not sure where to go from here. Any advice would be appreciated.