agones: agones-ping-udp-service brings up incompatible load balancer in EKS
What happened:
When installing Agones in an EKS cluster, the agones-ping-udp-service fails to create with the following error:
Warning CreatingLoadBalancerFailed 1s (x4 over 37s) service-controller Error creating load balancer (will retry): failed to ensure load balancer for service agones-system/agones-ping-udp-service: Only TCP LoadBalancer is supported for AWS ELB
What you expected to happen: The service should have created successfully.
How to reproduce it (as minimally and precisely as possible): Build an EKS cluster, follow installation instructions for Agones.
Anything else we need to know?:
Yes, we already know the fix! The service needs the following annotation:
annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb
Environment:
- Agones version: 1.0.0
- Kubernetes version (use
kubectl version
): 1.12 - Cloud provider or hardware configuration: AWS/EKS
- Install method (yaml/helm): YAML, but I checked the Helm chart and it would have the same issue
- Troubleshooting guide log(s): n/a
- Others:
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Comments: 28 (12 by maintainers)
Yeah, also that’s totally a separate thing that affects more Pod creation for GameServers (although, very interesting! 😄 )
Question though: Is this a documentation issue?
If we added some kind of AWS installation docs that said what
agones.ping.udp.annotations
andagones.ping.http.annotations
should be on installation, would that solve the issue?Can someone who clearly knows EKS way better than I do file a PR for the docs? That would be aces.
Sounds like you’ve got it worked out @vara-bonthu ?
After typing this, I realize it might be overkill if
MixedProtocolLBService
is going to be supported in EKS (and other k8s integrations for AWS). Maybe just updating the YAML is best so the UDP ping service at least starts.service.beta.kubernetes.io/aws-load-balancer-type
does bring up a valid NLB with a target group, but the nodes in the target group fail healthchecks as NLBs do not support UDP healthchecks and would fail TCP healthchecks on the traffic port.LoadBalancer
services w/ mixed UDP and TCP ports are not currently supported, but I was able to get this working by doing some manual setup of the Agones ping service and setting the following annotations on the UDP ping service:This will be cleaner in the future when
MixedProtocolLBService
is suported in EKS.The upstream fix for this has landed in k8s master, so will be in 1.19, which should be available in EKS sometime in 2021.
@aLekSer based on your output, it looks like the service is still trying to build without the annotation. You need to completely destroy the service and rebuild it for that to work. When I tested this it was in fact on 1.12.
You’re getting the same error message that indicates that the load balancer was built sans annotation: “Only TCP LoadBalancer is supported for AWS ELB.” There’s a brief AWS doc on the annotation here.