kube-router icon indicating copy to clipboard operation
kube-router copied to clipboard

healthCheckNodePort doesn't work

Open axelbodo opened this issue 7 years ago • 7 comments

healthCheckNodePort doesn't work for LoadBalancer type services with externalTrafficPolicy set to local. For example ingress-nginx:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: ingress-nginx
  name: ingress-nginx
  namespace: ingress-nginx
  resourceVersion: "518"
  selfLink: /api/v1/namespaces/ingress-nginx/services/ingress-nginx
  uid: 579805c3-6591-11e8-bb77-0251d17162b6
spec:
  clusterIP: 100.64.17.171
  externalTrafficPolicy: Local
  healthCheckNodePort: 32534
  ports:
  - name: http
    nodePort: 31156
    port: 80
    protocol: TCP
    targetPort: http
  - name: https
    nodePort: 31244
    port: 443
    protocol: TCP
    targetPort: https
  selector:
    app: ingress-nginx
  sessionAffinity: None
  type: LoadBalancer

With kube-proxy, every nodes listens on healtcheck port, but only those reply with 200 which has localEndpoint(s), the others reply with 503. In case of kube-router no healtheck operation is served for our aws elb, and elb reports instances as OutOfService. Viewing ipvsadm, every node registers itself as virtual server for the named ports, and only those have real server(s), which has local endpoint(s), but no node registers the healthCheckNodePort.

If needed I'll recreate other listing (ipvsadm, aws elb), but now we switched back to kubenet in order advance in work.

axelbodo avatar Jun 01 '18 12:06 axelbodo

@axelbodo thanks for reporting the issue. i will take a look into it.

murali-reddy avatar Jun 06 '18 18:06 murali-reddy

We also hit this very recently and switched the service to using externalTrafficPolicy to Cluster again. Is there anything we can do and/or help with in advancing this? If I understand it correctly, the healthCheck feature for externalTrafficPolicy: Local is not even implemented yet?

mikn avatar Jun 11 '18 10:06 mikn

@axelbodo @mikn Unfortunatley necessary functionality was not implemented. I will add support for healthCheck feature and make a new release.

murali-reddy avatar Jun 12 '18 04:06 murali-reddy

@murali-reddy I just want to bring this issue onto your radar as you work on this implementation: https://github.com/kubernetes/kubernetes/issues/50977 Which is eerily similar to the issue I reported here: https://github.com/cloudnativelabs/kube-router/issues/467

mikn avatar Jun 14 '18 15:06 mikn

Hello, Was this solved? I have the same issue...

denmaddog avatar Jul 26 '19 18:07 denmaddog

Hi!

Any update on that? We are using kube-router and AWS. When setting External Traffic Policy: Local on a LoadBalancer, k8s allocates healthCheckNodePort that is unavailable and it breaks the LoadBalaner

ngalaiko avatar Jun 17 '20 07:06 ngalaiko

Any update on that?

Not planned yet. PR's is welcomed though.

murali-reddy avatar Jun 17 '20 18:06 murali-reddy

This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.

github-actions[bot] avatar Sep 06 '23 02:09 github-actions[bot]

This issue was closed because it has been stale for 5 days with no activity.

github-actions[bot] avatar Sep 11 '23 02:09 github-actions[bot]