Virtualisation légère avec la  carte Raspberry Pi 4, KVM et Cockpit …
Tags: edgecomputing, raspberrypi, ubuntu, docker
Published: 2020-07-05 23:06:15

---
title: Virtualisation légère avec la  carte Raspberry Pi 4, KVM et Cockpit …
published: true
date: 2020-07-05 22:57:02 UTC
tags: edgecomputing,raspberrypi,ubuntu,docker
canonical_url: https://medium.com/@deep75/virtualisation-l%C3%A9g%C3%A8re-avec-la-carte-raspberry-pi-4-kvm-et-cockpit-affa59233e78
---

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

Raspberry Pi Foundation a proposé le 28 mai dernier la Raspberry Pi 4 avec un modèle à 8GB, qui rejoint les à 2 ou 4 GB de mémoire vive :

![](https://cdn-images-1.medium.com/max/600/0*7RLQypRl6cRUKeGv.jpg)

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

[Buy a Raspberry Pi 4 Model B - Raspberry Pi](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/)

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

Dans un précédent article, j’avais testé la mise en oeuvre de MicroK8s dans une carte Pine A64 :

[Kubernetes en noeud unique sur une carte Pine A64 via MicroK8s …](https://medium.com/@deep75/kubernetes-en-noeud-unique-sur-une-carte-pine-a64-via-microk8s-41726ec7bfff)

Je pars pour cette nouvelle expérience d’une carte Raspberry Pi 4 avec la version à 8go de mémoire vive. Et Canonical propose justement une version ARM 64 Bits de sa distribution Ubuntu 20.04 LTS dédiée à cette dernière.

[Install Ubuntu Server on a Raspberry Pi 2, 3 or 4 | Ubuntu](https://ubuntu.com/download/raspberry-pi)

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

Je décompacte localement cette image après l’avoir téléchargée :

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

et j’utilise Balena Etcher pour la chargée sur une carte SD.

[balenaEtcher - Flash OS images to SD cards & USB drives](https://www.balena.io/etcher/)

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

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

![](https://cdn-images-1.medium.com/max/796/1*ibxf1FYz-S-qMnMlHJh7xA.jpeg)

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

Une fois l’opération terminée, je crée un fichier vide nommé SSH dans la partition système (qui me permettra de me connecter à l’OS Ubuntu via mon réseau local) :

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

Je connecte alors la carte Raspberry Pi 4 au réseau local via son port Ethernet …

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

Je lance la découverte de l’adresse IP utilisée par l’OS via Nmap :

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

et je peux m’y connecter via SSH (login : ubuntu / pwd : ubuntu à changer après connection) …

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

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

Comme on peut le voir la carte dispose d’un processeur ARM Cortex A72 qui supporte la virtualisation :

[Cortex-A72 - Arm Developer](https://developer.arm.com/ip-products/processors/cortex-a/cortex-a72)

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

ce qui peut être vérifié :

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

Il est alors possible d’y installer Cockpit.

[Cockpit Project - Cockpit Project](https://cockpit-project.org/)

> Cockpit est un projet libre, mis à jour régulièrement et disponible pour de nombreuses distributions. Concrètement, grâce à Cockpit, toutes les tâches d’administration habituelles de vos serveurs sont réalisables. Par le biais de Cockpit, vous pourrez gérer le stockage, la mise en réseau, les comptes utilisateurs, voir les services et daemons actifs, modifier quelques paramètres systèmes (domaine, nom, configuration des mises à jour) et encore accéder aux logs. Ainsi que la partie virtualisation …

Installation des paquets correspondants dans Ubuntu 20.04 LTS :

![](https://cdn-images-1.medium.com/max/1024/1*8gCqsFlTp6_-3BHVlHJZbw.png)

Ce qui entraîne l’installation de l’hyperviseur KVM et des outils associés pour cette architecture ARM 64 Bits. Activation de Cockpit.

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

J’active un nouveau mot de passe pour le compte root.

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

Sur le port TCP 9090, je peux accéder au dashboard de Cockpit :

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

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

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

Je peux commencer la création de machines virtuelles par l’utilisation d’images ISO de la distribution légère Alpine Linux …

[downloads | Alpine Linux](https://alpinelinux.org/downloads/)

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

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

Création d’une première machine virtuelle Alpine Linux par l’entremise du dashboard de Cockpit :

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

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

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

Connexion à la console de la machine virtuelle également par ce biais …

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

J’y installe le moteur Docker après avoir activer les dépôts nécéssaires …

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

Récupération de Rancher K3s,

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

qui me permet d’initier au travers de cette première machine virtuelle, un noeud maître d’un futur cluster Kubernetes …

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

Création de deux autres machines virtuelles Alpine Linux sur le même principe :

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

Chargement de K3s sur ces dernières et configuration en tant que noeuds de ce cluster Kubernetes …

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

Je n’ai pu qu’à charger le client Kubectl sur l’OS Ubuntu avec le fichier kubeconfig correspondant pour accéder et contrôler ce cluster Kubernetes (sur la base de ces petites machines virtuelles Alpine Linux) :

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

Le cluster Kubernetes est opérationnel …

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

Je charge ce manifeste YAML qui va permettre de lancer le sempiternel démonstrateur FC par l’intermédiaire d’une image Docker en version ARM 64bits.

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

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

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

Le démonstrateur FC est accessible via Traefik en tant qu’Ingress Controller dans ce cluster Kubernetes …

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

Comme on l’a vu dans plusieurs articles, Serveo permet d’exposer globalement ce démonstrateur par une simple connexion SSH …

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

[Serveo: expose local servers to the internet using SSH](https://serveo.net/)

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

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

Le dashboard de Cockpit permet de suivre quelques métriques de base avec le fonctionnement de ces machines virtuelles …

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

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

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

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

Un test simple qui n’aura pas réussi à consommer la mémoire de cette version à 8Go …

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

Le champ de la virtualisation sur ce type de carte est amenée à évoluer d’autant qu’au VMworld, VMware avait proposé une version d’ESXi 7.

> L’ESXi ainsi constitué est capable de se connecter à un vCenter, de faire du vMotion avec ses congénères ainsi qu’assurer la plupart des fonctions standard au sein d’un cluster. Ceci dans le contexte grandissant de l’Edge Computing …

[ESXi 7 on Raspberry Pi & ARM](https://virtualg.uk/esxi-7-on-raspberry-pi-arm/)

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

Avec l’avénement de la version 4.x de l’hyperviseur LXD, on peut retrouver l’exécution de machines virtuelles sur ce type de carte également :

- [LXD Virtual Machines Runing Perfectly In Raspberry Pi 4](https://discuss.linuxcontainers.org/t/lxd-virtual-machines-runing-perfectly-in-raspberry-pi-4/7706)
- [Install LXD on Raspberry Pi using the Snap Store | Snapcraft](https://snapcraft.io/install/lxd/raspbian)

Une communauté dynamique et enthousiaste à suivre autour du développement continu de cette magnifique carte ! 😉 …

![](https://cdn-images-1.medium.com/max/666/0*MwdB4oxsYa2w2q-D.jpg)