2 minutes
K8S Chap. 2 - Installation d’un cluster K8S avec Vagrant
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.
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