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

multi-init: exec format error on arm64 #8361

Closed
1 task done
samip5 opened this issue Sep 30, 2022 · 4 comments
Closed
1 task done

multi-init: exec format error on arm64 #8361

samip5 opened this issue Sep 30, 2022 · 4 comments
Labels
bug Something isn't working

Comments

@samip5
Copy link

samip5 commented Sep 30, 2022

App Name

multi-init

SCALE Version

Not using SCALE

App Version

N/A

Application Events

Type     Reason                  Age                    From                     Message
  ----     ------                  ----                   ----                     -------
  Warning  FailedScheduling        5m49s                  default-scheduler        0/5 nodes are available: 5 pod has unbound immediate PersistentVolumeClaims. preemption: 0/5 nodes are available: 5 Preemption is not helpful for scheduling.
  Warning  FailedScheduling        5m48s                  default-scheduler        0/5 nodes are available: 5 pod has unbound immediate PersistentVolumeClaims. preemption: 0/5 nodes are available: 5 Preemption is not helpful for scheduling.
  Normal   Scheduled               5m46s                  default-scheduler        Successfully assigned databases/pgadmin-7896dcfff5-mgjgz to k8s-worker5
  Normal   SuccessfulAttachVolume  5m35s                  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-c77b09b8-f177-4a98-88ea-8932dff24fd2"
  Normal   Pulled                  5m27s                  kubelet                  Container image "quay.io/k8tz/k8tz:0.8.0@sha256:7bba4420c8decfad816cc77a180f121cfc1e0e51058dec7662837b4ba41812b7" already present on machine
  Normal   Created                 5m26s                  kubelet                  Created container provide-timezone
  Normal   Started                 5m26s                  kubelet                  Started container provide-timezone
  Normal   Pulling                 5m25s                  kubelet                  Pulling image "tccr.io/truecharts/multi-init:v0.0.1@sha256:5c1367f74527c7cdf02d034d721d0d7ac15ac08f5ab0b7f9106152c05e053618"
  Normal   Pulled                  4m17s                  kubelet                  Successfully pulled image "tccr.io/truecharts/multi-init:v0.0.1@sha256:5c1367f74527c7cdf02d034d721d0d7ac15ac08f5ab0b7f9106152c05e053618" in 1m7.933463063s
  Normal   Pulled                  2m36s (x4 over 4m)     kubelet                  Container image "tccr.io/truecharts/multi-init:v0.0.1@sha256:5c1367f74527c7cdf02d034d721d0d7ac15ac08f5ab0b7f9106152c05e053618" already present on machine
  Normal   Created                 2m36s (x5 over 4m12s)  kubelet                  Created container prepare
  Normal   Started                 2m36s (x5 over 4m12s)  kubelet                  Started container prepare
  Warning  BackOff                 20s (x17 over 3m59s)   kubelet                  Back-off restarting failed container

Application Logs

k logs -n databases pgadmin-7896dcfff5-mgjgz prepare
exec /bin/sh: exec format error

Application Configuration

N/A

Describe the bug

The container is only built for amd64 which should be fixed to also build on arm64.

To Reproduce

  1. Create an arm64 k8s cluster
  2. Try to deploy any that uses the initcontainer
  3. Notice it failing.

Expected Behavior

It would just work.

Screenshots

N/A

Additional Context

N/A

I've read and agree with the following

  • I've checked all open and closed issues and my issue is not there.
@samip5 samip5 added the bug Something isn't working label Sep 30, 2022
@Ornias1993
Copy link
Member

Ornias1993 commented Sep 30, 2022

The error basically means "Not a ARM64 image", which is indeed correct.

We do not support arm64 and also don't build images for it.
That goes for any helm chart and any image we release.
We also do not plan to have arm64 images in the near future.

This has been a carefull choice, because a lot of up-stream containers do not support it either, so we would to either build everything ourselves or have varying support on a case-by-case basis. Both of which we definately do not have the manpower for.

In the potential case that ARM64 gains significant popularity enough that a majority of our users need it supported we might reconsider in a decade or so.

@samip5
Copy link
Author

samip5 commented Sep 30, 2022

Hi,

That means that M1 macs are also unsupported which is a shame.

@Ornias1993
Copy link
Member

Our primary target audience is currently running TrueNAS SCALE, which also does not support ARM64.

Besides that we are actively working to support Native Helm on what is basically the same hardware platform (but instead running helm directly). We never intended to also increase hardware platform support by supporting Native Helm.

But, most importantly, neither to a lot of the containers used.
So we would need to seperately start documenting which Charts do and do not support ARM64, add dedicated testing AND both contributors and maintainers to do so (because I definately have no interest in maintaining it, because I simply are short on time already)

@disconn3ct
Copy link

disconn3ct commented Nov 3, 2022

But, most importantly, neither to a lot of the containers used.

The example used for this issue is pgadmin4, which is only single-arch because of your mirror. Upstream is https://hub.docker.com/r/dpage/pgadmin4/ and supports arm64. Spot checking several others at random, it appears that a lot of your mirror is multi-arch upstream. That includes these 93 from Linuxserver, which are multi-arch for free. Even the base images you descend from are multi-arch.

This issue is the sole thing preventing arm users from using any of these containers and charts, because they cannot escape the init container even if they revert the service container to the multi-arch upstream.

Our primary target audience is currently running TrueNAS SCALE, which also does not support ARM64.

This does not show good faith to the community. You (the project) want us (everyone else, especially non-TrueNAS installations) to believe that we are safe to use and contribute to these repositories, and won't just end up working on benefiting your the commercial product for free. Saying "Too bad, we they don't support that in our commercial product" doesn't inspire confidence. (Edited)

So we would need to seperately start documenting which Charts do and do not support ARM64, add dedicated testing AND both contributors and maintainers to do so

Lovely hyperbole, but this is about the init container, not a roadmap for your whole helm/k8s project. The scope is simple: arm64 for the init container. I agree that it would be a lovely world if you had more documentation, and more support, and more charts, maintainers, unicorns, and free soda at your desk. None of that is required to build this container (and it's base) on arm64.

#10622 should dramatically lower all those maintenance efforts, helping find time for the roadmap you listed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants