Kubernetes service external ip pending

后端 未结 20 1722
你的背包
你的背包 2020-11-28 02:38

I am trying to deploy nginx on kubernetes, kubernetes version is v1.5.2, I have deployed nginx with 3 replica, YAML file is below,

apiVersion: extensions/v1be         


        
相关标签:
20条回答
  • 2020-11-28 03:10

    Adding a solution for those who encountered this error while running on amazon-eks.

    First of all run:

    kubectl describe svc <service-name>
    

    And then review the events field in the example output below:

    Name:                     some-service
    Namespace:                default
    Labels:                   <none>
    Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                                {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"some-service","namespace":"default"},"spec":{"ports":[{"port":80,...
    Selector:                 app=some
    Type:                     LoadBalancer
    IP:                       10.100.91.19
    Port:                     <unset>  80/TCP
    TargetPort:               5000/TCP
    NodePort:                 <unset>  31022/TCP
    Endpoints:                <none>
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:
      Type     Reason                  Age        From                Message
      ----     ------                  ----       ----                -------
      Normal   EnsuringLoadBalancer    68s  service-controller  Ensuring load balancer
      Warning  SyncLoadBalancerFailed  67s  service-controller  Error syncing load balancer: failed to ensure load balancer: could not find any suitable subnets for creating the ELB
    

    Review the error message:

    Failed to ensure load balancer: could not find any suitable subnets for creating the ELB
    

    In my case, the reason that no suitable subnets were provided for creating the ELB were:

    1: The EKS cluster was deployed on the wrong subnets group - internal subnets instead of public facing.
    (*) By default, services of type LoadBalancer create public-facing load balancers if no service.beta.kubernetes.io/aws-load-balancer-internal: "true" annotation was provided).

    2: The Subnets weren't tagged according to the requirements mentioned here.

    Tagging VPC with:

    Key: kubernetes.io/cluster/yourEKSClusterName
    Value: shared
    

    Tagging public subnets with:

    Key: kubernetes.io/role/elb
    Value: 1
    
    0 讨论(0)
  • 2020-11-28 03:11

    To access a service on minikube, you need to run the following command:

    minikube service [-n NAMESPACE] [--url] NAME
    

    More information here : Minikube GitHub

    0 讨论(0)
  • 2020-11-28 03:12

    If running on minikube, don't forget to mention namespace if you are not using default.

    minikube service << service_name >> --url --namespace=<< namespace_name >>

    0 讨论(0)
  • 2020-11-28 03:14

    Following @Javier's answer. I have decided to go with "patching up the external IP" for my load balancer.

     $ kubectl patch service my-loadbalancer-service-name \
    -n lb-service-namespace \
    -p '{"spec": {"type": "LoadBalancer", "externalIPs":["192.168.39.25"]}}'
    

    This will replace that 'pending' with a new patched up IP address you can use for your cluster.

    For more on this. Please see karthik's post on LoadBalancer support with Minikube for Kubernetes

    Not the cleanest way to do it. I needed a temporary solution. Hope this helps somebody.

    0 讨论(0)
  • 2020-11-28 03:15

    In case someone is using MicroK8s: You need a network load balancer.

    MicroK8s comes with metallb, you can enable it like this:

    microk8s enable metallb
    

    <pending> should turn into an actual IP address then.

    0 讨论(0)
  • 2020-11-28 03:16

    When using Minikube, you can get the IP and port through which you can access the service by running:

    minikube service [service name]
    

    E.g.:

    minikube service kubia-http
    
    0 讨论(0)
提交回复
热议问题