Ingress-nginx: service default/... does not have any active endpoints

Created on 8 Feb 2017  ·  34Comments  ·  Source: kubernetes/ingress-nginx

Hi,

I've upgraded gcr.io/google_containers/nginx-ingress-controller from 0.8.3 to 0.9.0-beta.1. But now I'm facing the issue that no service is available through the ingress controller. It will always result in 503 status code responses.

Log looks like this:

W0208 15:59:58.498949       6 controller.go:806] service default/webapp-master does not have any active endpoints
W0208 15:59:58.499025       6 controller.go:560] service default/ingress-nginx-default-backend does not have any active endpoints
(repeating every 10 seconds)

The generated nginx.conf contains ony upstream entries with 127.0.0.1:8181 as backend endpoint:

   upstream default-webapp-master-80 {
        least_conn;
        server 127.0.0.1:8181 max_fails=0 fail_timeout=0;
    }
    upstream upstream-default-backend {
        least_conn;
        server 127.0.0.1:8181 max_fails=0 fail_timeout=0;
    }

Any idea what is going wrong?

I only updated the ingress controller. ingress resources where not changed. One example ingress resource looks like this:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: webapp-master
  annotations:
    proxy-body-size: 100m
spec:
  rules:
  - host: hostname.domain.example
    http:
      paths:
      - path: /
        backend:
          serviceName: webapp-master
          servicePort: 80

The matching service like this:

kind: Service
apiVersion: v1
metadata:
  name: webapp-master
spec:
  ports:
  - port: 80
    targetPort: http
  selector:
    app: webapp-master

Most helpful comment

I had the same error and changed my path from /* to / and it worked (I see you have / above though

All 34 comments

@foxylion there is a bug in 0.9.0-beta.1 already fixed in master (https://github.com/kubernetes/ingress/pull/121).
In the meantime if you change targetPort to 80 instead a string it will work.
Apologies for the inconvenience.

@aledbf Thanks for your quick response. I'll try that.

Is there any schedule when new releases are done?

Fix included in next release #303
Please reopen if you still have issues.

This is not fixed in 0.9.0-beta.4

2017/04/27 09:19:30 [warn] 12477#12477: *39354 using uninitialized "proxy_upstream_name" variable while logging request

still in in 0.9.0-beta.5

2017/05/24 08:05:38 [warn] 379#379: *7 using uninitialized "proxy_upstream_name" variable while logging request, client: myclient, server: _, request: "GET / HTTP/1.1", host: "myhost"

I have the same problems described here and i confirm with the latest beta6 and i confirm that changing targetPort from a string to the port fixed the ingress, but i have a lot of panic like this:

 0.054 401
panic: runtime error: index out of range

goroutine 660 [running]:
k8s.io/ingress/vendor/github.com/paultag/sniff/parser.GetSNBlock(0xc4204d8070, 0xf90, 0xf90, 0xc4204d8070, 0xf90, 0xf90, 0x0, 0x0)
    /home/nicksardo/go/src/k8s.io/ingress/vendor/github.com/paultag/sniff/parser/parser.go:91 +0x1d1
k8s.io/ingress/vendor/github.com/paultag/sniff/parser.GetHostname(0xc4204d8000, 0x1000, 0x1000, 0x1000, 0x205, 0x0, 0x0)
    /home/nicksardo/go/src/k8s.io/ingress/vendor/github.com/paultag/sniff/parser/parser.go:42 +0xee
main.(*proxy).Handle(0xc4204d4f60, 0x1d6ada0, 0xc4204470e8)
    /home/nicksardo/go/src/k8s.io/ingress/controllers/nginx/pkg/cmd/controller/tcp.go:45 +0x1dc
created by main.newNGINXController.func1
    /home/nicksardo/go/src/k8s.io/ingress/controllers/nginx/pkg/cmd/controller/nginx.go:121 +0x260
nginx git:dev ❯ kubectl get pod -nnginx-ingress
nginx git:dev ❯ kubectl get pod -nnginx-ingress                                                                                                                                                   ✹
NAME                                    READY     STATUS             RESTARTS   AGE
default-http-backend-3723061492-lbbbv   1/1       Running            0          18d
nginx-3602923031-h2582                  0/1       CrashLoopBackOff   6          15m
nginx-3602923031-hm4l8                  1/1       Running            5          15m

I had to revert back the ingress controller to the 0.8.3.

What could i share to debug better the issue ?

@paolomainardi I would suggest you to create a separate issue (this shouldn't be caused by this one).
And then ideally add a minimal example to reproduce the issue (including ingress and service configurations).

@foxylion to me it seems related as i had "service default/service does not have any active endpoints" that was causing the failure that has been fixed changing the targetPort from a string to an integer.

@paolomainardi Okay, so replacing the labeled targetPorts fixes the "index out of range" panic? Sorry, then this should maybe be reopened.

ping @aledbf

@paolomainardi can you share the service and ingress definition?

@aledbf i have the same problem

In gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.5 it does work, with

gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.7 i got the error

W0527 15:27:27.667881       1 controller.go:842] service external-logging/kibana-svc does not have any active endpoints

Here are the deployment, service and Ingress

metadata:
  name: kibana-deployment
  namespace: external-logging
spec:
  replicas: 1
  template:
    metadata:
      labels:
        component: kibana
    spec:
      containers:
      - name: kibana
        image: example.net/kibana:5.2.2
        imagePullPolicy: IfNotPresent
        resources:
          # keep request = limit to keep this container in guaranteed class
          limits:
            cpu: 100m
          requests:
            cpu: 100m
        env:
        - name: "ELASTICSEARCH_URL"
          value: "http://elasticsearch-external-logging:9200"
        ports:
        - containerPort: 5601
          name: ui
          protocol: TCP
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kibana-ingress
  namespace: external-logging
spec:
  rules:
  - host: kibana.example.net
    http:
      paths:
      - path: /
        backend:
          serviceName: kibana-svc
          servicePort: 5601



md5-a6fb2ddac916ed064cdbb942b9db7b05



apiVersion: v1
kind: Service
metadata:
  name: kibana-svc
  namespace: external-logging
  labels:
    component: kibana-svc
spec:
  type: NodePort
  ports:
  - port: 5601
    protocol: TCP
    targetPort: 5601
  selector:
    component: kibana

I had the same error and changed my path from /* to / and it worked (I see you have / above though

I've encountered the same issue with the fluentd-elasticsearch service and it turned out to be RBAC related.

I viewed the following in my logs

W0601 18:40:36.085507 1 controller.go:1106] error mapping service ports: error syncing service kube-system/kibana-logging:
User "system:serviceaccount:nginx-ingress:nginx-ingress-serviceaccount" cannot update services in the namespace "kube-system". (put services kibana-logging)

An easy fix was to change the targetPort parameter from ui to 5601 in the kibana-logging service definition. Proper fix was updating the permissions.

I encountered this issue after upgrading from 0.8.3 to 0.9.0-beta.17. Changing targetPorts in services from labels to integers fixed it, so I guess this should be reopened.

@ianmartorell please open a new issue

I was having this error in the newest version and follow the @chainlink advise.

Change the path to / and works like a charm!

It was /* before.

still in quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.13.0

I0509 02:52:13.119086      17 controller.go:179] ingress backend successfully reloaded...
W0509 02:52:27.241087      17 controller.go:775] service kube-system/mongoclient does not have any active endpoints
W0509 02:52:27.241269      17 controller.go:315] service go/service-ll-onegameinfo does not have any active endpoints for port 60104 and protocol TCP
W0509 02:52:27.241303      17 controller.go:315] service default/service-xxzhushou-script-detail04 does not have any active endpoints for port 12004 and protocol TCP
W0509 02:52:27.241323      17 controller.go:315] service go/service-ipa-pkg-relation does not have any active endpoints for port 20401 and protocol TCP
W0509 02:52:27.241329      17 controller.go:315] service go/service-ll-open-game-list does not have any active endpoints for port 60102 and protocol TCP
W0509 02:52:27.241353      17 controller.go:315] service go/service-gift-center does not have any active endpoints for port 30001 and protocol TCP
W0509 02:52:27.241369      17 controller.go:315] service default/service-xxzhushou-script-detail02 does not have any active endpoints for port 12002 and protocol TCP
W0509 02:52:27.241378      17 controller.go:315] service default/service-banner-center does not have any active endpoints for port 13010 and protocol TCP
W0509 02:52:27.241395      17 controller.go:315] service go/service-ipa-base-info-init does not have any active endpoints for port 20402 and protocol TCP
W0509 02:52:27.241414      17 controller.go:315] service go/service-ll-onegameinfo does not have any active endpoints for port 14000 and protocol TCP
W0509 02:52:27.241435      17 controller.go:315] service go/service-game-center-brief does not have any active endpoints for port 13000 and protocol TCP
W0509 02:52:27.241443      17 controller.go:315] service go/service-ipa-push-collect does not have any active endpoints for port 15020 and protocol TCP
.......
ame-consult-center-etcd does not have any active endpoints for port 25006 and protocol TCP
I0509 02:52:27.241807      17 controller.go:170] backend reload required
I0509 02:52:27.241816      17 util.go:67] rlimit.max=65536
I0509 02:52:27.241821      17 nginx.go:560] maximum number of open file descriptors : 7168
I0509 02:52:27.305661      17 nginx.go:661] NGINX configuration diff

@0312birdzhang what's your kubernetes version?

@rikatz sorry it's my fault, the endpoints has been deleted, so the log is right.

Hi here. I observed the issue in quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.21.0. My Kubernetes version is v1.10.9-gke.5.

Ingress controller log:

I0121 22:10:29.344764       7 main.go:240] Running in Kubernetes cluster version v1.10+ (v1.10.9-gke.5) - git (clean) commit d776b4deeb3655fa4b8f4e8e7e4651d00c5f4a98 - platform linux/amd64
I0121 22:10:29.386501       7 main.go:101] Validated polyaxon/polyaxon-polyaxon-http-backend as the default backend.
I0121 22:10:30.392505       7 nginx.go:258] Starting NGINX Ingress controller
I0121 22:10:30.457125       7 event.go:221] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"polyaxon", Name:"polyaxon-polyaxon-ingress-config", UID:"5a4a5e0d-1dc9-11e9-83c0-42010a800260", APIVersion:"v1", ResourceVersion:"13351", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap polyaxon/polyaxon-polyaxon-ingress-config
I0121 22:10:31.514043       7 event.go:221] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"polyaxon", Name:"polyaxon-polyaxon-ingress", UID:"5ad20259-1dc9-11e9-83c0-42010a800260", APIVersion:"extensions/v1beta1", ResourceVersion:"13486", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress polyaxon/polyaxon-polyaxon-ingress
I0121 22:10:31.631037       7 leaderelection.go:187] attempting to acquire leader lease  polyaxon/ingress-controller-leader-polyaxon-ingress...
I0121 22:10:31.631418       7 nginx.go:279] Starting NGINX process
W0121 22:10:31.633066       7 controller.go:373] Service "polyaxon/polyaxon-polyaxon-http-backend" does not have any active Endpoint
W0121 22:10:31.633276       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:31.633521       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
I0121 22:10:31.633775       7 controller.go:172] Configuration changes detected, backend reload required.
I0121 22:10:31.643935       7 status.go:148] new leader elected: polyaxon-polyaxon-ingress-controller-555f798499-t4ckk
I0121 22:10:31.948223       7 controller.go:190] Backend successfully reloaded.
I0121 22:10:31.948498       7 controller.go:202] Initial sync, sleeping for 1 second.
[21/Jan/2019:22:10:32 +0000]TCP200000.000
W0121 22:10:35.350817       7 controller.go:373] Service "polyaxon/polyaxon-polyaxon-http-backend" does not have any active Endpoint
W0121 22:10:35.351764       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:35.351810       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:38.704066       7 controller.go:373] Service "polyaxon/polyaxon-polyaxon-http-backend" does not have any active Endpoint
W0121 22:10:38.731051       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:38.731161       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:42.017665       7 controller.go:373] Service "polyaxon/polyaxon-polyaxon-http-backend" does not have any active Endpoint
W0121 22:10:42.017717       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:42.017748       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:45.351979       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.
W0121 22:10:45.352048       7 controller.go:826] Service "polyaxon/polyaxon-polyaxon-api" does not have any active Endpoint.

Service spec:

apiVersion: v1
kind: Service
metadata:
  name: polyaxon-polyaxon-api
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: api
    nodePort: 30760
    port: 80
    protocol: TCP
    targetPort: 80
  - name: streams
    nodePort: 31901
    port: 1337
    protocol: TCP
    targetPort: 1337
  selector:
    app: polyaxon-polyaxon-api
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

Ingress spec

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: polyaxon-polyaxon-ingress
spec:
  rules:
  - host: chart-example.local
    http:
      paths:
      - backend:
          serviceName: polyaxon-polyaxon-api
          servicePort: 80
        path: /
      - backend:
          serviceName: polyaxon-polyaxon-api
          servicePort: 1337
        path: /ws
status:
  loadBalancer: {}

BTW, I verified that Endpoints exists

$ kubectl get endpoints -l app=polyaxon-polyaxon-api
NAME                    ENDPOINTS                       AGE
polyaxon-polyaxon-api   x.x.x.x:1337,x.x.x.x:80         26m

Please advise how to resolve this issue. Thanks in advance!

@ChenyuanZ if you use type: LoadBalancer in the service, you are creating a new cloud load balancer ($$$), please change that. Also, the service and the ingress must be present in the same namespace (polyaxon/polyaxon-polyaxon-api -> namespace: polyaxon, service: polyaxon-polyaxon-api)

Hi @aledbf

I have tried both NodePort and ClusterIP. But the does not have any active endpoints issue exists in all cases.

The service and ingress are in the same namespace polyaxon as shown in the example below.

In the example below, I changed service from LoadBalancer to NodePort, and restarted ingress-controller. But the same error persisted.

$ kubectl get ingress --all-namespaces
NAMESPACE   NAME                        HOSTS                 ADDRESS         PORTS     AGE
polyaxon    polyaxon-polyaxon-ingress   chart-example.local   x.x.x.x   80        38m

kubectl get svc --all-namespaces -l app=polyaxon-polyaxon-api
NAMESPACE   NAME                    TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                       AGE
polyaxon    polyaxon-polyaxon-api   NodePort   x.x.x.x   <none>        80:30760/TCP,1337:31901/TCP   39m

@ChenyuanZ please post the output kubectl get ep --all-namespaces -l app=polyaxon-polyaxon-api

Hi @aledbf

$ kubectl get ep --all-namespaces -l app=polyaxon-polyaxon-api
NAMESPACE   NAME                    ENDPOINTS                       AGE
polyaxon    polyaxon-polyaxon-api   x.x.x.x:1337,x.x.x.x:80   47m

@ChenyuanZ please open a new issue. Before that, please change the ingress controller deployment and add the flag --v=5 and post the log in the issue (create a gist to post the log).
Also, post the deployment of the ingress controller itself.

Hi @aledbf. I've created an issue at #3687

Hi here, I have some Service "X" does not have any active Endpoint. also in the controller logs, I'm running nginx-ingress 0.24.1 my kubernetes version is v1.14.1, i'm running an empty nginx image to test everything, here is my deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: nginx
  name: nginx-deploy-main
spec:
  replicas: 1
  selector:
    matchLabels:
      run: nginx-main
  template:
    metadata:
      labels:
        run: nginx-main
    spec:
      containers:
      - image: nginx
        name: nginx

The service

apiVersion: v1
kind: Service
metadata:
  name: demo-example-com-nginx
spec:
  selector:
    app: nginx-deploy-main
  ports:
  - targetPort: http
    port: 80

and the ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: demo-example-com
  annotations:
    kubernetes.io/ingress.class: "nginx"
    certmanager.k8s.io/cluster-issuer: "letsencrypt-prod"
    certmanager.k8s.io/acme-challenge-type: http01
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  tls:
  - hosts:
    - demo.example.com
    secretName: letsencrypt-prod
  rules:
  - host: demo.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: demo-example-com-nginx
          servicePort: 80

The certificate is well generated, but when I try to access the url I have a 503 error with those logs in the controller

W0521 09:29:12.240234       6 controller.go:797] Service "default/demo-example-com-nginx" does not have any active Endpoint.

Any help, please? Thank you

@kariae please use the kubectl plugin to get information about the ingresses https://kubernetes.github.io/ingress-nginx/kubectl-plugin/#ingresses
Also, you can use kubectl get ep demo-example-com-nginx to get the endpoints. If you don't see any, it means you have issues with your service selectors

@aledbf I have an endpoint demo-example-com-nginx <none> 40m, I'm installing the plugin to get more details

Edit:
I used the plugin to get the list of ingresses, I have it there but without endpoint:

INGRESS NAME      HOST+PATH          ADDRESSES   TLS   SERVICE                 SERVICE PORT   ENDPOINTS
demo-example-com   demo.example.com/               YES   demo-example-com-nginx   80             0

That means you don't have a pod running for that service. You should see an IP address in that field

@aledbf thanks so much, I did mis-configure the selector in my service 😅

Was this page helpful?
0 / 5 - 0 ratings

Related issues

kfox1111 picture kfox1111  ·  3Comments

lachlancooper picture lachlancooper  ·  3Comments

jwfang picture jwfang  ·  3Comments

c-mccutcheon picture c-mccutcheon  ·  3Comments

boazj picture boazj  ·  3Comments