The unexpected failure to install Minikube on my Raspberry PI 3
The developer life is not always unicorns and rainbows, we might have great ideas, any absurd experiments we may think of and document, but some other times we have to face the reality, take the hit on the chin and move ahead and silently accept. This is one of those cases where I faced the unexpected failure to install minikube on my Raspberry PI 3 model B (I was not expecting my Rasby to be so old).
Everything started great! from the idea of having Minikube on my Raspberry so that I can remotely monitor and manage using rancher (the article writing on this is on the way). So I started fresh from my beautifully aged Raspberry PI 3 model B (installed a fresh 64bit version of Raspbian) and followed these steps:
Enable the Linux kernel features:
edit /boot/cmdline.txt by adding at the end of the line (NO NEWLINE)
cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
Install docker:
$> curl -fsSL https://get.docker.com -o get-docker.sh
$> sudo sh get-docker.sh
# Executing docker install script, commit: 66474034547a96caa0a25be56051ff8b726a1b28
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c mkdir -p /etc/apt/keyrings && chmod -R 0755 /etc/apt/keyrings
+ sh -c curl -fsSL "https://download.docker.com/linux/debian/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
+ sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sh -c echo "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bullseye stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sh -c docker version
Client: Docker Engine - Community
Version: 23.0.1
API version: 1.42
Go version: go1.19.5
Git commit: a5ee5b1
Built: Thu Feb 9 19:46:41 2023
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.1
API version: 1.42 (minimum version 1.12)
Go version: go1.19.5
Git commit: bc3805a
Built: Thu Feb 9 19:46:41 2023
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.18
GitCommit: 2456e983eb9e37e47538f59ea18f2043c9a73640
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
================================================================================
To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:
dockerd-rootless-setuptool.sh install
Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.
To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/
WARNING: Access to the remote API on a privileged Docker daemon is equivalent
to root access on the host. Refer to the 'Docker daemon attack surface'
documentation for details: https://docs.docker.com/go/attack-surface/
================================================================================
Add the user to the docker group and reboot
$> sudo usermod -aG docker d3
$> sudo reboot now
After the reboot verified that docker ps was working as expected
d3@d3host:~ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Download Minikube
$> curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
and Install
$> sudo install minikube-linux-arm64 /usr/local/bin/minikube
I was already tasting the victory! So I decided to run
$> sudo minikube start --vm-driver=none
😄 minikube v1.29.0 on Raspbian 11.6 (arm64)
✨ Using the none driver based on user configuration
❌ Exiting due to GUEST_MISSING_CONNTRACK: Sorry, Kubernetes 1.26.1 requires conntrack to be installed in root's path
Ok, first notice
$> sudo apt-get install conntrack
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
libfuse2
Use 'sudo apt autoremove' to remove it.
The following NEW packages will be installed:
conntrack
0 upgraded, 1 newly installed, 0 to remove and 19 not upgraded.
Need to get 32.4 kB of archives.
After this operation, 100 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bullseye/main arm64 conntrack arm64 1:1.4.6-2 [32.4 kB]
Fetched 32.4 kB in 0s (212 kB/s)
Selecting previously unselected package conntrack.
(Reading database ... 99222 files and directories currently installed.)
Preparing to unpack .../conntrack_1%3a1.4.6-2_arm64.deb ...
Unpacking conntrack (1:1.4.6-2) ...
Setting up conntrack (1:1.4.6-2) ...
Processing triggers for man-db (2.9.4-2) ...
Re-run!
$> sudo minikube start --vm-driver=none
😄 minikube v1.29.0 on Raspbian 11.6 (arm64)
✨ Using the none driver based on user configuration
⛔ Exiting due to RSRC_INSUFFICIENT_SYS_MEMORY: System only has 909MiB available, less than the required 1800MiB for Kubernetes
I then hardly realized that my Rasby3 needs to get back on the shelf and I should upgrade my hardware by buying a younger one.
Good bye Rasby we had a lot of fun
ps: I will repeat those steps on a Raspberry PI 4