Dans la quête sans fin pour trouver la méthode idéale pour lancer des machines virtuelles (VM), je vous conseille Multipass. Ce gestionnaire de machine virtuelle léger peut être installé sur Linux, Windows et macOS, et est conçu pour que les développeurs puissent lancer un nouvel environnement Ubuntu avec une seule commande.  

Pour les fonctionnalités, Multipass utilise KVM sous Linux, Hyper-V sous Windows et HyperKit sous macOS. Le multipass prend en charge les métadonnées pour le cloud-init, il est donc possible de simuler un petit déploiement cloud à partir de votre ordinateur portable ou de bureau.  Je vais vous montrer comment installer Multipass sur Ubuntu 18.04. Vous pouvez facilement installer l'outil sur Windows ou macOS de la manière habituelle.

Ce dont vous aurez besoin :

  • Une instance de Linux en cours d'exécution qui prend en charge les packages d'instantanés  
  • Un utilisateur avec des privilèges sudo  

Comment installer Multipass

Nous allons utiliser snap pour installer Multipass. Connectez-vous à votre machine Linux, ouvrez une fenêtre de terminal et exécutez la commande:

sudo snap install multipass --classic --stable

Le téléchargement et l'installation ne devraient pas prendre plus de quelques minutes, selon la vitesse de votre connexion réseau.  Une fois le package snap installé, vous êtes prêt à travailler avec Multipass.  

Comment lancer une machine virtuelle

La première chose que vous voudrez faire est de savoir quelles versions d'Ubuntu sont disponibles pour utilisation. Pour cela, lancez la commande:  

multipass find

Vous devriez voir une liste de toutes les images Ubuntu disponibles.

gabriel@gabriel-Latitude-E6320:~$ multipass find
Image                   Aliases           Version          Description
snapcraft:core          core16            20200221         Snapcraft builder for Core 16
snapcraft:core18                          20200221         Snapcraft builder for Core 18
core                    core16            20200213         Ubuntu Core 16
core18                                    20200210         Ubuntu Core 18
16.04                   xenial            20200218.1       Ubuntu 16.04 LTS
18.04                   bionic,lts        20200218         Ubuntu 18.04 LTS
19.10                   eoan              20200307         Ubuntu 19.10
daily:20.04             devel,focal       20200313         Ubuntu 20.04 LTS

Supposons que vous souhaitiez lancer une instance de l'image Ubuntu "daily" (dans ce cas, 20.04). Faites cela avec la commande:  

multipass launch daily:20.04

Une fois l'instance lancée, elle signalera le succès et répertoriera le nom de l'image que vous avez lancée.

gabriel@gabriel-Latitude-E6320:~$ multipass launch daily:20.04
Launched: jaunty-arapaima    

Vous pouvez ensuite vérifier qu'il fonctionne avec la commande:  

multipass list

Vous devriez voir jaunty-arapaima répertorié comme Running.

gabriel@gabriel-Latitude-E6320:~$ multipass list
Name                    State             IPv4             Image
primary                 Deleted           --               Not Available
jaunty-arapaima         Running           10.250.28.70     Ubuntu 20.04 LTS

Comment se connecter à une machine virtuelle en cours d'exécution

Maintenant que notre VM est en cours d'exécution, nous devons pouvoir nous y connecter (afin de pouvoir réellement l'utiliser). Pour ce faire, lancez la commande:  

multipass shell jaunty-arapaima

À ce stade, vous vous trouverez à l'invite bash de votre VM Ubuntu nouvellement lancée.

Une fois connecté, vous pouvez commencer à installer les outils dont vous avez besoin ou passer directement au développement et aux tests. Lorsque vous avez terminé de travailler, quittez la machine virtuelle avec la commande:  

exit

Vous pouvez ensuite arrêter et supprimer l'instance avec les commandes:  

multipass stop jaunty-arapaima

Enfin, vous pouvez supprimer l'instance avec la commande:  

 multipass delete jaunty-arapaima

Et c'est tout ce qu'il y a à installer et à utiliser le nouveau gestionnaire de VM Multipass. Avec cet outil, vous pouvez perfectionner vos compétences de mise en réseau Linux, tester le développement et bien plus encore.

En savoir plus :

gabriel@gabriel-Latitude-E6320:~$ multipass info jaunty-arapaima
Name:           jaunty-arapaima
State:          Running
IPv4:           10.250.28.70
Release:        Ubuntu Focal Fossa (development branch)
Image hash:     1e7d8ea02737 (Ubuntu 20.04 LTS)
Load:           0.12 0.03 0.01
Disk usage:     1.3G out of 4.7G
Memory usage:   128.6M out of 981.2M

K3s sur Multipass

J'ai immédiatement essayé d'y exécuter des commandes et j'ai également vérifié s'il ne s'agissait que de Docker.

gabriel@gabriel-Latitude-E6320:~$ multipass launch --name test
Launched: test                                                                  
gabriel@gabriel-Latitude-E6320:~$ multipass exec test -- uname -a                  
Linux test 4.15.0-88-generic #88-Ubuntu SMP Tue Feb 11 20:11:34 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

Obtenir un shell est simple, nous l'avons déjà vu plus haut :

gabriel@gabriel-Latitude-E6320:~$ multipass shell
Launched: primary                                                               
Mounted '/home/gabriel' into 'primary:Home'                                     
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-88-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

 System information disabled due to load higher than 1.0


17 packages can be updated.
14 updates are security updates.

Cependant, cela a lancé une nouvelle instance appelée primary.

gabriel@gabriel-Latitude-E6320:~$ multipass list
Name                    State             IPv4             Image
primary                 Running           10.250.28.112    Ubuntu 18.04 LTS
test                    Running           10.250.28.64     Ubuntu 18.04 LTS

Les instances semblent très rapides .. J'ai vérifié et elles allouent environ un Go de mémoire par défaut:

ubuntu@primary:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:            985          77         508           0         398         765
Swap:             0           0           0
ubuntu@primary:~$ cat /proc/meminfo
MemTotal:        1008732 kB
MemFree:          521104 kB

Installer K3s

ubuntu@primary:~$ sudo su
root@primary:/home/ubuntu# curl -sfL https://get.k3s.io | sh -
[INFO]  Finding latest release
[INFO]  Using v1.17.3+k3s1 as release
[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v1.17.3+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v1.17.3+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
chcon: can't apply partial context to unlabeled file '/usr/local/bin/k3s'
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Creating /usr/local/bin/ctr symlink to k3s
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s
root@primary:/home/ubuntu# sudo kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
primary   Ready    master   16h   v1.17.3+k3s1

Pouvons-nous augmenter (mettre à l'échelle) notre cluster?

root@primary:/home/ubuntu# cat /var/lib/rancher/k3s/server/node-token
K10c8f95459ed749229e735597fcde533f2166808ee9deceb50ea7d5a1bf969d2f3::server:76f4979cba885c81bd84ffec2f44c2d4

Ajout d'un nouveau nœud…

Plus d'infos ici :