“OpenStack on LXD” et “k0s” dans un serveur Bare Metal ARM 64 Bits d’AWS …
Tags: kubernetes, docker, aws, openstack
Published: 2021-04-05 20:21:20

---
title: “OpenStack on LXD” et “k0s” dans un serveur Bare Metal ARM 64 Bits d’AWS …
published: true
date: 2021-04-05 19:53:19 UTC
tags: kubernetes,docker,aws,openstack
canonical_url: https://deep75.medium.com/openstack-on-lxd-et-k0s-dans-un-serveur-bare-metal-arm-64-bits-daws-176d1ce32ac3
---

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

Amazon a développé des processeurs AWS Graviton optimisés pour les applications en nuage et offrant des optimisations en termes de puissance, de performances et de coûts par rapport à leurs homologues Intel.

Ces processeurs sont dotés de cœurs 64 bits Arm Neoverse et d’un silicium personnalisé conçu par AWS lui-même. On peut les trouver dès aujourd’hui dans les instances Amazon EC2 A1.

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

> Les instances ARM de la gamme “A1” d’Amazon sont particulièrement adaptées aux charges de travail scale-out, par exemple les frontaux web, les microservices conteneurisés ou les flottes de mise en cache. En élargissant le choix des options de calcul, les instances A1 permettent de réaliser jusqu’à 45 % d’économies.

> De plus, les instances A1 permettent aux développeurs ARM de construire et de tester nativement sur une infrastructure basée sur ARM dans le cloud : plus de compilation croisée ou d’émulation nécessaire.

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

[Amazon Launches 64-bit Arm Server "A1" Instances](https://www.cnx-software.com/2018/11/27/amazon-arm-server-a1-instances/)

AWS a dès lors mis à disposition les nouvelles instances Bare Metal A1 qui sont alimentées par des processeurs AWS Graviton dotés de cœurs Arm Neoverse 64 bits.

- [Présentation de la disponibilité des instances Bare Metal Amazon EC2 A1](https://aws.amazon.com/fr/about-aws/whats-new/2019/10/introducing-availability-of-amazon-ec2-a1-bare-metal-instances/)
- [Instances Amazon EC2 A1](https://aws.amazon.com/fr/ec2/instance-types/a1/)

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

[Now Available: Bare Metal Arm-Based EC2 Instances | Amazon Web Services](https://aws.amazon.com/blogs/aws/now-available-bare-metal-arm-based-ec2-instances/)

Je lance donc une instance Spot de type **a1.metal** dans AWS avec Ubuntu 20.04 LTS :

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

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

à 0,0788 $ par heure …

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

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

J’y installe LXD via son Snap :

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

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

Il est donc possible d’installer OpenStack dans des conteneurs LXC avec l’aide du dépôt GitHub dédié :

[openstack-charmers/openstack-on-lxd](https://github.com/openstack-charmers/openstack-on-lxd)

Ce qui avait été possible dans un article précédent via un serveur dans phoenixNap.

[OpenStack sur LXD avec Juju et k3sup dans phoenixNAP …](https://deep75.medium.com/openstack-sur-lxd-avec-juju-et-k3sup-dans-phoenixnap-e5867a487497)

Et dans la droite ligne proposée notamment par nos amis de la société Cloudbase :

[OpenStack on ARM64 - Deployment - Cloudbase Solutions](https://cloudbase.it/openstack-on-arm64-part-2/)

Installation de Juju et des clients python d’OpenStack sur cette instance Bare Metal :

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

avec les paramêtres d’optimisation du kernel corrrespondants.

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

Initialisation de l’hyperviseur LXD :

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

et des paramêtres réseaux associés …

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

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

Création d’un contrôleur Juju basé sur le type LXD Cloud pour gérer le déploiement :

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

Depuis le répertoire récupéré auprès du dépôt GitHub, initialisation de LXD avec le profil dédié …

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

Lancement du déploiement d’OpenStack Victoria fonctionnant sur des conteneurs LXC Ubuntu Focal via Juju et ce bundle : **_“bundle-focal-victoria.yaml”_**

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

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

Après environ 30/40 minutes, je débloque Ceilometer via :

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

Le déploiement d’OpenStack on LXD est terminé !

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

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

le tout dans cette série de conteneurs LXC :

![](https://cdn-images-1.medium.com/max/768/1*IX-hO96w3Adig0iJqepXsA.png)

Je peux alors charger une image QCOW2 d’Ubuntu 20.04 LTS ARM 64 Bits.

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

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

Et créer un réseau externe dans OpenStack pour mes futures instances …

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

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

Ainsi qu’un réseau et un sous-réseau interne ..

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

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

Avec le routeur associé …

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

Création de gabarits pour les instances à lancer …

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

ainsi que d’une paie de clés pour s’y connecter …

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

La console Horizon est de la partie dans ce cluster OpenStack. Je retrouve l’adresse IP et les identifiants associés à cette dernière via Juju :

![](https://cdn-images-1.medium.com/max/962/1*87ShxkhxLcXKNTKYofbpqg.png)

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

Et par redirection SSH, connexion au dashboard Horizon :

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

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

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

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

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

Lancement de trois instances Ubuntu 20.04 LTS depuis le dashboard Horizon pour former un cluster Kubernetes dôté d’un noeud Maître et deux noeuds Worker :

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

Connexion SSH à la première de ces instances Ubuntu :

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

et installation de Kubernetes via le projet k0s dont on avait évoqué l’intérêt dans un précédent article :

- [Déploiement d’un cluster Mirantis k0s avec Traefik dans des MicroVMs au sein d’une carte Raspberry…](https://dev.to/deep75/deploiement-d-un-cluster-mirantis-k0s-avec-traefik-dans-des-microvms-au-sein-d-une-carte-raspberry-44k2-temp-slug-1820179)
- [k0s | The Kubernetes Distribution](https://k0sproject.io/)

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

via ce script …

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

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

Génération d’un token qui me permettra d’ajouter un noeud Worker à ce noeud Maître :

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

Installation de k0s dans les autres instances Ubuntu et jonction au cluster Kubernetes en formation :

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

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

Le cluster Kubernetes est formé avec toutes ces instances Ubuntu ARM 64 Bits et k0s :

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

Je joins également ces instances à ZeroTier pour ensuite y installer MetalLB et bénéficier d’un service de LoadBalancer dans ce cluster :

[Download - ZeroTier](https://www.zerotier.com/download/)

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

![](https://cdn-images-1.medium.com/max/794/1*dgodxl4kH7ds20r1bI-4lw.png)

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

Installation de MetalLB :

[MetalLB, bare metal load-balancer for Kubernetes](https://metallb.universe.tf/installation/)

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

en le configurant pour le mode DHCP sur la base du segment d’adresse IP dans ZeroTier …

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

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

Lancement du sempiternel Démonstrateur FC dans sa version ARM 64 Bits …

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

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

qui est accessible via une des adresses fournies par ZeroTier …

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

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

La consommation mémoire dans l’instance Bare Metal qui exécute le cluster OpenStack, le cluster Kubernetes ainsi que les “instances et conteneurs” associés demeure raisonnable ici …

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

Suite au lancement des premières instances EC2 alimentées par Graviton fin 2018 et du processeur Graviton2 qui lui fait suite juste un an plus tard, AWS met à disposition sa nouvelle gamme d’instance de type X2gd.

> Ces nouvelles instances X2gd ont deux fois plus de mémoire par vCPU que les instances R6g optimisées pour la mémoire, et sont conçues pour des charges de travail gourmandes en mémoire. Cela inclut les bases de données en mémoire (Redis et Memcached), les bases de données relationnelles open source, l’analyse en temps réel, les services de mise en cache et les conteneurs …

[New Amazon EC2 X2gd Instances - Graviton2 Power for Memory-Intensive Workloads | Amazon Web Services](https://aws.amazon.com/blogs/aws/new-amazon-ec2-x2gd-instances-graviton2-power-for-memory-intensive-workloads/)

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

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

Les instances X2gd sont disponibles en huit tailles, ainsi qu’en version bare metal. Les doubles unités SIMD, la prise en charge des instructions int8 et fp16 et d’autres améliorations architecturales entre les générations se combinent pour faire du Graviton2 un processeur relativement rentable …

[Graviton 2 : le processeur ARM d'Amazon serait capable de rivaliser avec les puces d'Intel et AMD](https://www.01net.com/actualites/graviton-2-le-processeur-arm-d-amazon-serait-capable-de-rivaliser-avec-les-puces-d-intel-et-amd-1872971.html)

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

À suivre !