-
Notifications
You must be signed in to change notification settings - Fork 38.8k
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
Multi-architecture plan for Kubernetes #38067
Comments
For the myriad images that we build that are 'from busybox' or 'from
alpine', we need stable, maintained base images for each arch.
There appear to be several for busybox, but NOT for alpine (also, don't
forget the apkg packages we need)...
…On Sun, Dec 4, 2016 at 8:20 AM, Lucas Käldström ***@***.***> wrote:
Background: I've implemented most of the multi-architecture Kubernetes has
today, and wrote the proposal here: https://github.com/kubernetes/
community/tree/master/contributors/design-proposals/multi-platform.md
Now it's time to continue improving the multi-arch experience as well.
Tasks to do:
- Deprecate armel and use armhf images instead and use GOARM=7 instead
of GOARM=6
- Motivation:
- The only GOARM=6 board Go will support in go1.8 is the
Raspberry Pi 1 which is just too slow to run newer Kubernetes versions.
- Performance improvements when usiing GOARM=7
- The armel (http://hub.docker.com/u/armel) images are not
updated as often as the armhf (http://hub.docker.com/u/armhf)
images are.
- Use go1.8 as fast as possible for arm and ppc64le (and of course
generally as well, but that will require the "real" release)
- Motivation:
- Brings us a lot of mandatory fixes for arm and ppc64le
- Brings us the SSA backend which is ~30% faster
- We can remove the patched golang for arm and start building
ppc64le binaries by default again
- arm hyperkube will start working again
- Even if it's beta, it's probably better than a self-patched
version of go1.7
- Proposal:
- Use go1.8-beta1 for the arm builds already in the v1.5 release
cc @saad-ali <https://github.com/saad-ali> @pwittrock
<https://github.com/pwittrock> @jessfraz
<https://github.com/jessfraz>
- Reenable ppc64le builds again by using go1.8betas until the
stable version of go1.8 is released and release v1.6 of kubernetes for
ppc64le with go1.8
- Evalute s390x as a new platform
- If no one loudly complains, I'm gonna take care of the PRs #37092
<#37092> and #36050
<#36050> and merge
them in time for v1.6
- Convert the essential images that are named registry/binary:version
to manifest lists
- TODO: Investigate rkt support for manifest lists:
appc/docker2aci#193 <appc/docker2aci#193>
- Wait for gcr.io to roll out a v2 schema 2 registry that support
manifest lists. @aronchick <https://github.com/aronchick> told me
it's gonna happen mid-December.
- Start building manifest lists when releasing Kubernetes
(kube-apiserver, kube-scheduler, etc.)
- Basically, all images will be named registry/binary-arch:version
as most of them are now, but then the image *without* the -arch bit
will be a manifest list which points to the right -arch image
depending on which arch docker runs on.
- Convert all other essential images to manifest lists, namely:
- etcd
- all kube-dns images
- the dashboard image
- all heapster images: first step: kubernetes-retired/heapster#1387
<kubernetes-retired/heapster#1387>
- Convert the ingress images to multiple architectures
cc-ing involved people here:
@kubernetes/sig-testing
<https://github.com/orgs/kubernetes/teams/sig-testing> @david-mcmahon
<https://github.com/david-mcmahon> @saad-ali <https://github.com/saad-ali>
@pwittrock <https://github.com/pwittrock> @Pensu
<https://github.com/pensu> @ixdy <https://github.com/ixdy> @jessfraz
<https://github.com/jessfraz> @thockin <https://github.com/thockin> @vishh
<https://github.com/vishh> @gajju26 <https://github.com/gajju26>
@brendandburns <https://github.com/brendandburns>
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#38067>, or mute the
thread
<https://github.com/notifications/unsubscribe-auth/AFVgVGTdwD5A1xAPzTWa7isNdjawuPVxks5rEug6gaJpZM4LDn3V>
.
|
mark, to learn later |
@thockin - you might sync with @tianon who is doing Alpine builds for aarch64 - we sorted out a few issues and then alpine edge started to work on that platform. Cf. https://hub.docker.com/r/aarch64/alpine/ What I don't know is the time schedule for the next release of Alpine, whether we'll have Alpine 3.5 with aarch64 support before or after Kubernetes 1.6. |
@vielmetti That's great! The thing that's more important though is getting the manifest lists working properly in core, and to make some manifest lists for official images available from Docker Hub. cc @tianon |
docker-library/official-images#2289 is the relevant discussion for supporting manifest lists in official images |
Now things are happening with this when go1.8rc1 was released: Regarding s390x, @ixdy said this in #36050 (comment):
I and @bowei will look into the DNS images soon I guess. We can look into the test images later. I have #38926 ready for review. Highlights there:
After this, I'm gonna start looking into making manifest lists for the official images so we can avoid |
Just FYI--IBM is doing some work to hopefully get alpine supported on ppc64le and s390x (or more completely in cases where work has already been underway). |
@estesp That's great! See the conversation about that here please: #40248 (comment) |
Automatic merge from submit-queue Improve the multiarch situation; armel => armhf; reenable pcc64le; remove the patched golang **What this PR does / why we need it**: - Improves the multiarch situation as described in #38067 - Tries to bump to go1.8 for arm (and later enable ppc64le) - GOARM 6 => GOARM 7 - Remove the golang 1.7 patch - armel => armhf - Bump QEMU version to v2.7.0 **Release note**: ```release-note Improve the ARM builds and make hyperkube on ARM working again by upgrading the Go version for ARM to go1.8beta2 ``` @kubernetes/sig-testing-misc @jessfraz @ixdy @jbeda @david-mcmahon @pwittrock
Hello. about s390x support I see for example k8s-dns-kube-dns-ppc64le and flannel-ppc64le, but not s390x variants for those. Will gcr.io/google_containers/flannel-s390x and gcr.io/google_containers/k8s-dns-kube-dns-s390x be build and published soon? Anything outstanding to make that happen? |
Both gcr.io/google_containers/flannel-s390x and gcr.io/google_containers/k8s-dns-kube-dns-s390x are work in progress. We just finish flannel porting and PR almost all done. Next is add enable build script to create image in gcr.io, might be a while though. |
cc @bowei The For flannel, you have to coordinate with them, the Overall, there are k8s binaries for s390x since v1.6.0-alpha.1 and adding debs for it + kubeadm is in the progress as well. |
IC, Yes, my team did the enablement for K8s binaries a while back and just got pick up since 1.6 alpha 1. We'll look at latest Flannel to see what we need to do. To provide gcr.io/google_containers/k8s-dns-kube-dns-s390x. do u know who we can talk to? Or we'll go thru our usual community route. |
@cwsolee -- send a pull request enabling the architecture to the repository |
@luxas can this be closed or moved to |
This can be moved to v1.7, it couldn't be fully implemented in v1.6 due to that gcr.io doesn't support manifest lists yet Moving milestone... |
Thanks @luxas . Is there a spot where gcr.io support for manifest lists is being discussed or addresssed? |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
@luxas or @mkumatag Background: I currently have the problem that It should rather use As workaround I'm putting a |
@JesusOfSuburbia - that sounds like a problem that should be raised as an issue of its own! |
@JesusOfSuburbia do you have a mixed cluster? because in kubeadm we already have code to take care arch and additional code also added recently to restrict the target node #64696 |
@mkumatag oh wow, thanks for the link. yes, I have a mixed cluster! it looks like the restriction takes the same approach I'm doing manually at the moment. Still waiting for the manifest lists though, but at least it's documented for now. Thanks again, also for your work! |
Update as of today
Guess eventual goal is to be able to run conformance tests on alternate architectures - vmware-tanzu/sonobuoy#181 @mkumatag anything else i missed? |
@dims you have covered it really well.. :) |
as of v1.12.0-beta.2, all the kubernetes release container images are multi-arch capable. Also conformance tests have switched to multi-arch as well. if there are any other images missing manifests, we should treat it as a bug and close this issue out. /close |
@dims: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
@mkumatag i managed to test the dns PR too, we need that to merge - kubernetes/dns#259 |
Background: I've implemented most of the multi-architecture Kubernetes has today, and wrote the proposal here: https://github.com/kubernetes/community/tree/master/contributors/design-proposals/multi-platform.md
Now it's time to continue improving the multi-arch experience as well.
Tasks to do:
armel
and usearmhf
images instead and useGOARM=7
instead ofGOARM=6
GOARM=6
board Go will support in go1.8 is the Raspberry Pi 1 which is just too slow to run newer Kubernetes versions.GOARM=7
armel
(http://hub.docker.com/u/armel) images are not updated as often as thearmhf
(http://hub.docker.com/u/armhf) images are.go1.8-beta1
for the arm builds already in the v1.5 release cc @saad-ali @pwittrock @jessfrazs390x
as a new platformregistry/binary:version
to manifest listsregistry/binary-arch:version
as most of them are now, but then the image without the-arch
bit will be a manifest list which points to the right-arch
image depending on which arch docker runs on.cc-ing involved people here:
@kubernetes/sig-testing @david-mcmahon @saad-ali @pwittrock @Pensu @ixdy @jessfraz @thockin @vishh @gajju26 @brendandburns
The text was updated successfully, but these errors were encountered: