“OpenStack on LXD” et “k0s” dans un serveur Bare Metal ARM 64 Bits d’AWS …

Karim
9 min readApr 5, 2021

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.

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.

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.

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

à 0,0788 $ par heure …

J’y installe LXD via son Snap :

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

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

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

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

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

Initialisation de l’hyperviseur LXD :

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

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

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

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

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

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

le tout dans cette série de conteneurs LXC :

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

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

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

Avec le routeur associé …

Création de gabarits pour les instances à lancer …

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

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 :

Et par redirection SSH, connexion au dashboard Horizon :

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 :

via ce script …

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

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

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

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

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

qui est accessible via une des adresses fournies par ZeroTier …

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 …

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. J’ai selectionné dans cet article la gamme d’instance de type a1.metal mais j’aurais pû selectionner d’autres instances Bare Metal avec ces processeurs Graviton2 :

De plus, AWS a mis très récemment à 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 …

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 …

À suivre !

--

--