<p>I am trying to install KeyCloak using a Helm chart so I ran these two commands.</p>
<pre class="lang-sh prettyprint-override"><code>$ helm install codecentric/keycloak
$ helm install keycloak codecentric/keycloak
</code></pre>
<p>Then I checked pod status:</p>
<pre><code>$ kubectl get pods
NAME         READY   STATUS             RESTARTS   AGE
keycloak-0   0/1     ImagePullBackOff   0          52s
</code></pre>
<p>Since there was an error, I checked detailed events:</p>
<pre><code>Events:
  Type     Reason     Age               From               Message
  ----     ------     ----              ----               -------
  Normal   Scheduled  &lt;unknown&gt;         default-scheduler  Successfully assigned default/keycloak-0 to node3
  Warning  Failed     24s               kubelet, node3     Failed to pull image &quot;jboss/keycloak:9.0.2&quot;: rpc error: code = Unknown desc = failed to pull and unpack image &quot;docker.io/jboss/keycloak:9.0.2&quot;: failed to resolve reference &quot;docker.io/jboss/keycloak:9.0.2&quot;: failed to do request: Head https://registry-1.docker.io/v2/jboss/keycloak/manifests/9.0.2: dial tcp 52.55.198.220:443: i/o timeout
  Warning  Failed     24s               kubelet, node3     Error: ErrImagePull
  Normal   BackOff    23s               kubelet, node3     Back-off pulling image &quot;jboss/keycloak:9.0.2&quot;
  Warning  Failed     23s               kubelet, node3     Error: ImagePullBackOff
  Normal   Pulling    8s (x2 over 54s)  kubelet, node3     Pulling image &quot;jboss/keycloak:9.0.2&quot;
</code></pre>
<p>Why can't pull the image be pulled successfully?</p>

<p>As the comment suggests, this seems to be a firewall related problem. I've just ran the same commands on a local minikube instance and it worked well.<br>
Can your cluster pull other images from dockerhub?<br>
You can ssh into any of your worker nodes and try to use <code>docker pull</code> to find out.</p>
