Answers: <p>I incurred the same problem during one of my deployments.</p>
  <p>This happens due to the <strong>Networking issue</strong> of the EKS cluster. Assuming that you are working in AWS, follow the following  steps to debug this problem:</p>
  <ol>
  <li>Check if your security groups are correctly configured correctly to your Nodes.</li>
  <li>If the EKS is present in the public sub-nets, check its connectivity to internet gateway and is able to access the internet.</li>
  <li>If Eks is present in the private sub-net, check the connectivity with NAT gateway and that NAT gateway is able to access the internet.</li>
  </ol>
  
Answers: CC BY-SA 4.0
Answers: 2022-04-15T09:19:55.973Z
Answers: 2022-04-15T09:19:55.973Z
Answers: krishna dutt Panchagnula
Answers: <p>I was getting the same issue, it was solved by creating another nat gateway and choosing public subnet and attaching that new nat gateway in routable to my private subnet.</p>
  
Answers: CC BY-SA 4.0
Answers: 2022-08-21T13:14:14.377Z
Answers: 2022-08-21T13:14:14.377Z
Answers: user36543
Answers: <p>AWS has listed a set of reasons it could make Node groups to fail joining a cluster. Refer, <a href="https://repost.aws/knowledge-center/eks-worker-nodes-cluster" rel="nofollow noreferrer">https://repost.aws/knowledge-center/eks-worker-nodes-cluster</a>
  I was able to understand that one of my security groups rejected the comms between Control Plane and the worker node. This troubleshooting was possible using System Automation - TroubleshootingEKSNode.</p>
  
Answers: CC BY-SA 4.0
Answers: 2023-11-07T13:05:06.417Z
Answers: 2023-11-07T13:05:06.417Z
Answers: MadhiniGM
Answers: <p>I had a similar issue in the past where the nodes couldn't join the cluster.
  The cause of this was a mismatch in security groups, the nodes and the EKS control plane weren't allowed to talk to each other and therefore timed out.</p>
  
Answers: CC BY-SA 4.0
Answers: 2022-04-14T04:34:49.827Z
Answers: without some context to corroborate that these two situations are related, it's difficult to be sure that this is an answer. Have you got some output you can share, or other information, to link this answer to the question?
Answers: Bruce Becker
Answers: CC BY-SA 4.0
Answers: 2022-04-14T04:34:58.673Z
Answers: Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer).
Answers: Community
Answers: CC BY-SA 4.0
Answers: 2022-04-14T03:35:27.047Z
Answers: 2022-04-14T03:35:27.047Z
Answers: Mathis Van Eetvelde
Answers: <p>In the event you are using a NAT instance instead of a NAT gateway, you need to make sure that the NAT instance is provisioned before the cluster. Usually terraform will handles these dependencies automatically, but in this case it is not aware of the depenedency since the NAT instance is just an EC2 instance that wouldn't typically need special status. You can enforce the provison order with</p>
  <pre><code>module &quot;eks&quot; {
    source = &quot;./modules/eks&quot;
    cluster_name    = var.cluster_name
    cluster_version = var.cluster_version
    vpc_id          = module.vpc.vpc_id
    subnet_ids      = module.vpc.private_subnets
    tags            = var.tags
    depends_on = [module.vpc, module.fck_nat] # This is the key point, where fck_nat is your nat instance module
  }
  </code></pre>
  
Answers: CC BY-SA 4.0
Answers: 2024-08-16T23:43:52.310Z
Answers: 2024-08-16T23:43:52.310Z
Answers: Adam Conrad
Body: <p>I'm setting up an EKS cluster using <a href="https://github.com/ManagedKube/kubernetes-ops" rel="nofollow noreferrer">https://github.com/ManagedKube/kubernetes-ops</a></p>
  <p>and, based on that code, when I do a <code>terraform apply</code> I'm getting a <code>NodeCreationFailure</code> error.</p>
  <p>Specifically:</p>
  <pre><code>│ Error: error waiting for EKS Node Group (staging:staging-ng12022040211190144860000000d) to create: unexpected state 'CREATE_FAILED', wanted target 'ACTIVE'. last error: 1 error occurred:
  │   * i-0d5c42031eaf061ff, i-0d9a073240fd29c45: NodeCreationFailure: Instances failed to join the kubernetes cluster
  </code></pre>
  <p>Admittedly, that's not much code, but does anyone have any pointers on where to start debugging?</p>
  
Tags: <eks>
Title: NodeCreationFailure: Instances failed to join the kubernetes cluster
UserDisplayName: Snowcrash
ThreadText: # NodeCreationFailure: Instances failed to join the kubernetes cluster
  
  (Asked by: username_0 on 2022-04-02)
  
  I'm setting up an EKS cluster using <https://github.com/ManagedKube/kubernetes-ops>
  
  and, based on that code, when I do a `terraform apply` I'm getting a `NodeCreationFailure` error.
  
  Specifically:
  
  ```
  │ Error: error waiting for EKS Node Group (staging:staging-ng12022040211190144860000000d) to create: unexpected state 'CREATE_FAILED', wanted target 'ACTIVE'. last error: 1 error occurred:
  │   * i-0d5c42031eaf061ff, i-0d9a073240fd29c45: NodeCreationFailure: Instances failed to join the kubernetes cluster
  
  ```
  
  Admittedly, that's not much code, but does anyone have any pointers on where to start debugging?
  
  **Tags:** eks
  
  
  ---
  
  ## 5 answers
  
  ### Answer by username_1 on 2022-04-15. Score: 2 | Accepted answer
  
  I incurred the same problem during one of my deployments.
  
  This happens due to the **Networking issue** of the EKS cluster. Assuming that you are working in AWS, follow the following steps to debug this problem:
  
  1. Check if your security groups are correctly configured correctly to your Nodes.
  2. If the EKS is present in the public sub-nets, check its connectivity to internet gateway and is able to access the internet.
  3. If Eks is present in the private sub-net, check the connectivity with NAT gateway and that NAT gateway is able to access the internet.
  
  
  ---
  
  ### Answer by username_2 on 2022-08-21. Score: 0
  
  I was getting the same issue, it was solved by creating another nat gateway and choosing public subnet and attaching that new nat gateway in routable to my private subnet.
  
  
  ---
  
  ### Answer by username_3 on 2023-11-07. Score: 0
  
  AWS has listed a set of reasons it could make Node groups to fail joining a cluster. Refer, <https://repost.aws/knowledge-center/eks-worker-nodes-cluster>
  I was able to understand that one of my security groups rejected the comms between Control Plane and the worker node. This troubleshooting was possible using System Automation - TroubleshootingEKSNode.
  
  
  ---
  
  ### Answer by username_4 on 2022-04-14. Score: 0
  
  I had a similar issue in the past where the nodes couldn't join the cluster.
  The cause of this was a mismatch in security groups, the nodes and the EKS control plane weren't allowed to talk to each other and therefore timed out.
  
  > **Comments:**
  > **username_5**: without some context to corroborate that these two situations are related, it's difficult to be sure that this is an answer. Have you got some output you can share, or other information, to link this answer to the question?  
  > **username_6**: Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer).  
  
  ---
  
  ### Answer by username_7 on 2024-08-16. Score: 0
  
  In the event you are using a NAT instance instead of a NAT gateway, you need to make sure that the NAT instance is provisioned before the cluster. Usually terraform will handles these dependencies automatically, but in this case it is not aware of the depenedency since the NAT instance is just an EC2 instance that wouldn't typically need special status. You can enforce the provison order with
  
  ```
  module "eks" {
    source = "./modules/eks"
    cluster_name    = var.cluster_name
    cluster_version = var.cluster_version
    vpc_id          = module.vpc.vpc_id
    subnet_ids      = module.vpc.private_subnets
    tags            = var.tags
    depends_on = [module.vpc, module.fck_nat] # This is the key point, where fck_nat is your nat instance module
  }
  
  ```
  
  
  ---
  
  