I created a local registry localhost:5001 and created a docker image localhost:5001/example and pushed to the local registry. I was deploying the docker image onto KinD cluster using helm chart. snapshots of values.yml:
image:
repository: localhost:5001/example
pullPolicy: Always
tag: "latest"
service:
type: NodePort
port: 31236
targetPort: 8087
helm install emp2 emp2-ch gives this error on the cluster
Failed to pull image "localhost:5001/example:latest": rpc error: code = Unknown desc = failed to pull and unpack image "localhost:5001/example:latest": failed to resolve reference "localhost:5001/example:latest": unexpected status from HEAD request to http://kind-registry:5000/v2/example/manifests/latest?ns=localhost%3A5001: 504 Unknown Host
I created the cluster and registry using this script:
#!/bin/sh
set -o errexit
# create registry container unless it already exists
reg_name='kind-registry'
reg_port='5001'
if [ "$(docker inspect -f '{{.State.Running}}' "${reg_name}" 2>/dev/null || true)" != 'true' ]; then
docker run \
-d --restart=always -p "127.0.0.1:${reg_port}:5000" --name "${reg_name}" \
registry:2
fi
# create a cluster with the local registry enabled in containerd
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: example
networking:
ipFamily: dual
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30001
hostPort: 30001
listenAddress: "0.0.0.0"
protocol: tcp
- role: worker
- role: worker
containerdConfigPatches:
- |-
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."localhost:${reg_port}"]
endpoint = ["http://${reg_name}:5000"]
EOF
# connect the registry to the cluster network if not already connected
if [ "$(docker inspect -f='{{json .NetworkSettings.Networks.kind}}' "${reg_name}")" = 'null' ]; then
docker network connect "kind" "${reg_name}"
fi
# Document the local registry
# https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/generic/1755-communicating-a-local-registry
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
name: local-registry-hosting
namespace: kube-public
data:
localRegistryHosting.v1: |
host: "localhost:${reg_port}"
help: "https://kind.sigs.k8s.io/docs/user/local-registry/"
EOF
This could be due to the registry not being accessible from the KinD cluster. You can use
docker inspectto check the network settings of the registry container and verify that it is connected to the kind network cluster.Check also if the registry's hostname is resolvable from the kind cluster due to 504 error suggesting a network configuration issue.