-
Notifications
You must be signed in to change notification settings - Fork 825
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support Agones on ARM systems #2216
Comments
I can see us needing to support ARM in the future long term, so this is a good ticket to track this work. 👍🏻 Out of curiosity though: On an M1, can you only run arm docker images? (i.e. minikube won't work with anything else?) or is there a path to running x86 images? |
I looked into the issue some more and in fact you can run x86 images on M1 Mac Minikube. It works transparently through the Rosetta2 compatibility layer. The issue: when the pod is created, it pulls agones-sdk:1.16.0 without an additional tag, which on a default M1 Mac install requests the nonexistent ARM64 image. I got it to work by editing the pod spec to specifically pull the agones-sdk:1.16.0-linux_amd64 image. After this step, both containers in the xonotic-example pod are working. For what it's worth, I think this only works because of Apple's x86 emulation. It would still be helpful to add the ARM image tag for users on ARM platforms without robust emulation support. |
I agree. Also combined with #2223 we should probably cross compile all the components. |
@wernerphysics I'm having the same issue. Could you elaborate on what you meant by
I'm still sort new to k8s 😅 |
If we want to do this in pieces, to start, let's get a ARM binary generated: Lines 382 to 384 in 15678b6
(Do you need an arm binary for local sdk server development?) |
Consolidating this with #2223 - making a note that to run on K8s clusters that are entirely ARM, we (may?) need to also provide a build of the controller as well (testing likely required). |
There's definitely a better way to do this (probably changing the default SDK when you Helm install Agones), but here's my quick and dirty fix. When the pod is running, edit the spec with something like |
You could also edit the install.yaml, or if you are using helm, tweak the |
I manage to build the side car image (agones-sdk) for arm based server (AWS Graviton) and use the helm template to generate the yaml to use my private repo. Other components still run on amd64 instance but planning to cross compile them and test it in coming weeks. It's a good start. 😁 |
@tuapuikia can you share what you did as a PR? Unfortunately it's only useful to the project if you share what it is you have done 😄 |
Hi @markmandel, My use case is to host a game server on the AWS Gravition instance to save cost and utilize the new powerful AWS instance type. Below is what I have done.
TF module https://github.com/tuapuikia/terraform-eks-arm The patch of the makefile is still messy and not ready for PR. |
Oops, work not complete yet, so let's not close this. |
Question: Have we done the PING service? |
I don't think so. I only see arm tags for the sidecar, allocator, and controller: Lines 244 to 248 in 849b4d3
|
I think that's the last bit then - @Ludea |
Oops, looks like the screenshot broke? |
So there should be a few ping pods as well. This is what it looks like on my GKE cluster:
Also, lots of points for being able to run kubectl on your phone. 😁 I'm willing to bet you have the Deployments in place for it, but the image pull for arm64 is failing. |
Thanks !
I hit #2578 so I install #2581 image tag. |
I believe so! Will likely want to have a few of us test some scenarios on an ARM cluster, but I think that's the last step. |
oooh, I thought of one more thing! https://github.com/googleforgames/agones/blob/main/examples/simple-game-server < that will need to also be updated, as that's the sample we use for all our e2e tests, so we'll need that too so that we can run the e2e tests on a arm cluster (and manual tests too). (Should probably have done a checklist in the beginning) |
So just attempted to build
|
Looks like |
Spoke too soon.
|
I reckon I have the fixes in place to make it work - just testing now against both an ARM64 and a AMD64 clusters to make sure everything is golden. |
Fixes: * Run `go mod tidy` otherwise failure to compile * Fix building on amd64 * Fix target for building manifest appropriately. Work on googleforgames#2216
Fixes: * Run `go mod tidy` otherwise failure to compile * Fix building on amd64 * Fix target for building manifest appropriately. Work on #2216 Co-authored-by: Robert Bailey <robertbailey@google.com>
We should move all the e2e tests over to this image as well. |
Added a section in the installation docs where we specify the supported cluster requirements. Now we're supporting multiple OS's and architectures at different levels, I've added a table to indicate each of the levels, so that users are aware. I didn't keep arm64 for the past release, since we know the controller is broken for 1.23.0. As part of this work, I moved the note on node pools into its own "best practices" section. Work on googleforgames#2216
Added a section in the installation docs where we specify the supported cluster requirements. Now we're supporting multiple OS's and architectures at different levels, I've added a table to indicate each of the levels, so that users are aware. I didn't keep arm64 for the past release, since we know the controller is broken for 1.23.0. As part of this work, I moved the note on node pools into its own "best practices" section. Work on #2216 Co-authored-by: Robert Bailey <robertbailey@google.com>
Can we close this now? I think we're good? WDYT @roberthbailey ? |
Yes. We now have alpha support for ARM (documented here) and I think this can be closed. As with feature gate promotions, we can open tickets specifically targeted at moving from alpha towards stable going forward. |
I'm running Agones in a local Minikube cluster on an M1 Mac. When I create a basic xonotic game server from this repo's examples, I get an Image Pull Error. The error details specify that the image "gcr.io/agones-images/agones-sdk" does not have a linux/arm64/v8 manifest. The issue seems to be that the Docker runtime when running on M1 Mac expects only ARM images.
My suggestion is to provide an ARM64 build of the Agones SDK in the GCR repo so that developers on ARM machines can run Agones/Minikube locally.
The text was updated successfully, but these errors were encountered: