# Init:ImagePullBackOff error when trying to deploy elasticsearch object to k8s

**URL:** <https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571>\
**Category:** Elastic Cloud on Kubernetes (ECK)\
**Tags:** docker\
**Created:** [July 25, 2022, 8:03pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571 "2022-07-25T20:03:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![vuqar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vuqar/32/108831_2.png) [@vuqar](https://discuss.elastic.co/u/vuqar)\
**Post date:** [July 25, 2022, 8:03pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/1 "2022-07-25T20:03:20Z")

</div>

I am following [this](https://www.elastic.co/guide/en/cloud-on-k8s/2.3/k8s-deploy-elasticsearch.html) ECK quickstart tutorial. For whatever reason I can't deploy elasticsearch object. When I check pod status it says Init:0/2 and after couple minutes it changes to Init:ImagePullBackOff and finally to Init:ErrImagePull. I am using K8S v1.24.1 with Docker Desktop for Win.

Here is what I get when I run `kubectl describe pod quickstart-es-default-0`

```auto
Name: quickstart-es-default-0
Namespace: default
Priority: 0
Node: docker-desktop/192.168.65.4
Start Time: Mon, 25 Jul 2022 23:51:53 +0400
Labels: common.k8s.elastic.co/type=elasticsearch
              controller-revision-hash=quickstart-es-default-5f7454484f
              elasticsearch.k8s.elastic.co/cluster-name=quickstart
              elasticsearch.k8s.elastic.co/http-scheme=https
              elasticsearch.k8s.elastic.co/node-data=true
              elasticsearch.k8s.elastic.co/node-data_cold=true
              elasticsearch.k8s.elastic.co/node-data_content=true
              elasticsearch.k8s.elastic.co/node-data_frozen=true
              elasticsearch.k8s.elastic.co/node-data_hot=true
              elasticsearch.k8s.elastic.co/node-data_warm=true
              elasticsearch.k8s.elastic.co/node-ingest=true
              elasticsearch.k8s.elastic.co/node-master=true
              elasticsearch.k8s.elastic.co/node-ml=true
              elasticsearch.k8s.elastic.co/node-remote_cluster_client=true
              elasticsearch.k8s.elastic.co/node-transform=true
              elasticsearch.k8s.elastic.co/node-voting_only=false
              elasticsearch.k8s.elastic.co/statefulset-name=quickstart-es-default
              elasticsearch.k8s.elastic.co/version=8.3.2
              statefulset.kubernetes.io/pod-name=quickstart-es-default-0
Annotations: co.elastic.logs/module: elasticsearch
              elasticsearch.k8s.elastic.co/config-hash: 3087095235
              update.k8s.elastic.co/timestamp: 2022-07-25T19:53:59.0649397Z
Status: Pending
IP: 10.1.0.114
IPs:
  IP: 10.1.0.114
Controlled By: StatefulSet/quickstart-es-default
Init Containers:
  elastic-internal-init-filesystem:
    Container ID:
    Image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2
    Image ID:
    Port: <none>
    Host Port: <none>
    Command:
      bash
      -c
      /mnt/elastic-internal/scripts/prepare-fs.sh
    State: Waiting
      Reason: ImagePullBackOff
    Ready: False
    Restart Count: 0
    Limits:
      cpu: 100m
      memory: 50Mi
    Requests:
      cpu: 100m
      memory: 50Mi
    Environment:
      POD_IP: (v1:status.podIP)
      POD_NAME: quickstart-es-default-0 (v1:metadata.name)
      NODE_NAME: (v1:spec.nodeName)
      NAMESPACE: default (v1:metadata.namespace)
      HEADLESS_SERVICE_NAME: quickstart-es-default
    Mounts:
      /mnt/elastic-internal/downward-api from downward-api (ro)
      /mnt/elastic-internal/elasticsearch-bin-local from elastic-internal-elasticsearch-bin-local (rw)
      /mnt/elastic-internal/elasticsearch-config from elastic-internal-elasticsearch-config (ro)
      /mnt/elastic-internal/elasticsearch-config-local from elastic-internal-elasticsearch-config-local (rw)
      /mnt/elastic-internal/elasticsearch-plugins-local from elastic-internal-elasticsearch-plugins-local (rw)
      /mnt/elastic-internal/probe-user from elastic-internal-probe-user (ro)
      /mnt/elastic-internal/scripts from elastic-internal-scripts (ro)
      /mnt/elastic-internal/transport-certificates from elastic-internal-transport-certificates (ro)
      /mnt/elastic-internal/unicast-hosts from elastic-internal-unicast-hosts (ro)
      /mnt/elastic-internal/xpack-file-realm from elastic-internal-xpack-file-realm (ro)
      /usr/share/elasticsearch/config/http-certs from elastic-internal-http-certificates (ro)
      /usr/share/elasticsearch/config/transport-remote-certs/ from elastic-internal-remote-certificate-authorities (ro)
      /usr/share/elasticsearch/data from elasticsearch-data (rw)
      /usr/share/elasticsearch/logs from elasticsearch-logs (rw)
  elastic-internal-suspend:
    Container ID:
    Image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2
    Image ID:
    Port: <none>
    Host Port: <none>
    Command:
      bash
      -c
      /mnt/elastic-internal/scripts/suspend.sh
    State: Waiting
      Reason: PodInitializing
    Ready: False
    Restart Count: 0
    Limits:
      memory: 2Gi
    Requests:
      memory: 2Gi
    Environment:
      POD_IP: (v1:status.podIP)
      POD_NAME: quickstart-es-default-0 (v1:metadata.name)
      NODE_NAME: (v1:spec.nodeName)
      NAMESPACE: default (v1:metadata.namespace)
      HEADLESS_SERVICE_NAME: quickstart-es-default
    Mounts:
      /mnt/elastic-internal/downward-api from downward-api (ro)
      /mnt/elastic-internal/elasticsearch-config from elastic-internal-elasticsearch-config (ro)
      /mnt/elastic-internal/probe-user from elastic-internal-probe-user (ro)
      /mnt/elastic-internal/scripts from elastic-internal-scripts (ro)
      /mnt/elastic-internal/unicast-hosts from elastic-internal-unicast-hosts (ro)
      /mnt/elastic-internal/xpack-file-realm from elastic-internal-xpack-file-realm (ro)
      /usr/share/elasticsearch/bin from elastic-internal-elasticsearch-bin-local (rw)
      /usr/share/elasticsearch/config from elastic-internal-elasticsearch-config-local (rw)
      /usr/share/elasticsearch/config/http-certs from elastic-internal-http-certificates (ro)
      /usr/share/elasticsearch/config/transport-certs from elastic-internal-transport-certificates (ro)
      /usr/share/elasticsearch/config/transport-remote-certs/ from elastic-internal-remote-certificate-authorities (ro)
      /usr/share/elasticsearch/data from elasticsearch-data (rw)
      /usr/share/elasticsearch/logs from elasticsearch-logs (rw)
      /usr/share/elasticsearch/plugins from elastic-internal-elasticsearch-plugins-local (rw)
Containers:
  elasticsearch:
    Container ID:
    Image: docker.elastic.co/elasticsearch/elasticsearch:8.3.2
    Image ID:
    Ports: 9200/TCP, 9300/TCP
    Host Ports: 0/TCP, 0/TCP
    State: Waiting
      Reason: PodInitializing
    Ready: False
    Restart Count: 0
    Limits:
      memory: 2Gi
    Requests:
      memory: 2Gi
    Readiness: exec [bash -c /mnt/elastic-internal/scripts/readiness-probe-script.sh] delay=10s timeout=5s period=5s #success=1 #failure=3
    Environment:
      POD_IP: (v1:status.podIP)
      POD_NAME: quickstart-es-default-0 (v1:metadata.name)
      NODE_NAME: (v1:spec.nodeName)
      NAMESPACE: default (v1:metadata.namespace)
      PROBE_PASSWORD_PATH: /mnt/elastic-internal/probe-user/elastic-internal-probe
      PROBE_USERNAME: elastic-internal-probe
      READINESS_PROBE_PROTOCOL: https
      HEADLESS_SERVICE_NAME: quickstart-es-default
      NSS_SDB_USE_CACHE: no
    Mounts:
      /mnt/elastic-internal/downward-api from downward-api (ro)
      /mnt/elastic-internal/elasticsearch-config from elastic-internal-elasticsearch-config (ro)
      /mnt/elastic-internal/probe-user from elastic-internal-probe-user (ro)
      /mnt/elastic-internal/scripts from elastic-internal-scripts (ro)
      /mnt/elastic-internal/unicast-hosts from elastic-internal-unicast-hosts (ro)
      /mnt/elastic-internal/xpack-file-realm from elastic-internal-xpack-file-realm (ro)
      /usr/share/elasticsearch/bin from elastic-internal-elasticsearch-bin-local (rw)
      /usr/share/elasticsearch/config from elastic-internal-elasticsearch-config-local (rw)
      /usr/share/elasticsearch/config/http-certs from elastic-internal-http-certificates (ro)
      /usr/share/elasticsearch/config/transport-certs from elastic-internal-transport-certificates (ro)
      /usr/share/elasticsearch/config/transport-remote-certs/ from elastic-internal-remote-certificate-authorities (ro)
      /usr/share/elasticsearch/data from elasticsearch-data (rw)
      /usr/share/elasticsearch/logs from elasticsearch-logs (rw)
      /usr/share/elasticsearch/plugins from elastic-internal-elasticsearch-plugins-local (rw)
Conditions:
  Type Status
  Initialized False
  Ready False
  ContainersReady False
  PodScheduled True
Volumes:
  elasticsearch-data:
    Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName: elasticsearch-data-quickstart-es-default-0
    ReadOnly: false
  downward-api:
    Type: DownwardAPI (a volume populated by information about the pod)
    Items:
      metadata.labels -> labels
  elastic-internal-elasticsearch-bin-local:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  elastic-internal-elasticsearch-config:
    Type: Secret (a volume populated by a Secret)
    SecretName: quickstart-es-default-es-config
    Optional: false
  elastic-internal-elasticsearch-config-local:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  elastic-internal-elasticsearch-plugins-local:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  elastic-internal-http-certificates:
    Type: Secret (a volume populated by a Secret)
    SecretName: quickstart-es-http-certs-internal
    Optional: false
  elastic-internal-probe-user:
    Type: Secret (a volume populated by a Secret)
    SecretName: quickstart-es-internal-users
    Optional: false
  elastic-internal-remote-certificate-authorities:
    Type: Secret (a volume populated by a Secret)
    SecretName: quickstart-es-remote-ca
    Optional: false
  elastic-internal-scripts:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: quickstart-es-scripts
    Optional: false
  elastic-internal-transport-certificates:
    Type: Secret (a volume populated by a Secret)
    SecretName: quickstart-es-default-es-transport-certs
    Optional: false
  elastic-internal-unicast-hosts:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: quickstart-es-unicast-hosts
    Optional: false
  elastic-internal-xpack-file-realm:
    Type: Secret (a volume populated by a Secret)
    SecretName: quickstart-es-xpack-file-realm
    Optional: false
  elasticsearch-logs:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
QoS Class: Burstable
Node-Selectors: <none>
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
  ---- ------ ---- ---- -------
  Warning FailedScheduling 9m4s default-scheduler 0/1 nodes are available: 1 pod has unbound immediate PersistentVolumeClaims. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.
  Normal Scheduled 9m3s default-scheduler Successfully assigned default/quickstart-es-default-0 to docker-desktop
  Normal SandboxChanged 7m1s kubelet Pod sandbox changed, it will be killed and re-created.
  Warning Failed 2m19s (x3 over 7m2s) kubelet Failed to pull image "docker.elastic.co/elasticsearch/elasticsearch:8.3.2": rpc error: code = Unknown desc = context deadline exceeded
  Warning Failed 2m19s (x3 over 7m2s) kubelet Error: ErrImagePull
  Normal BackOff 109s (x7 over 6m59s) kubelet Back-off pulling image "docker.elastic.co/elasticsearch/elasticsearch:8.3.2"
  Warning Failed 109s (x7 over 6m59s) kubelet Error: ImagePullBackOff
  Normal Pulling 96s (x4 over 9m1s) kubelet Pulling image "docker.elastic.co/elasticsearch/elasticsearch:8.3.2"

```

What should I do? It seems like there is problem with pulling image. Is it known issue?

---

<div class="post-metadata">

**Author:** ![Ugo\_Sangiorgi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ugo_sangiorgi/32/146361_2.png) [@Ugo\_Sangiorgi](https://discuss.elastic.co/u/Ugo_Sangiorgi)\
**Post date:** [July 25, 2022, 8:51pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/2 "2022-07-25T20:51:19Z")

</div>

Hi, can you post the manifest file you are using?

---

<div class="post-metadata">

**Author:** ![vuqar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vuqar/32/108831_2.png) [@vuqar](https://discuss.elastic.co/u/vuqar)\
**Post date:** [July 26, 2022, 5:33am UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/3 "2022-07-26T05:33:27Z")

</div>

Its the same with the one used in tutorial.

```auto
apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: quickstart
spec:
  version: 8.3.2
  nodeSets:
  - name: default
    count: 1
    config:
      node.store.allow_mmap: false

```

---

<div class="post-metadata">

**Author:** ![Ugo\_Sangiorgi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ugo_sangiorgi/32/146361_2.png) [@Ugo\_Sangiorgi](https://discuss.elastic.co/u/Ugo_Sangiorgi)\
**Post date:** [July 26, 2022, 1:56pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/4 "2022-07-26T13:56:46Z")

</div>

Usually an `ImagePullBackOff` means Kubernetes could not reach the docker registry, in this case `docker.elastic.co`, so its most likely a network problem.

I see you are using Kubernetes locally, since your node is:

> [@vuqar](#):
>
> `Node: docker-desktop/192.168.65.4`

Can you try issuing a simple `docker pull docker.elastic.co/elasticsearch/elasticsearch:8.3.2` from your machine and see if the image is downloaded?

---

<div class="post-metadata">

**Author:** ![vuqar](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vuqar/32/108831_2.png) [@vuqar](https://discuss.elastic.co/u/vuqar)\
**Post date:** [July 26, 2022, 3:21pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/5 "2022-07-26T15:21:16Z")

</div>

I did run simple docker pull for the image which completed successfully. And then tried to reproduce the error but this time pod didn't fail. I am marking this as solution.

I deleted the image and tried to reproduce problem again. I reset k8s, installed custom res definitions and operator, and applied the manifest. I didn't get the error this time.

Thanks for helping out

---

<div class="post-metadata">

**Author:** ![Ugo\_Sangiorgi](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ugo_sangiorgi/32/146361_2.png) [@Ugo\_Sangiorgi](https://discuss.elastic.co/u/Ugo_Sangiorgi)\
**Post date:** [July 26, 2022, 3:27pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/6 "2022-07-26T15:27:10Z")

</div>

Most likely it was a network hiccup, it happens 😄

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [August 23, 2022, 3:27pm UTC](https://discuss.elastic.co/t/init-imagepullbackoff-error-when-trying-to-deploy-elasticsearch-object-to-k8s/310571/7 "2022-08-23T15:27:11Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
