L’outillage

Vagrant

Vagrant est un outil de Hashicorp permettant de faire de l’infra as code pour configurer et provisionner des VMs.

Vagrant est souvent utilisé à but de test avec Virtualbox, ce qui sera le cas ici.

Je ne traite pas de son installation et de son utilisation mais la documentation officielle est bien faite.

MicroK8S

MicroK8S est la distrubution Kubernetes fournie par Canonical.

C’est une distribution légère.

Helm

Helm peut-être comparé à un gestionnaire de packages. Ces packages sont prêts à l’emploi pour être utilisés dans Kubernetes.

Je ne traite pas non plus de l’utilisation de Helm et je vous renvoie vers la documentation officielle.

Le fichier Vagrant

Je pars d’une VM Debian et je provisionne un “Master” et un “Node” avec MicroK8S.

Voir le Vagrantfile

Il ne reste plus qu’à lancer un :

vagrant up --provision

Puis de se connecter aux VMs avec :

vagrant ssh node1
vagrant ssh master1

Alias et completion pour se simplifier la vie

Dans la provision Vagrant, j’ajoute des alias et la completion de commande pour se simplifier la vie.

alias m='microk8s'
alias k='microk8s.kubectl' 

Jonction du node au cluster

Sur le master :

# MicroK8S nous indique le jeton qui permettra au node de rejoindre le cluster
m add-node

From the node you wish to join to this cluster, run the following:
microk8s join 10.0.2.15:25000/1f622d4848e7c85a3d5bf5ade2a3bce6/1fade2a3bce6

Use the '--worker' flag to join a node as a worker not running the control plane, eg:
microk8s join 10.0.2.15:25000/1f622d4848e7c85a3d5bf5ade2a3bce6/1fade2a3bce6 --worker

If the node you are adding is not reachable through the default interface you can use one of the following:
microk8s join 10.0.2.15:25000/1f622d4848e7c85a3d5bf5ade2a3bce6/1fade2a3bce6
microk8s join 192.168.56.10:25000/1f622d4848e7c85a3d5bf5ade2a3bce6/1fade2a3bce6

Dans mon contexte, c’est l’adresse IP en .56.10 qui est joignable :

m join 192.168.56.10:25000/1f622d4848e7c85a3d5bf5ade2a3bce6/1fade2a3bce6 --worker

On peut donner des rôles aux nodes :

kubectl label node master1 kubernetes.io/role=master
kubectl label node node1 kubernetes.io/role=worker

Sur le master :

k get nodes

NAME     STATUS   ROLES    AGE   VERSION
master1  Ready    master   13m   v1.28.3
node1    Ready    node     43s   v1.28.3