kubernetes: kubelet 1.23.0 (cAdvisor 0.43) panic on arm64 / Raspberry PI OS32
What happened?
Configuration:
- OS: Raspberry PI OS 32 bullseye
- arch:
Linux raspberrypixxx 5.10.63-v8+ #1488 SMP PREEMPT Thu Nov 18 16:16:16 GMT 2021 aarch64 GNU/Linux
/boot/config.txt with arm_64bits=1
kubelet panic at https://github.com/kubernetes/kubernetes/blob/release-1.23/vendor/github.com/google/cadvisor/manager/container.go#L676
$ journalctl -eu | grep -C10 panic
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.697571 10354 kuberuntime_manager.go:248] "Container runtime initialized" containerRuntime="containerd" version="1.4.5~ds1" apiVersion="v1alpha2"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.699202 10354 certificate_store.go:130] Loading cert/key pair from "/var/lib/kubelet/pki/kubelet-server-current.pem".
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.703243 10354 server.go:1231] "Started kubelet"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.706678 10354 fs_resource_analyzer.go:67] "Starting FS ResourceAnalyzer"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: E1211 09:42:41.712014 10354 cri_stats_provider.go:455] "Failed to get the info of the filesystem with mountpoint" err="unable to find data in memory cache" mountpoint="/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: E1211 09:42:41.712128 10354 kubelet.go:1351] "Image garbage collection failed once. Stats initialization may not have completed yet" err="invalid capacity 0 on image filesystem"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.715137 10354 volume_manager.go:291] "Starting Kubelet Volume Manager"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.715516 10354 desired_state_of_world_populator.go:147] "Desired state populator starts to run"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.718436 10354 server.go:150] "Starting to listen" address="0.0.0.0" port=10250
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: I1211 09:42:41.720825 10354 server.go:410] "Adding debug handlers to kubelet server"
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: panic: unaligned 64-bit atomic operation
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: goroutine 309 [running]:
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: runtime/internal/atomic.panicUnaligned()
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: /usr/local/go/src/runtime/internal/atomic/unaligned.go:8 +0x24
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: runtime/internal/atomic.Load64(0x70ea16c)
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: /usr/local/go/src/runtime/internal/atomic/atomic_arm.s:286 +0x14
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager.(*containerData).updateStats(0x70ea000)
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: /workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager/container.go:676 +0x438
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager.(*containerData).housekeepingTick(0x70ea000, 0x712af40, 0x5f5e100)
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: /workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager/container.go:587 +0x104
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager.(*containerData).housekeeping(0x70ea000)
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: /workspace/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager/container.go:535 +0x3c0
Dec 11 09:42:41 raspberrypicluster06 kubelet[10354]: created by k8s.io/kubernetes/vendor/github.com/google/cadvisor/manager.(*containerData).Start
What did you expect to happen?
kubelet working
How can we reproduce it (as minimally and precisely as possible)?
Start the rpi with arm_64bits=1. Kubelet fails with panic.
Anything else we need to know?
See https://github.com/google/cadvisor/issues/3027
Kubernetes version
```console
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.0", GitCommit:"ab69524f795c42094a6630298ff53f3c3ebab7f4", GitTreeState:"clean", BuildDate:"2021-12-07T18:16:20Z", GoVersion:"go1.17.3", Compiler:"gc", Platform:"linux/arm"}
Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.4", GitCommit:"b695d79d4f967c403a96986f1750a35eb75e75f1", GitTreeState:"clean", BuildDate:"2021-11-17T15:42:41Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/arm"}
```
Cloud provider
baremetal
OS version
$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
$ uname -a
Linux raspberrypi-xxx 5.10.63-v8+ #1459 SMP PREEMPT Wed Oct 6 16:42:49 BST 2021 aarch64 GNU/Linux
Install tools
Container runtime (CRI) and and version (if applicable)
Related plugins (CNI, CSI, …) and versions (if applicable)
/sig node
About this issue
- Original URL
- State: closed
- Created 3 years ago
- Comments: 23 (13 by maintainers)
Commits related to this issue
- Try if patch helps on armv7 build https://github.com/google/cadvisor/issues/3027 https://github.com/kubernetes/kubernetes/issues/106977 Signed-off-by: Mikhail Sakhnov <msakhnov@mirantis.com> — committed to mikhail-sakhnov/k0s by deleted user 3 years ago
- Apply cadvisor realignment patch which fixes panic on armv7 architecture for kubelet https://github.com/google/cadvisor/issues/3027 https://github.com/kubernetes/kubernetes/issues/106977 Signed-off-... — committed to mikhail-sakhnov/k0s by deleted user 3 years ago
- Apply cadvisor realignment patch which fixes panic on armv7 architecture for kubelet https://github.com/google/cadvisor/issues/3027 https://github.com/kubernetes/kubernetes/issues/106977 Signed-off-... — committed to mikhail-sakhnov/k0s by deleted user 3 years ago
Can confirm that the binary soider shared works with a rpi3 with no issues in my test cluster.
@vescoc
I have VM with custom ubuntu image so I don’t have this /boot/config.txt Any other ways to validate running kernel mode? The closest I have is
Sure, I don’t really have any hosting, but I can share it via dropbox https://www.dropbox.com/s/zb5viqzmo1t3x12/kubelet_armv7?dl=0
@jonyhy96 fyi, I tried using the same patch in k0sproject release for 1.23 (https://github.com/k0sproject/k0s/pull/1340/commits/953909e91663b6a167945284b40af44f59a1441a) it seems to be working on armv7, at least kubelet doesn’t panic and generally passed our test suite.
/close
fixed in master which will show up in 1.24 when we get that out the door.
google/cadvisor#3029 has been merged.
Done already. With the attached version my RPI was able to join to the cluster.
Thank you guys!