Utilisation du pilote expérimental libvirt dans Multipass : application à k3sup dans Scaleway …
Tags: serverless, docker, kubernetes, scaleway
Published: 2020-01-12 23:53:30

---
title: Utilisation du pilote expérimental libvirt dans Multipass : application à k3sup dans Scaleway …
published: true
date: 2020-01-12 23:44:55 UTC
tags: serverless,docker,kubernetes,scaleway
canonical_url: https://medium.com/@abenahmed1/utilisation-du-pilote-exp%C3%A9rimental-libvirt-dans-multipass-application-%C3%A0-k3sup-dans-scaleway-9d396fb0d4c8
---

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

Lorsqu’on souhaite avoir plus de contrôle sur ses machines virtuelles dans Multipass après leur lancement, on peut utiliser le pilote expérimental libvirt.

> Multipass fournit une interface en ligne de commande pour lancer, gérer et généralement bricoler des instances Linux. Le téléchargement d’une image prend quelques secondes, et en quelques minutes une VM peut être opérationnelle …

[Using libvirt in Multipass](https://multipass.run/docs/using-libvirt)

Je lance donc une instance Bare Metal dans Scaleway pour le tester :

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

Et j’y installe Multipass :

[Install Multipass for Linux using the Snap Store | Snapcraft](https://snapcraft.io/multipass)

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

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

J’installe donc le démon Libvirt avec Cockpit. Pour rappel, Cockpit est un gestionnaire de serveur qui facilite l’administration de vos serveurs GNU / Linux via un navigateur Web. Il permet de découvrir Linux, ce qui permet aux administrateurs système d’effectuer facilement des tâches telles que le démarrage de conteneurs, l’administration du stockage, la configuration réseau, l’inspection des journaux, etc …

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

> Cockpit permet de basculer facilement entre le terminal et l’outil Web. Un service démarré via Cockpit peut être arrêté via le terminal. De même, si une erreur se produit dans le terminal, elle est visible dans l’interface du journal Cockpit.

Ici Cockpit va permettre la visualisation des machines virtuelles initiées avec Multipass :

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

Je peux stopper Multipass et basculer vers le pilote expérimental :

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

En créant une première instance par défaut, je peux la visualiser dans le dashboard de Cockpit :

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

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

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

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

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

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

Je passe à l’étape suivante qui va consister à créer un cluster K3S en mode HA via k3sup :

[alexellis/k3sup](https://github.com/alexellis/k3sup)

> k3sup est un utilitaire léger pour passer de zéro à KUBECONFIG avec k3s sur n’importe quelle VM locale ou distante. Tout ce dont vous avez besoin est un accès ssh et le binaire k3sup pour obtenir immédiatement l’accès à kubectl.

> L’outil est écrit en Go et fait l’objet d’une compilation croisée pour Linux, Windows, MacOS et même sur Raspberry Pi.

Lancement de trois instances avec Multipass :

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

visualisables dans Cockpit :

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

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

Je récupère le binaire k3sup depuis son dépôt sur Github :

[alexellis/k3sup](https://github.com/alexellis/k3sup/releases)

via ce script :

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

Et j’installe un cluster K3S en mode HA avec trois noeuds maîtres via ces instances dans Multipass : lancement du premier noeud maître …

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

```
k3sup install \
 --ip $SERVER\_IP \
 --user $USER \
 --ssh-key $KEY \
 --cluster
```

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

Suivi des deux autres :

```
k3sup join \
 --ip $NEXT\_SERVER\_IP \
 --user $USER \
 --server-user $USER \
 --server-ip $SERVER\_IP \
 --ssh-key $KEY \
 --server
```

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

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

J’installe via Snap le client Kubectl :

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

Je peux alors lancer trois autres instances via Multipass qui serviront de noeuds Workers dans ce cluster :

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

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

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

Et j’utilise encore k3sup pour les joindre au cluster :

```
k3sup join --ip $AGENT\_IP --server-ip $SERVER\_IP --user $USER --ssh-key $KEY
```

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

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

Tous les noeuds initiés via Multipass sont actifs dans ce cluster :

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

Je déploie MetalLB dans ce cluster :

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

et je lie ces noeuds à ZeroTier :

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

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

Et j’utilise un segment d’adresses IP pour configurer le mode Load Balancer dans ce cluster :

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

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

k3sup permet d’installer OpenFaaS dans ce cluster via Helm comme le montre ce schéma :

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

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

Je lance l’installation d’OpenFaas :

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

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

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

L’adresse IP fournie par le service de Load Balancing (issue du pool d’adresses dans ZeroTier) permet d’accéder au portail d’OpenFaaS :

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

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

Lancement d’une fonction nommée Face Blur via le Store d’OpenFaaS :

[esimov/pigo-openfaas-faceblur](https://github.com/esimov/pigo-openfaas-faceblur)

Il s’agit d’une fonction OpenFaaS permettant de flouter les visages détectés à l’aide de la bibliothèque de détection de visages Pigo :

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

Je soumets cette image publique comportant des visages :

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

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

Et qui me retourne une nouvelle image …

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

avec les visages floutés :

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

Pour finir, comme l’indique la documentation, il est également possible d’utiliser l’interface graphique de virt-manager pour gérer ses VMs dans Multipass :

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

A suivre !

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