<p>I'm trying to deploy my NodeJS application to EKS and run 3 pods with exactly the same container.</p>

<p>Here's the error message:</p>

<pre><code>$ kubectl get pods
NAME                                 READY   STATUS             RESTARTS   AGE
cm-deployment-7c86bb474c-5txqq       0/1     Pending            0          18s
cm-deployment-7c86bb474c-cd7qs       0/1     ImagePullBackOff   0          18s
cm-deployment-7c86bb474c-qxglx       0/1     ImagePullBackOff   0          18s
public-api-server-79b7f46bf9-wgpk6   0/1     ImagePullBackOff   0          2m30s

$ kubectl describe pod cm-deployment-7c86bb474c-5txqq
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  23s (x4 over 2m55s)  default-scheduler  0/3 nodes are available: 3 Insufficient pods.

</code></pre>

<p>So it says that <code>0/3 nodes are available</code> However, if I run
<code>kubectl get nodes --watch</code></p>

<pre><code>$ kubectl get nodes --watch
NAME                                                 STATUS   ROLES    AGE    VERSION
ip-192-168-163-73.ap-northeast-2.compute.internal    Ready    &lt;none&gt;   6d7h   v1.14.6-eks-5047ed
ip-192-168-172-235.ap-northeast-2.compute.internal   Ready    &lt;none&gt;   6d7h   v1.14.6-eks-5047ed
ip-192-168-184-236.ap-northeast-2.compute.internal   Ready    &lt;none&gt;   6d7h   v1.14.6-eks-5047ed

</code></pre>

<p>3 pods are running.</p>

<p>here are my configurations:</p>

<pre><code>aws-auth-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: [MY custom role ARN]
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes


</code></pre>

<pre><code>deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cm-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: cm-literal
  template:
    metadata:
      name: cm-literal-pod
      labels:
        app: cm-literal
    spec:
      containers:
        - name: cm
          image: docker.io/cjsjyh/public_test:1
          imagePullPolicy: Always
          ports:
            - containerPort: 80
          #imagePullSecrets:
          #  - name: regcred
          env:
            [my environment variables]

</code></pre>

<p>I applied both .yaml files</p>

<p>How can I solve this?
Thank you</p>

<p>My guess, without running the manifests you've got is that the image tag <code>1</code> on your image doesn't exist, so you're getting <code>ImagePullBackOff</code> which usually means that the container runtime can't find the image to pull .</p>

<p>Looking at the Docker Hub <a href="https://hub.docker.com/r/cjsjyh/public_test/tags" rel="nofollow noreferrer">page</a> there's no <code>1</code> tag there, just <code>latest</code>.  </p>

<p>So, either removing the tag or replace <code>1</code> with <code>latest</code> may resolve your issue.</p>
