kubernetes: Conformance image v1.18.0 fails on arm64
What happened:
gcr.io/google-containers/conformance:v1.18.0 produces an error:
standard_init_linux.go:211: exec user process caused "exec format error"
What you expected to happen: Conformance tests should be launched. Examining image contents indicates executables are of the correct architecture.
How to reproduce it (as minimally and precisely as possible): From aarch64 machine:
docker run --rm -it --entrypoint bash gcr.io/google-containers/conformance:v1.18.0 -c "echo ok"
Anything else we need to know?: Works with v1.17.4:
# docker run --rm -it --entrypoint bash gcr.io/google-containers/conformance:v1.17.4 -c "echo ok"
ok
Environment:
- Kubernetes version (use
kubectl version):
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0+k3s-5fe1f025", GitCommit:"5fe1f02592397c8a199b898113eb3e798905e918", GitTreeState:"clean", BuildDate:"2020-03-26T23:02:16Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/arm64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0+k3s-5fe1f025", GitCommit:"5fe1f02592397c8a199b898113eb3e798905e918", GitTreeState:"clean", BuildDate:"2020-03-26T23:02:16Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"linux/arm64"}
- Cloud provider or hardware configuration:
- OS (e.g:
cat /etc/os-release):
Ubuntu 18.04.3 LTS
- Kernel (e.g.
uname -a):
Linux ip-172-31-17-16 4.15.0-1054-aws #56-Ubuntu SMP Thu Nov 7 16:18:50 UTC 2019 aarch64 aarch64 aarch64 GNU/Linux
- Install tools:
- Network plugin and version (if this is a network-related bug):
- Others:
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 3
- Comments: 24 (17 by maintainers)
Thanks for taking a look @lubinsz, just to be sure it is not a VM issue I fired up an a1-metal arm64 aws instance. Please note I am using sonobuoy for running tests rather than kubetest, I tried to find if kubetest is using the conformance image for testing and from a quick check maybe not. The error is not in the conformance test itself, but launching the conformance test image on arm64.
The
docker --versionis19.03.8, build afacb8b. Tried again with with 1.18.2 and got the same error:still works ok for the v1.17 branch:
It looks like the build chain for images has changed:
So there are now six less layers of the conformance image for the 1.18 branch.
Please also note how the arm64 images show amd64 as the architecture for both branches. This has been problematic for trying to air-gap arm64 properly and is a systemic issue for many of the projects on gcr (and elsewhere).
IIRC the fix was reverted due to not working in the release pipeline. I did say that would hurt @cpanato @justaugustus 🙃 https://github.com/kubernetes/kubernetes/pull/92042
/reopen
This issue is still unfixed as of today. here is a reproducer that helps doing the reverse test on a x86_64 machine:
So this is an image where the base os is actually arm64. starting with v1.18.0 and still as of today (v1.18.5-rc.0 and v1.19.0-beta.2) the uploaded -arm64 image is actually an amd64 image. There must be a typo somewhere.
testable this way:
This is supposed to generate the ‘exec file error’, but it doesn’t, which indicates that it is actually an x86_64 image (amd64).