Skip to content
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

Add initial support for ARM64 #8938

Merged
merged 10 commits into from
Jun 19, 2020
Merged

Add initial support for ARM64 #8938

merged 10 commits into from
Jun 19, 2020

Conversation

hakman
Copy link
Member

@hakman hakman commented Apr 18, 2020

This adds support for ARM64 worker nodes. Masters still require AMD64.

Fixes #8932
Fixes #6140

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Apr 18, 2020
@k8s-ci-robot k8s-ci-robot added area/api area/nodeup area/provider/openstack Issues or PRs related to openstack provider labels Apr 18, 2020
@hakman hakman force-pushed the arm64 branch 2 times, most recently from 2ef64f2 to d618ad3 Compare April 19, 2020 07:58
@hakman
Copy link
Member Author

hakman commented Apr 19, 2020

/assign @justinsb @mikesplain @rifelpet

@rifelpet rifelpet added this to the v1.19 milestone Apr 19, 2020
.travis.yml Outdated Show resolved Hide resolved
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label May 1, 2020
@hatemosphere
Copy link

M6g are in GA now, so this could bring even more value now...

@hakman
Copy link
Member Author

hakman commented May 13, 2020

@hatemosphere should be part of Kops 1.19. At the moment, I am waiting for the branch to be created to get started with the review and various improvements.

@mikesplain
Copy link
Contributor

@hakman This looks pretty good, you definitely need to rebase though before we can do a final review. This is quite a big PR... from the looks, there's not much we can do to break it up but it would be great if you thought of ways to make this more easily reviewable.

@hakman
Copy link
Member Author

hakman commented May 30, 2020

Thanks @mikesplain. I've been also thinking of ways to break this up. I think things changed quite a bit since I worked on this PR. Still waiting for the 1.18 branch to be created to do a rebase and go ahead with the review.

@hakman hakman changed the title Add initial support for ARM64 [WIP] Add initial support for ARM64 Jun 3, 2020
@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jun 3, 2020
@hakman
Copy link
Member Author

hakman commented Jun 3, 2020

Setting as WIP until #9216 is merged and this can be simplified. Code already changed too much for a simple rebase.

@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Jun 5, 2020
@hakman hakman force-pushed the arm64 branch 2 times, most recently from 887cbad to 102e2a2 Compare June 5, 2020 13:44
@k8s-ci-robot k8s-ci-robot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jun 18, 2020
@k8s-ci-robot k8s-ci-robot removed the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 19, 2020
@hakman
Copy link
Member Author

hakman commented Jun 19, 2020

Had to to one more rebase to restart the failed Netlify tests.
Thanks @mikesplain!

@mikesplain
Copy link
Contributor

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Jun 19, 2020
@k8s-ci-robot k8s-ci-robot merged commit b5b544d into kubernetes:master Jun 19, 2020
@hakman hakman deleted the arm64 branch June 19, 2020 03:02
@lubinszARM
Copy link

Hi @hakman
A quick question.
I'm from Arm.
Currently we also want to run prow jobs on an arm64 cluster.
In the following file, I can see that you have created similar jobs.
https://github.com/kubernetes/test-infra/blob/master/config/jobs/kubernetes/kops/kops-periodics-misc.yaml#L106

But I'm curious that, it seems gcr.io/k8s-testimages/kubekins-e2e:v20200623-2424179-master/bootstrap/sidecar/initupload/clonerefs does not support Arm64.
So, how did you run the test on an arm cluster?

Reference chart of our prow test for Arm64:
image

Related issue:
kubernetes/test-infra#16588
kubernetes/kubernetes#86295

@hakman
Copy link
Member Author

hakman commented Jun 29, 2020

@lubinszARM in this context, our setup just uses Kops to create a cluster in AWS and run tests remotely on it. Kops takes care of everything except running the test.

@lubinszARM
Copy link

/cc @zhlhahaha

@k8s-ci-robot k8s-ci-robot requested a review from zhlhahaha June 29, 2020 07:38
@zhlhahaha
Copy link

Hi, @hakman
I just read the PR kubernetes/test-infra#18034
For the job "e2e-kops-aws-misc-arm64", it uses image "gcr.io/k8s-testimages/kubekins-e2e:v20200623-2424179-master". However, the image is not support arm64 platform yet.
But, according to the result of the prow jobs, it looks working well. https://k8s-testgrid.appspot.com/sig-cluster-lifecycle-kops#kops-aws-arm64
How it works?

@hakman
Copy link
Member Author

hakman commented Jun 29, 2020

Hi @zhlhahaha @lubinszARM.

That image is started on AMD64 setup and runs a Kops binary to create a remote cluster in AWS. When that cluster is ready the e2e tests are run on the remote cluster: https://github.com/kubernetes/kops/blob/master/docs/development/testing.md.
Kops does things a bit differently than normal tests, so it is very flexible to try multiple screnarios, (different CNI plugins, different runtimes, ...).

So, there is no need in our case for a multi-arch image for kubekins-e2e, just support in tests. As you can see, there are very few issues remaining there.

There are also some issues with the build marker that is updated before the cross-build is done and tests fail because the ARM64 CI binaries are missing. There is a discussion about this in #sig-testing and hopefully there will be a solution soon.

Thanks for the referenced issues. Just browsed them, but will make some interesting read later.

Nice to see that Arm is pushing things in this direction!

@zhlhahaha
Copy link

Hi @hakman, I have read through the testing.md and it is quit interesting.
Thanks for your explaination!

@atam003
Copy link

atam003 commented Jan 21, 2021

@hakman
Will these changes work for kops for 1.18. if I try to back merge in the workspace.
I don't want to move to kops 1.19 as I see a few breaking (not backward compatible) changes (also it is a beta version).

@hakman
Copy link
Member Author

hakman commented Jan 21, 2021

@atam003 these changes will not work in kOps 1.18, there are too many changes.
kOps 1.19 will be released today so, no longer beta. In case it helps, you can use k8s 1.18 with it and enable ARM64 also.

@atam003
Copy link

atam003 commented Jan 25, 2021

@hakman
I still see the kops 1.19 beta version in Github. Any idea when it will be updated on GitHub or where should I look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. area/api area/nodeup area/provider/openstack Issues or PRs related to openstack provider cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add support for ARM64 Support of AWS a1.* instances (Arm-based)