Son Micro Cloud avec ses Machines Virtuelles dans sa carte Raspberry Pi 4 à l’aide de Multipass et…
Tags: raspberrypi, ubuntu, lxd, kubernetes
Published: 2020-11-11 23:29:27

---
title: Son Micro Cloud avec ses Machines Virtuelles dans sa carte Raspberry Pi 4 à l’aide de Multipass et…
published: true
date: 2020-11-11 21:54:10 UTC
tags: raspberrypi,ubuntu,lxd,kubernetes
canonical_url: https://medium.com/@deep75/son-micro-cloud-avec-ses-machines-virtuelles-dans-sa-carte-raspberry-pi-4-%C3%A0-laide-de-multipass-et-4e25792c20fd
---

![](https://cdn-images-1.medium.com/max/1024/1*Q-m_wDORf7xDPRS9UVg7QQ.jpeg)

J’avais précédemment écrit un article sur la virtualisation dans une carte Raspberry Pi 4 avec KVM et Cockpit :

[Virtualisation légère avec la carte Raspberry Pi 4, KVM et Cockpit …](https://deep75.medium.com/virtualisation-l%C3%A9g%C3%A8re-avec-la-carte-raspberry-pi-4-kvm-et-cockpit-affa59233e78)

Dans ce nouvel article, je vais utiliser une autre variante via l’utilisation de Multipass et LXD. Je pars d’une carte Raspberry Pi 4 avec 8Gb de mémoire vive :

[Le Raspberry Pi 4 arrive en version 8 Go de RAM !](https://raspberry-pi.fr/raspberry-pi-4-8go-ram/)

![](https://cdn-images-1.medium.com/max/458/0*I6xsEcSptq0ijz_i.jpg)

> Pour rappel, Raspberry Pi est un SBC (Single Board Computer) à bas prix créé par une équipe de professeurs de l’Université de Cambridge, afin d’encourager l’apprentissage de la programmation et le lancement de différents projets. Avec un processeur plus puissant et un grand choix en matière de connectivité, le Raspberry Pi 4 consomme beaucoup moins d’énergie.

![](https://cdn-images-1.medium.com/max/1000/0*eN2kxLqbIe6ITqSH.jpg)

> Dans le souci de rendre le Raspberry Pi 4 modèle B encore plus performant, la fondation Raspberry Pi a misé sur un nouveau SOC Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bits à 1.5GHz, pour remplacer le Cortex A53 quadricoeurs cadencé à 1,4 GHz, utilisé dans la version précédente …

J’utilise Raspberry Pi Imager pour charger une image Ubuntu 20.10 ARM 64 Bits dans cette dernière avec une carte SD à 64 Go :

[Raspberry Pi Downloads - Software for the Raspberry Pi](https://www.raspberrypi.org/downloads/)

![](https://cdn-images-1.medium.com/max/668/1*8SC6AZ1ZjNNx4MRHxVXcug.jpeg)

![](https://cdn-images-1.medium.com/max/671/1*9fAD1icJqPxjmeFyIMdyqA.jpeg)

![](https://cdn-images-1.medium.com/max/671/1*0P27OHA8y4TX8w7utpEtsQ.jpeg)

![](https://cdn-images-1.medium.com/max/669/1*t2hRmzoz-gdpXuAaUo2-tw.jpeg)

La carte SD est prête à être inserée :

![](https://cdn-images-1.medium.com/max/500/0*KvbknCRzUPGjfQZS.gif)

Cette carte Raspberry Pi 4 démarre avec Ubuntu 20.10 (Groovy Gorilla) :

![](https://cdn-images-1.medium.com/max/866/1*P_XsbCzopRATsV2puLW3TQ.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*-zcrIp2kkvmWpbSDtdPv3w.png)

J’initialise l’hyperviseur LXD (déjà installé) :

![](https://cdn-images-1.medium.com/max/1024/1*wbHjoGg9F-SjrnMy-ebfqQ.png)

Et j’y installe via Snap, Multipass :

[Multipass orchestrates virtual Ubuntu instances](https://multipass.run/)

![](https://cdn-images-1.medium.com/max/1024/1*An2vKELTaASxHKf_E51W2Q.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*D2-42AmHZ9NZDIDD5cHlhQ.png)

Avec la dernière version de Multipass, je peux effectuer une liaison avec l’hyperviseur LXD :

[Release 1.3.0 · canonical/multipass](https://github.com/canonical/multipass/releases/tag/v1.3.0)

![](https://cdn-images-1.medium.com/max/1024/1*Xc1hiIHN4JNkaaHbVLyFyQ.png)

Je vais donc pouvoir lancer avec Multipass des machines virtuelles utilisant LXD en backend …

![](https://cdn-images-1.medium.com/max/1024/1*4QVHlxsC8bl004ngZMrTCg.png)

Lancement de trois machines virtuelles sous Ubuntu 20.04 LTS qui formeront l’ossature d’un futur cluster k3s :

![](https://cdn-images-1.medium.com/max/1024/1*B1fCAC3cVbZKEUoo13Og_g.png)

Les machines virtuelles sont actives :

![](https://cdn-images-1.medium.com/max/1024/1*98o7fYZEgDMaTZWjXMnpBA.png)

![](https://cdn-images-1.medium.com/max/577/0*kMdTiP8NwO17_vTb.jpg)

Je peux utiliser la clé SSH privée par défaut avec Multipass pour me connecter à ces machines virtuelles :

![](https://cdn-images-1.medium.com/max/1024/1*f6kFQ8Lk6yRZWHw-s9QIWA.png)

Utilisation de k3sup pour la création du cluster k3s dans ces machines virtuelles :

![](https://cdn-images-1.medium.com/max/1024/1*bk8_snMIxs3BjP9jE6nWTA.png)

Création donc du noeud maître avec la première machine virtuelle :

![](https://cdn-images-1.medium.com/max/1024/1*m1tfajJdbZMu_61FLXvxEw.png)

Puis ajout des machines virtuelles restantes comme noeud Worker dans ce cluster k3s :

![](https://cdn-images-1.medium.com/max/1024/1*J5jU9U3-TemZC5BvOuae6w.png)

![](https://cdn-images-1.medium.com/max/1024/1*rn4MdqIRaItc2IM03iGntA.png)

Le cluster k3s est actif et opérationnel :

![](https://cdn-images-1.medium.com/max/1024/1*Nw5fXlvm9Ld33vfp-ONkFg.jpeg)

![](https://cdn-images-1.medium.com/max/568/0*wMkRrI0kibK2cpOg.jpg)

Déploiement rapide du Démonstrateur FCA en utilisant l’Ingress Controller via Traefik dans ce cluster :

![](https://cdn-images-1.medium.com/max/1024/1*ZKnEVQ93iS7YMaro4m9T6Q.png)<figcaption>deployment.yml</figcaption>

![](https://cdn-images-1.medium.com/max/1024/1*znKTb5d9_BUdebMwJMHhHQ.png)

![](https://cdn-images-1.medium.com/max/1024/1*7iDpRJhpsxBqT60euB_xCA.jpeg)

Pour rendre accessible le démonstrateur FCA depuis Internet, j’utilise encore une fois Cloudflare Argo :

[Quickstart · Cloudflare Argo Tunnel docs](https://developers.cloudflare.com/argo-tunnel/quickstart)

![](https://cdn-images-1.medium.com/max/1024/1*xr17uabYkjxeDXx-yy4Z3w.jpeg)

avec le binaire ARM 64 Bits fourni :

![](https://cdn-images-1.medium.com/max/1024/1*37Kh3LKGO8Ds0IlKu089UA.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*NbtwKWFlZHvc8j9REIULbg.png)

Lancement du tunnel depuis la carte Raspberry Pi 4 :

![](https://cdn-images-1.medium.com/max/1024/1*q67AhWpQGlsKsNRke3PAPw.jpeg)

Le démonstrateur FCA est accessible depuis l’URL fournie :

![](https://cdn-images-1.medium.com/max/1024/1*4ZhvTgeSljVkn3TIhF9GoQ.jpeg)

Pour le rendre accessible sur le réseau local je vais réutiliser Node.js et Reverse-Projy.js :

[@cedx/reverse-proxy](https://www.npmjs.com/package/@cedx/reverse-proxy)

![](https://cdn-images-1.medium.com/max/1024/1*VP5gLQZ5Pf5VYfHHVD_HDw.png)

Et lancement de ce Reverse Proxy local :

![](https://cdn-images-1.medium.com/max/1024/1*2NdvGTBhwREIdr-AsYd8ng.png)

avec le démonstrateur FCA en local :

![](https://cdn-images-1.medium.com/max/1024/1*C32t6KGlaiZWMdsIEi0y1g.jpeg)

> Je peux aussi ne pas utiliser ici Multipass et exécuter ces machines virtuelles directement avec l’hyperviseur LXD. En effet, la virtualisation par Qemu est possible au travers de LXD depuis les versions récentes (4.X) :

- [Virtual Machines](https://lxd.readthedocs.io/en/latest/virtual-machines/)
- [Running virtual machines with LXD 4.0](https://discuss.linuxcontainers.org/t/running-virtual-machines-with-lxd-4-0/7519)

J’utilise pour cela les images Cloud ARM 64 Bits d’Ubuntu en version 20.10 :

![](https://cdn-images-1.medium.com/max/1024/1*O7XRvo1407eA_TnFeo1G6w.png)

Et encore une fois, j’initie au travers de ces trois machines virtuelles un cluster k3s :

![](https://cdn-images-1.medium.com/max/1024/1*x_JFgsmdeEJ0DZJhWMhxXA.png)

![](https://cdn-images-1.medium.com/max/1024/1*a4GY-Qtp6XWV8xeuG678Qw.png)

![](https://cdn-images-1.medium.com/max/1024/1*rp-CPUJflZsNICZ7WsCWiQ.png)

Le fichier Kubeconfig est à récupérer sur le noeud maître du cluster :

![](https://cdn-images-1.medium.com/max/1024/1*_UGpl2TOuwKvSJHK7FJ2iw.jpeg)

et avec lui je peux accéder au cluster :

![](https://cdn-images-1.medium.com/max/1024/1*5eLJ-ol4V158VwAGZYnxXA.jpeg)

Je redéploie le démonstrateur FCA :

![](https://cdn-images-1.medium.com/max/1024/1*gJcj76jWvVvnVwzVXHDRvw.png)

et j’utilise le même Reverse Proxy pour pouvoir y accéder localement :

![](https://cdn-images-1.medium.com/max/1024/1*zVLzFFZMR2YSoobwptgTRQ.png)

![](https://cdn-images-1.medium.com/max/1024/1*hbM4tGUmrwEy-sl_BjLebA.jpeg)

Netdata me permet ici de monitorer la carte :

[netdata/netdata](https://github.com/netdata/netdata)

![](https://cdn-images-1.medium.com/max/1024/0*O97Onv1yVLCvIiLp.png)

avec ce script :

![](https://cdn-images-1.medium.com/max/1024/1*bnCiw3vDT1vgj6R2JiTCsg.png)

![](https://cdn-images-1.medium.com/max/1024/1*gqhuN5kYYVPgYKdeZBDGIQ.jpeg)

qui une fois exécuté et terminé me permet de visualiser un dashboard de monitoring …

![](https://cdn-images-1.medium.com/max/1024/1*yMAIxJBLpICWq6ISF7Fzgg.jpeg)

![](https://cdn-images-1.medium.com/max/1024/1*XCFrvcUHhO4qQHTH1CKQYg.jpeg)

Le tout m’aura consommé moins de 4 Go de RAM …

![](https://cdn-images-1.medium.com/max/1024/1*Ebuk43Z13BudpFtB922F3A.jpeg)

> Le même procédé peut être appliqué dans le dernier modèle Raspberry Pi 400 avec son processeur Broadcom Cortex A72 à 4 coeurs cadencés à 1,8Ghz mais avec seulement 4 Gb de mémoire vive :

[Le Raspberry Pi 400 vient de sortir, un ordinateur DANS un clavier pour 70€ !](https://raspberry-pi.fr/raspberry-pi-400/)

![](https://cdn-images-1.medium.com/max/1024/0*Yj8HbKYrOTVS8C23.jpg)

Il y a donc diverses méthodes pour lancer ses machines virtuelles dans un carte de type Raspberry Pi 4 et l’actualité récente a notamment été marquée par l’introduction de l’hyperviseur VMware ESXi pour cette dernière :

- [ESXi on ARM on Raspberry, Engage !](https://vblog.io/esxi-on-arm-on-raspberry-engage/)
- [ESXi Arm Edition](https://flings.vmware.com/esxi-arm-edition)

et son application avec encore une fois un cluster k3s 🙂. De quoi favoriser son développement dans le contexte de l’Edge Computing …

- [Kubernetes on ESXi-Arm using k3s](https://www.virtuallyghetto.com/2020/10/kubernetes-on-esxi-arm-using-k3s.html)
- [Stateless ESXi-Arm with Raspberry Pi](https://www.virtuallyghetto.com/2020/11/stateless-esxi-arm-with-raspberry-pi.html)

![](https://cdn-images-1.medium.com/max/702/0*7jik6PaXdUGWGeTc)

[Edge-native Linux | Ubuntu](https://ubuntu.com/blog/edge-native-linux)

À suivre !

![](https://cdn-images-1.medium.com/max/500/0*5MZVemNLB6RjcKj8.jpg)