l7mp / stunner

A Kubernetes media gateway for WebRTC. Contact: info@l7mp.io
https://l7mp.io
MIT License
751 stars 58 forks source link

Mixed protocol available for AWS? If not how to setup health check if not supported? #125

Closed ddeepak-23 closed 7 months ago

ddeepak-23 commented 9 months ago

Hi, as far as I have read, support for health check has been enabled by default and supported on AWS as per documentation. Then, why its saying mixed-protocol not supported. Is there any particular version need to be used.

▶ kubectl describe svc udp-gateway -n stunner Name: udp-gateway Namespace: stunner Labels: stunner.l7mp.io/owned-by=stunner stunner.l7mp.io/related-gateway-name=udp-gateway stunner.l7mp.io/related-gateway-namespace=stunner Annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb service.beta.kubernetes.io/do-loadbalancer-healthcheck-path: /live service.beta.kubernetes.io/do-loadbalancer-healthcheck-port: 8086 service.beta.kubernetes.io/do-loadbalancer-healthcheck-protocol: http stunner.l7mp.io/related-gateway-name: stunner/udp-gateway Selector: app=stunner,stunner.l7mp.io/related-gateway-name=udp-gateway,stunner.l7mp.io/related-gateway-namespace=stunner Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: 10.100.114.141 IPs: 10.100.114.141 Port: udp-listener 3478/UDP TargetPort: 3478/UDP NodePort: udp-listener 31389/UDP Endpoints: 192.168.35.136:3478 Port: gateway-health-check 8086/TCP TargetPort: 8086/TCP NodePort: gateway-health-check 32328/TCP Endpoints: 192.168.35.136:8086 Session Affinity: None External Traffic Policy: Cluster Events: Type Reason Age From Message


Normal EnsuringLoadBalancer 27s (x5 over 102s) service-controller Ensuring load balancer Warning SyncLoadBalancerFailed 27s (x5 over 102s) service-controller Error syncing load balancer: failed to ensure load balancer: mixed protocol is not supported for LoadBalancer

rg0now commented 9 months ago

My understanding is that the issue is reported by Kubernetes and not by STUNner: STUNner tries to create the mixed-protocol-LB and the platform fails the request. You can easily check that by creating a Kubernetes LB Service manually with a UDP and a TCP service-port. If that fails too, your cloud provider does not support mixed-protocol-LBs.

As per versions: we recommend the latest stable STUNner version, this is supposed to be v0.17.0 as of now. The Kubernetes version does not matter that much, but for mixed-protocol-LB support in particular you most probably need Kubernetes v1.27 or newer.

slps970093 commented 7 months ago

You can refer to this article I have completed the AWS ELB health check https://aws.amazon.com/tw/blogs/containers/how-to-route-udp-traffic-into-kubernetes/

rg0now commented 7 months ago

Closing this for now, feel free to reopen of you have new input.

pandvan commented 1 month ago

I have completed the AWS ELB health

Which port did you set for health check? We have only UDP exposed for STUNner, but a TCP one is needed for health check.