<p>I tried to use <a href="https://kind.sigs.k8s.io/docs/" rel="noreferrer">KinD</a> as an alternative of Minikube to bootstrap a K8S cluster in my local machine.</p>
<p>The cluster is created successfully.</p>
<p>But when I tried to create some pods/deployments from images, it failed.</p>
<pre class="lang-sh prettyprint-override"><code>$ kubectl run nginx --image=nginx
$ kubectl run hello --image=hello-world
</code></pre>
<p>After some minutes, use <code>get pods</code> to get a failed status.</p>
<pre class="lang-sh prettyprint-override"><code>$ kubectl get pods
NAME    READY   STATUS             RESTARTS   AGE
hello   0/1     ImagePullBackOff   0          11m
nginx   0/1     ImagePullBackOff   0          22m
</code></pre>
<p>I am afraid this is another Global Firewall problem in China.</p>
<pre class="lang-sh prettyprint-override"><code>kubectl describe pods/nginx
Name:         nginx
Namespace:    default
Priority:     0
Node:         dev-control-plane/172.19.0.2
Start Time:   Sun, 30 Aug 2020 19:46:06 +0800
Labels:       run=nginx
Annotations:  &lt;none&gt;
Status:       Pending
IP:           10.244.0.5
IPs:
  IP:  10.244.0.5
Containers:
  nginx:
    Container ID:
    Image:          nginx
    Image ID:
    Port:           &lt;none&gt;
    Host Port:      &lt;none&gt;
    State:          Waiting
      Reason:       ErrImagePull
    Ready:          False
    Restart Count:  0
    Environment:    &lt;none&gt;
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-mgq96 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-mgq96:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-mgq96
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  &lt;none&gt;
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason     Age                From                        Message
  ----     ------     ----               ----                        -------
  Normal   Scheduled  56m                default-scheduler           Successfully assigned default/nginx to dev-control-plane
  Normal   BackOff    40m                kubelet, dev-control-plane  Back-off pulling image &quot;nginx&quot;
  Warning  Failed     40m                kubelet, dev-control-plane  Error: ImagePullBackOff
  Warning  Failed     13m (x3 over 40m)  kubelet, dev-control-plane  Failed to pull image &quot;nginx&quot;: rpc error: code = Unknown desc = failed to pull and unpack image &quot;docker.io/library/nginx:latest&quot;: failed to copy: unexpected EOF
  Warning  Failed     13m (x3 over 40m)  kubelet, dev-control-plane  Error: ErrImagePull
  Normal   Pulling    13m (x4 over 56m)  kubelet, dev-control-plane  Pulling image &quot;nginx&quot;
</code></pre>
<p>When I entered to the kindest/node container, but there is no docker in it. <strong>Not sure how KIND works</strong>, originally I understand it deploys a K8S cluster into a Docker container.</p>
<pre class="lang-sh prettyprint-override"><code>$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                       NAMES
a644f8b61314        kindest/node:v1.19.0   &quot;/usr/local/bin/entr…&quot;   About an hour ago   Up About an hour    127.0.0.1:52301-&gt;6443/tcp   dev-control-plane

$ docker exec -it  a644f8b61314  /bin/bash
root@dev-control-plane:/# docker -v
bash: docker: command not found
</code></pre>
<p>After reading the Kind docs, I can not find an option to set a repository mirror there like that in Minikube.</p>
<p>BTW, I am using the latest Docker Desktop beta on a Windows 10.</p>

<p>First pull the image in your local system using <code>docker pull nginx</code> and then use below command to load that image to the kind cluster</p>
<pre><code>kind load docker-image nginx --name kind-cluster-name 
</code></pre>
<p>Kind uses <a href="https://github.com/containerd" rel="noreferrer">containerd</a> instead of docker as runtime, that's why docker is not installed on the nodes.</p>
<p>Alternatively you can use <a href="https://github.com/containerd/cri/blob/master/docs/crictl.md" rel="noreferrer">crictl</a> tool to pull and check images inside the kind node.</p>
<pre><code>crictl pull nginx
crictl images
</code></pre>
