raspbernetes/multi-arch-images

raspbernetes/csi-external-provisioner v2.0.0 crashes on kubernetes v1.19 exec format error.

Trackhe opened this issue ยท 8 comments

Details

run kubernetes on rpi 64bit ubuntu 20.04

exec format error.
i always tried to pull arm64 img but everytime that error. version 1.6.0 is already working.

Issue-Label Bot is automatically applying the label bug to this issue, with a confidence of 0.93. Please mark this comment with ๐Ÿ‘ or ๐Ÿ‘Ž to give our bot feedback!

Links: app homepage, dashboard and code for this bot.

@Trackhe confirming v1.6.0 works however, v2.0.0 doesn't? The Kubernetes version shouldn't matter here; exec format error is due to architecture not being supported, I'll check if anything has changed.

EDIT: Tested locally and I'm able to reproduce the issue, let me see if we can fix this.

pi@k8s-master-01:~$ sudo docker run raspbernetes/csi-external-provisioner:2.0.0
Unable to find image 'raspbernetes/csi-external-provisioner:2.0.0' locally
2.0.0: Pulling from raspbernetes/csi-external-provisioner
4000adbbc3eb: Pull complete
3c2cba919283: Pull complete
ee75c8894bd0: Pull complete
Digest: sha256:8e462acc2b71b9f68dfc739452c605a7c6107af97d85af7b3ac6a645ebc3727f
Status: Downloaded newer image for raspbernetes/csi-external-provisioner:2.0.0
standard_init_linux.go:211: exec user process caused "exec format error"

Looks like their Makefile now handles the GOOS and GOARCH https://github.com/kubernetes-csi/external-provisioner/blob/c47eb1d05e417168765bbb545696176286800f90/release-tools/build.make#L74 and we need to set this correctly in our implementation - @Trackhe would you like to make this change and contribution? It would be greatly appreciated, otherwise, I can handle it in a few days.

Feel free to use this bugfix branch, tried giving it a quick shot, which didn't work the first time around.

The Problem is now also for csi-attacher and longhorn-csi-plugin (raspbernetes/csi-node-driver-registrar)
i tried the new version (bugfix branch) but same.

@jamesorlakin looks like they changed the upstream Makefiles for the CSI images, it looked like they support buildx but in the quay repository they were just their standard amd64 interestingly.

I experienced the same issue:

# lscpu
Architecture:                    aarch64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              1
Core(s) per socket:              4
Socket(s):                       1
Vendor ID:                       ARM
Model:                           3
Model name:                      Cortex-A72
[..]
# podman pull --override-arch=arm64 raspbernetes/csi-external-provisioner:latest
Trying to pull docker.io/raspbernetes/csi-external-provisioner:latest...
Getting image source signatures
Copying blob 4000adbbc3eb skipped: already exists  
Copying blob 3c2cba919283 skipped: already exists  
Copying blob ee75c8894bd0 [--------------------------------------] 0.0b / 0.0b
Copying config 2861211da3 done  
Writing manifest to image destination
Storing signatures
2861211da3d85144baf03ad46a986b76bca655092c5c8999ba5b9524a8db317b
# podman run -it 2861211da3d8             
standard_init_linux.go:219: exec user process caused: exec format error

@xunholy strange. I'll likely have time to look at the weekend. My original Ceph and K8s use-case wasn't very stable on 2GB Pis so I haven't touched it in a while!