Créer son cluster Kubernetes avec RKE et lancement de RancherVM pour y orchestrer ses VM …

Image for post
Image for post

Je commence ici par créer une instance dans Hetzner Cloud qui va supporter Rancher Server qui est sensé depuis la version 2.0 être multi-cloud :

Image for post
Image for post

Lancement de la VM dans Hetzner Cloud :

Image for post
Image for post

avec cette commande pour lancer le container Docker avec l’image du serveur Rancher :

Image for post
Image for post

L’interface graphique de Rancher Server devient accessible :

Image for post
Image for post

Je vais lancer 3 instances bare metal sur Scaleway en CentOS 7 via la gamme de Serveurs C2M dotés de processeurs 8 cœurs Intel Atom x86–64 et 16 Go de RAM ainsi qu’un débit de 2*2,5 Gbit/seconde au niveau des cartes réseau :

Image for post
Image for post

Je peux utiliser la ligne de commande avec le binaire scw disponible sur github pour les créer et les contrôler :

Image for post
Image for post
Image for post
Image for post

et je lance mes 3 instances :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Je peux vérifier que les extensions Virtualisation sont présentes dans ces instances :

Image for post
Image for post

et j’utilise le binaire RKE disponible sur github pour créer mon cluster Kubernetes. Rancher Kubernetes Engine (RKE) est un installateur Kubernetes léger qui prend en charge l’installation sur des serveurs nus ouvirtualisés. RKE est sensé résoudre un problème commun à la communauté Kubernetes : la complexité de l’installation. Avec RKE, l’installation de Kubernetes est normalement simplifiée, quels que soient les systèmes d’exploitation ou les plates-formes utilisées :

Image for post
Image for post
Image for post
Image for post

Les binaires sont à récupérer et à installer sur sa station :

Image for post
Image for post

et je lance cette commande pour initier la création du cluster Kubernetes :

On répond aux différentes questions et on obtient ce fichier de configuration en YAML avec les adresses IP des instances sur Scaleway :

Image for post
Image for post

avec ce fichier généré nommé ici cluster.yml

Au préalable, j’installe le moteur Docker sur ces instances :

Image for post
Image for post

On lance alors l’installation du cluster Kubernetes avec RKE :

et l’installation se termine après quelques minutes …

Image for post
Image for post

Je peux vérifier la présence du cluster avec le client kubectl et les credentials fourni dans un fichier kube_config_cluster.yml :

Image for post
Image for post

qu’on peut migrer vers .kube/config :

Image for post
Image for post

et je peux importer ce nouveau cluster dans le serveur Rancher :

Image for post
Image for post

pour cela, je dois lancer un manifest à télécharger depuis le serveur Rancher :

Image for post
Image for post
Image for post
Image for post

et il apparait dans le tableau de bord du serveur Rancher :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Je peux passer à l’installation de RancherVM. RancherVM permet de créer des VMs qui tournent à l’intérieur de pods Kubernetes, appelés VM Pods. Dans la théorie, il y a un container qui exécute une instance de machine virtuelle. On peut empaqueter alors n’importe quelle image QEMU/KVM en tant qu’image Docker, la distribuer en utilisant n’importe quel registre Docker tel que DockerHub, et l’exécuter sur RancherVM.

Image for post
Image for post
Image for post
Image for post

que l’on connaissait aupravant depuis quelques années pour créer des systèmes convergés mixant VM et containers :

Image for post
Image for post

RancherVM étend l’API Kubernetes avec des définitions de ressources personnalisées, ou CRD. Les utilisateurs définissent une spécification VM CRD détaillant l’image de base, la quantité de ressources de calcul et les paires de clés autorisées à ouvrir une session SSH. Un contrôleur Kubernetes crée des VM pods si nécessaire pour atteindre la spécification désirée et le reflète dans le statut du CRD.

Et dans cette optique, j’installe un serveur NFS sur le noeud maître du cluster (l’utilisation d’un partage avec par exemple Ceph ou GlusterFS pourrait fonctionner)

Image for post
Image for post

avec un partage en /var/lib/rancher/vm-shared :

Image for post
Image for post
Image for post
Image for post

et je vérifie que le démon du serveur NFS est actif :

Image for post
Image for post

et je peux créer un point de montage en /var/lib/rancher/vm sur les trois noeuds du cluster :

Image for post
Image for post
Image for post
Image for post

et je fais un test sur ce point de montage pour vérifier qu’il est bien actif :

Image for post
Image for post

Idem sur les autres noeuds du cluster :

Image for post
Image for post
Image for post
Image for post

Et je peux déployer RancherVM via un manifest présent sur le dépôt Github de Rancher :

Image for post
Image for post

et je vérifie que le déploiement des POD et service s’est bien déroulé :

Image for post
Image for post

et le dashboard est accessible via le port TCP 31716 fourni viaNodePort (en l’absence ici d’une IP externe fournie par l’Ingress Controller). RancherVM est livré avec une interface utilisateur Web pour gérer les clés publiques, les nœuds de calcul, les machines virtuelles et l’accès à la console VNC à partir d’un navigateur Web :

Image for post
Image for post

Je commence par créer une clé publique via un manifest :

Image for post
Image for post

Idem pour une machine virtuelle :

Image for post
Image for post

et je lance le tout :

Image for post
Image for post
Image for post
Image for post

Et je peux multiplier les instances Ubuntu depuis le tableau de bord (après un temps non négligeable, processeur Intel Atom oblige …) :

Image for post
Image for post
Image for post
Image for post

Les points de montage NFS servent théoriquement à la migration de ces instances au sein de POD dans Kubernetes :

Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post
Image for post

Un développement de RancherVM qui n’est pas encore terminé (idem pour certaines limitations de RKE) mais à regarder quand même. Surtout que des technologies alternatives comme KubeVirt ou Virtlet existent pour transformer Kubernetes en orchestrateur de machines virtuelles …

Image for post
Image for post
Image for post
Image for post

A suivre ! …

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store