0

I have created an EKS cluster with two public subnets, however, created one worker node (instance type = t3.small) in one of the public subnets successfully.

I am able to create Nginx deployment and nodePort service and able to query the deployment and other k8s objects and also able to access this web application using node port (<Service-public-ip:nodeport>) successfully.

I am trying to create a load balancer alb and nlb, but both are failing

The whole setup is using the terraform file. I need help to identify why lb (both types) creation is failing, and how can i fix this in my terraform files

Terraform file for network load balancer:

resource "kubernetes_service_v1" "nlb-nginx-service" {
  metadata {
    name = "nlb-nginx-service"
    annotations = {
      "service.beta.kubernetes.io/aws-load-balancer-type" = "external"
      "service.beta.kubernetes.io/aws-load-balancer-nlb-target-type" = "ip"
      "service.beta.kubernetes.io/aws-load-balancer-scheme" = "internet-facing"
    }
  }
  spec {
    selector = {
      app = kubernetes_deployment_v1.nginx-application.spec.0.selector.0.match_labels.app
    }

    port {
      name        = "http"
      port        = 80
      target_port = 80
    }
    type = "LoadBalancer"
  }
}

ERROR I get when I describe the nlb service

Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  EnsuringLoadBalancer  119s  service-controller  Ensuring load balancer
PS F:\k8s-terraform-project\terraform-on-aws-ec2-main\k8s>

terraform file for application load balancer:

resource "kubernetes_service_v1" "alb-nginx-service" {
  metadata {
    name = "alb-nginx-service"
    annotations = {
      "kubernetes.io/ingress.class" = "alb"
    }
  }
  spec {
    selector = {
      app = kubernetes_deployment_v1.nginx-application.spec.0.selector.0.match_labels.app
    }

    port {
      name        = "http"
      port        = 80
      target_port = 80
    }
    type = "LoadBalancer"
  }
}

ERROR I get when i describe the nlb service

Events:
  Type     Reason                  Age                  From                Message
  ----     ------                  ----                 ----                -------
  Normal   EnsuringLoadBalancer    52s (x6 over 3m29s)  service-controller  Ensuring load balancer
  Warning  SyncLoadBalancerFailed  52s (x6 over 3m28s)  service-controller  Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB
PS F:\k8s-terraform-project\terraform-on-aws-ec2-main\k8s> 

Steps I took to identify, but unfortunately didnt work

  1. tried to create these services on the cluster one by one
  2. checked the services logs but didnt not get a clue
  3. Seems somewhere lb is not able to find a public subnet to place the lb service in aws, as it says 'could not find any suitable subnets for creating the ELB', but not aware where to mention/assign public subnet for my lb
Jagdish0886
  • 343
  • 1
  • 5
  • 20
  • my query is solved with the aws documentation: ```https://aws.amazon.com/premiumsupport/knowledge-center/eks-vpc-subnet-discovery/``` my public subnets were having typo in the tags, it should mandatorily have below tag ```"kubernetes.io/cluster/${local.eks_cluster_name}" = "shared"``` – Jagdish0886 Jan 07 '23 at 16:02

0 Answers0