paulbouwer / hello-kubernetes

Provides a demo app to deploy to a Kubernetes cluster. It displays a message, the name of the pod and details of the node it's deployed to.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

exec format error

MichaelMichaelMichaelMichaelMichael opened this issue · comments

Hi, I've deployed hello-kubernetes to a 4 node raspberry pi k3s cluster and I'm getting the following output:

$ kubectl get service hello-kubernetes-custom
NAME                      TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
hello-kubernetes-custom   LoadBalancer   10.43.27.83   <pending>     80:31288/TCP   13m
$ kubectl get pods
NAME                                       READY   STATUS             RESTARTS   AGE
svclb-hello-kubernetes-custom-snkgf        0/1     Pending            0          13m
svclb-hello-kubernetes-custom-f44xh        0/1     Pending            0          13m
svclb-hello-kubernetes-custom-cghph        0/1     Pending            0          13m
svclb-hello-kubernetes-custom-kfqgg        0/1     Pending            0          13m
hello-kubernetes-custom-6468f86645-x98pq   0/1     CrashLoopBackOff   7          13m
hello-kubernetes-custom-6468f86645-mv2q6   0/1     CrashLoopBackOff   7          13m
hello-kubernetes-custom-6468f86645-gvwcd   0/1     CrashLoopBackOff   7          13m
$ kubectl logs svclb-hello-kubernetes-custom-snkgf
$ kubectl logs hello-kubernetes-custom-6468f86645-x98pq
standard_init_linux.go:211: exec user process caused "exec format error"

What could I look at in order to find out what's going wrong?

That's most probably because https://hub.docker.com/r/paulbouwer/hello-kubernetes/tags is for OS/ARCH linux/amd64 - which your raspberry pi k3s cluster is not... because that's ARM. Hope that makes sense. Have fun & best of luck.

That indeed makes sense, thanks for the explanation!

@MichaelMichaelMichaelMichaelMichael stay tuned. I've just started planning a multi-arch version of this image so that you can run it on linux/amd64, linux/arm64, and windows/amd64.

Thanks for bringing this up - using this on a raspberry pi cluster validates my thinking for supporting arm.

By the way, what Pi are you running on? Should this be supporting both linux/arm/v7 and linux/arm64 ?

@paulbouwer

pi@ras0:/home/pi [0] > lsb_release  -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
pi@ras0:/home/pi [0] > uname -a 
Linux ras0 5.4.51-v8+ #1333 SMP PREEMPT Mon Aug 10 16:58:35 BST 2020 aarch64 GNU/Linux

It's a Raspberry Pi 4. Meanwhile, I've added some Intel nuc bricks to that cluster, so for me, the docker buildx is taking the argument linux/x86_64,linux/arm64 in order to match both architectures. After a few weeks of training in kubernetes & docker, I come to the conclusion that having a mixed cluster brings many caveats to take care of when deploying my own apps and makes me learn that topic in depth.