Introduction à l’utilisation des Kata Containers avec le support de l’hyperviseur Firecracker …

Karim
4 min readJan 21, 2019

--

La version 1.5.0-rc2 de Kata Containers introduit le support de l’hyperviseur Firecracker. Bien qu’ils n’existent pas encore de paquets disponibles pour Firecracker, une archive spécifique de Firecracker a été créée qui inclut toutes les configurations et binaires nécessaires à l’exécution de Kata Containers +Firecracker.

Pour rappel, Amazon Web Services (AWS) a annoncé Firecracker, une nouvelle technologie de virtualisation open source qui permet d’exploiter des services sécurisés basés sur des containers multi-locataires en combinant la vitesse, l’efficacité des ressources et les performances offertes par les containers avec la sécurité et l’isolation offertes par les VM traditionnelles. Firecracker implémente un gestionnaire de machine virtuelle (VMM) basé sur KVM, et fournit une API RESTful pour créer et gérer des microVM avec n’importe quelle combinaison de vCPU et de mémoire pour répondre aux besoins des applications. Firecracker est construit avec une émulation de périphérique minimale qui permet un temps de démarrage plus rapide, fournit une empreinte mémoire réduite pour chaque microVM, et offre un environnement sandboxed fiable pour chaque container.

Firecracker devient un bon complément au projet Kata Containers qui construit des machines virtuelles extrêmement légères se connectant de manière transparente à l’écosystème des containers.

J’illustre cela en créant dans Azure une instance Ubuntu 18.04 de type Ev3 avec la possibilité d’utiliser de la virtualisation imbriquée :

Je récupère l’archive dédiée de Firecracker depuis github :

$ wget https://github.com/kata-containers/runtime/releases/download/1.5.0-rc2/kata-fc-static-1.5.0-rc2-x86_64.tar.gz$ sudo tar -xvf kata-fc-static-1.5.0-rc2-x86_64.tar.gz -C /

Docker 18.06 est nécessaire pour faire du Kata avec Firecracker. Pour Kata+Firecracker, un pilote basé sur des blocs comme devicemapper est nécessaire. La dernière version de Docker, 18.09, ne supporte pas devicemapper et n’est pas compatible. J’installe cette version dans l’instance :

Pour configurer le Docker pour devicemapper et Kata Containers, définissez /etc/docker/daemon.json avec le contenu suivant :

{
"runtimes": {
"kata": {
"path": "/opt/kata/bin/kata-runtime"
}
},
"storage-driver": "devicemapper"
}

Et relancez Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

Je peux exécuter un conteneur Kata en utilisant Firecracker. Auparavant il faut s’assurer que vsock est pris en charge sur le système hôte :

sudo modprobe vhost_vsock

Si vsock est supporté, je peux lancer le kata container:

docker run --runtime=kata -itd --name=oh-sweet alpine sh

Firecracker fonctionne maintenant sur le système, ainsi qu’un processus kata-shim :

J’effectue un autre test avec le traditionnel démonstrateur FranceConnect Agent :

et le démonstrateur est accessible :

Dans la logique d’AWS dans l’utilisation de Firecracker dans un contexte Serverless, je fais le test ici de l’exécution des Azure Functions :

et notamment avec Azure Function dans un Kata Container via Firecracker :

Un projet à suivre d’autant qu’une mise à jour de l’image du conteneur de kata-deploy pour permettre aux utilisateurs d’installer et configurer plus rapidement les Kata Containers (avec QEMU et Firecracker) dans un cluster Kubernetes qui utilise containerd et/ou CRIO …

--

--

Karim
Karim

Written by Karim

Above the clouds, the sky is always blue ...

No responses yet