Failure with installing microk8s on Raspberry 3B+ pi

I have just installed Ubuntu server 20.10 arm64 arch on Raspberry 3B+ Pi. Then I started installing microk8s by typing:

sudo snap install microk8s --classic

But I got reply as:

error: cannot perform the following tasks:
- Download snap "core" (10578) from channel "stable" (Get https://api.snapcraft.io/api/v1/snaps/download/99T7MUlRhtI3U0QFgl5mXXESAiSwt776_10578.snap: EOF)

Could you kindly let me know what I need to do further?
Thank you so much!

–Xiaozhong

Today, I ran more trials on installing microk8s. It failed with

sudo snap install microk8s --classic --channel=1.20/stable
......
+ KUBECTL='/snap/microk8s/1866/kubectl --kubeconfig=/var/snap/microk8s/1866/credentials/client.config'
<exceeded maximum runtime of 5m0s>

According to Unable to install microk8s on RaspberryPi due to configuration hook timeout, I tried:

sudo snap install microk8s --classic --channel=1.18/stable
microk8s (1.18/stable) v1.18.14 from Canonical✓ installed

The version 1.18 works. So we could put the installation of 20.10 aside, only try to run version 1.18 on Raspberry Pi at the moment. The only issue with doing so is that the cluster to setup couldn’t be a HA one.

There’s a PR recently merged.

Which maybe available on 1.20/edge version.

Can you try it? If the installation is successful/complete, it may not mean that all control plane is already available. The PR just make sure you dont get that 5 mins error.

@ balchua1, thanks for your reply. Following your guidance, I ran the installation of 1.20/edge a couple of times. But it hasn’t got success. Check [Uploading: 20210106v2.jpeg…](the log) here. Actually the latest installation did start 4 hours ago but is still at:

Download snap "microk8s" (1892) from channel "1.20/edge"                                                       |

The screw still keeps spinning now :frowning:
Very likely, I guess, why I couldn’t install 1.2/edge is due to the issue of network connection. So, if possible, could you do me a favor to let me know where I could download the snap package of 1.20/stable (1866) or 1.20/edge? If I could download the package, I would try to “snap install” it locally.
Many thanks in advance.

The documentation describes how to do offline install. MicroK8s - Alternative installs (MacOS/Windows 10/Multipass)
But i wonder how it can download the calico images from dockerhub if network is tge problem.

Thanks for your kindly helps! Following the doc you pointed out, I tried to download the snap package as below, but met error:

sudo snap download microk8s --channel=1.20/edge
Fetching snap "microk8s"
error: Post https://api.snapcraft.io/v2/snaps/refresh: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Regarding to utilizing the snap package of microk8s/edge, I have such an idea. If you have succeeded in:

sudo snap install microk8s channel=1.20/edge

At /var/lib/snapd/snaps of your Raspberry Pi, there should be a snap package that is working for your microk8s environment. The name of package should be like: microk8s_1092.snap. If you could upload it onto a public place, I could download it from there. Then on my Raspberry Pi Ubuntu, I could run

sudo snap install --dangerous microk8s_1092.snap

to install microk8s version 1.20 locally :slight_smile:

Thank you so much!

Unfortunately i don’t have an arm device to download the snap. But it’s wierd that you can’t download the snap.
I think its best to get that working. Otherwise there might not be much you can do with the cluster.

The network connection may work better on my morning. So I will try to run downloading again tomorrow. By the way, is it possible to build microk8s from source code? If yes, where can we find the document?

Thanks again!

Yes you can. Here’s the link.

Appreciate! Let’s see the future :slight_smile:

With a few trials, I am able to install 1.20/stable either through

snap refresh

or

snap install –dangerous microk8s_v1.19.4_arm64.snap

Now the problem becomes: response for any microk8s command is very slow. The issue exists on 1.18, 1.19 and 1.20. For example, the time to execute

microk8s status

or

microk8s kubectl get all –all-namespaces

is longer than 5 minutes.

Could you let me know your reference platform that you used to port microk8s (e.g., for 1.20/stable)? How much resource was your configuration? And how fast for these commands?

The similar issue was reported on a few months ago. It remains to be addressed. I also tried “solution” proposed over there. But after creating swap area (8G on my case), the improvement was very little.

IMHO the 1GB and 1 cpu is too little for a kubernetes cluster. I think your RPIs load is very high even without doing anything.

You are right. After k8s started, idle time of cpu went to <10% - 30%, “free mem” to ~17MB. If k8s stopped, the idle time went > 90%, and mem to ~167 MB. So, changing to rpi 4B is likely the solution. On 4B, how many mem would you suggest? 4G or 8G? Thanks.

If cost isn’t a matter, i will choose the 8GB.

Got the point, many thanks!