Welcome to the Linux Foundation Forum!

Setting up Dev Enivoroment on MAC M1 Silicon using UTM virtual machine

Hello everyone.
I am at the very beginning of the course and trying to run the first script in LFD259/SOLUTIONS/s_02/k8scp.sh.
This should set up the environment downloading and installing all the required dependencies.

This is not working on my UTM virtual machine ( I have Ubuntu 22.04.4 LTS ).

After running the script from bash i get this error:
kubectl get nodes

E0219 11:17:56.607250 4519 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused
E0219 11:17:56.607559 4519 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused
E0219 11:17:56.608837 4519 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused
E0219 11:17:56.610073 4519 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused
E0219 11:17:56.611270 4519 memcache.go:265] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp 127.0.0.1:8080: connect: connection refused
The connection to the server localhost:8080 was refused - did you specify the right host or port?

And if i go in the /etc/kubernetes/ folder i don't have a admin.conf file....is this normal how can i fix this? thank you!

Comments

  • chrispokorni
    chrispokorni Posts: 2,372

    Hi @giuliengi87,

    The recommended guest OS is Ubuntu 20.04 LTS. The lab environment has not yet migrated to 22.04. In addition, please ensure all inbound traffic is allowed to your VMs.

    Regards,
    -Chris

  • hi @chrispokorni the problem was that the scripts (k8scp.sh and k8Worker.sh) download dependencies only for amd architecture which is not my architecture. So, it was enough to change the script to download dependencies for arm architecture instead. But now unfortunately i have another problem. by doing this trick I was able to download the dependencies into the two nodes and start and join them. but now when I shutdown the machines and restart them, after doing a simple kubectl get node, nothing works anymore and get the connection problem again.... is that normal? because i should be able to shut down and restart my local machine at will without issues.

  • i set up another machine with ubuntu 20 this time emulating the amd architecture. run the script without changing anything this time. all went well but after rebooting i tried.

    kubectl get node

    connection refused

    then i tried:

    sudo systemctl restart kubelet

    and then retried:

    kubectl get node

    but still connection refused.

    looks like i can't reboot my machine and must recreate a new machine reinstalling the whole operating system every day to keep on studying????

  • chrispokorni
    chrispokorni Posts: 2,372

    Hi @giuliengi87,

    Are the VMs preserving their IP addresses between restarts? If they change, the cluster may no longer start after a reboot. In this case static private IPs should resolve the issue.

    Regards,
    -Chris

  • Ok thank you @chrispokorni i'll try that too.
    I also found another solution that worked.
    Manually restart the kubelet at every reboot.
    on both the worker and the master node create a startup.sh
    paste this:

    sudo systemctl enable --now kubelet
    sudo swapoff -a
    sudo systemctl restart containerd
    sudo systemctl enable containerd

    and then execute it first on master then on worker.
    I think that can also be added to bashrc to have it execute at startup automatically.
    A bit bothering but it looks like it solves the issue.

  • Anyway @chrispokorni to explore and try your solution....
    How do you set the static Ip address on Ubuntu 22.4?
    Thaks for replying.

  • chrispokorni
    chrispokorni Posts: 2,372

    Hi @giuliengi87,

    The VM IPs are managed by the hypervisor, not the guest OS.

    Regards,
    -Chris

  • giuliengi87
    giuliengi87 Posts: 8
    edited March 1

    Hi. I have reinstalled the machines using two with amd64 and static IPs this time. The labs work better because most of the libraries used in the labs are only compatible with amd architecture (but all is much slower because the machine architecture now does not mach the M1 silicon native of my MAC). That said the fact of having changed to a static IP hasn't made any change to the automatic k8s services restart (kubeadm , kubectl , kubelet have still to be triggered manually at every restart of the machine). I leave this for everyone facing my issue...the script I left above works. Thank you.

    ps. why not do a lab version for arm users as many programmers work on MAC silicon?

  • I used orbstack (free for personal use) to create a virtual linux machine (archlinux arm64) and then install minikube there. Minikube allows you to create clusters with N nodes via "minikube start --nodes 3 -p my-cluster". It is much much easier than debugging through their "special collection" of bash scripts. Yes, you will have to look for arm64 version images in a docker hub which is not a show stopper anyway -- I wasn't able to find only one so far. Don't waste you time.

Categories

Upcoming Training