<p>I tried to create an EKS Kubernetes cluster, for example using this: <a href="https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples/eks-getting-started" rel="nofollow noreferrer">https://github.com/terraform-providers/terraform-provider-aws/tree/master/examples/eks-getting-started</a></p>

<p>What I get is all pods are pending:</p>

<blockquote>
  <p>No nodes available to schedule pods</p>
</blockquote>

<p>in <code>kubectl po describe</code> and I get an empty list when I type <code>kubectl get nodes</code>.</p>

<p>Changing AMI images or AWS region doesn't help. </p>

<p>What's wrong?</p>

<p>I was still having issue with the code where the worker nodes register only if eks was set to public subnets only.</p>

<p><code>module "eks" {
   subnets                              = ["${module.vpc.public_subnets}"]
}</code></p>

<p>I did not want my workers to be in public subnets. I changed </p>

<pre><code>module "eks" {
   subnets                              = ["${module.vpc.private_subnets}"]
}

module "vpc" {
   single_nat_gateway = false
}
</code></pre>

<p>kubectl get nodes</p>

<pre><code>NAME                                       STATUS    ROLES     AGE       VERSION
ip-10-0-1-247.us-east-2.compute.internal   Ready     &lt;none&gt;    17m       v1.11.5
ip-10-0-1-75.us-east-2.compute.internal    Ready     &lt;none&gt;    17m       v1.11.5
ip-10-0-2-225.us-east-2.compute.internal   Ready     &lt;none&gt;    17m       v1.11.5
ip-10-0-3-210.us-east-2.compute.internal   Ready     &lt;none&gt;    17m       v1.11.5
</code></pre>
