Créer rapidement un cluster Kubernetes avec Kontena Pharos ou MicroK8S dans Azure à l’aide de machines virtuelles basse priorité dans des groupes identiques (VMSS) …

Karim
7 min readJun 10, 2018

--

Microsoft a mis en place le principe des VMs éphémères que l’on peut retrouver dans Google Cloud Preemptible VM ou AWS Spot Instances dans son dispositif de création de clusters de VMs identiques (VMSS). C’est encore officiellement en preview => https://docs.microsoft.com/fr-fr/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-use-low-priority

L’avantage avec ce type de VMs (que l’on retrouvait dans Azure Batch Service) c’est que l’on arrive à une réduction de 80% environ du tarif normal de celles-çi => https://docs.microsoft.com/fr-fr/azure/batch/batch-low-pri-vms

Ici je pars de la création de ce type de cluster à partir des lignes de commandes fournies avec Azure CLI :

Let’s start…

az login
az group create -l eastus -n <rgname>
az vmss create \
--resource-group <rgname> \
--name <name> \
--image UbuntuLTS \
--upgrade-policy-mode automatic \
--admin-username <myuser> \
--admin-password <mysecurepassword> \
--instance-count 3 \
--eviction-policy Delete \
--vm-sku Standard_D11_v2
--priority Low

Le cluster est à présent visualisable dans le dashboard Azure :

Je me connecte via un des ports définis par le load balancer attaché au cluster à l’un des noeuds :

et je copie en avance de phase ma clé publique sur chacun des autres noeuds :

Je vais utiliser le binaire Kontena Pharos pour la création d’un cluster Kubernetes très facilement :

J’édite un fichier de configuration cluster.yml qui va servir à la construction du cluster via Kontena Pharos :

hosts:
- address: "10.0.0.6"
user: <myuser>
role: master
- address: "10.0.0.8"
user: <myuser>
role: worker
- address: "10.0.0.9"
user: <myuser>
role: worker
network:
provider: weave
addons:
ingress-nginx:
enabled: true
kubernetes-dashboard:
enabled: true
host-upgrades:
enabled: true
interval: "7d"
kured:
enabled: true

Et je lance la création du cluster Kubernetes :

Le cluster est actif et je peux en vérifier sa composition :

avec le dashboard Kubernetes intégré :

Et je lance alors deux séries de pod avec des containers du démonstrateur FranceConnect Particulier et Agent :

et à partir des ports exposés dans le cluster, je règle la configuration du load balancer rattaché à ce dernier :

et les portails d’accès apparaissent publiquement :

Et Weavescope permet la visualisation de la topologie induite par ces pools de containers :

Autre test avec MicroK8S, alternative à Minikube toujours en utilisant ces VMs basse priorité :

que l’on retrouve sur Github en conjonction d’un simple script d’installation :

Démarrage avec un nouveau scale set dans Azure :

Je récupère le script d’installation de MicroK8s depuis le dépôt :

avec une modification de ce dernier :

et son exécution très simple et rapide :

Là encore je vérifie la composition de ce monocluster :

et on voit bien la partition Snap dédiée à l’installation de ce cluster :

avec son dashboard :

Je peux faire le test d’Argo pour créer ses workflows notamment de CI/CD dans Kubernetes :

On peut en effet arriver à ce type de scénario avec ce moteur de workflow :

Installation d’Argo :

et je peux utiliser un package npm nommé reverse-proxy dans mon noeud pour visualiser le dashboard de contrôle d’Argo :

Test rapide d’un workflow de CI/CD de test en exemple :

qui apparait dans le dashboard :

Je termine par le projet Multipass, autre projet de Canonical destiné à simplifier au maximum la création de VM (un peu comme s’il s’agiisait de simples containers) :

L’installation de multipass se fait simplement par snap :

et je lance en une seule ligne un groupe de VMs :

Le tout n’est pas très consommateur :

et je peux lancer un cluster Mesos avec Marathon via Rancher dans ce pool de VMs :

avec encore une fois Traefik :

Un moyen simple d’utiliser ce type de VM beaucoup moins chères et de réduire considérablement sa facture …

A suivre !

--

--

Karim
Karim

Written by Karim

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

No responses yet