Rancher lab k3s kubernetes cluster

Kubernetes k3s est une version allégée de k8s qui vient d’être proposé par Rancher. k3s a une taille de 40Mo et a besoin de 512Mo de RAM. Le volonté est de permettre d’utiliser Kubernetes sur des équipements légers, IoT, edge server, RaspberryPi, …
On va essayer de comprendre les différences et provisionner un cluster kubernetes k3s avec Ansible.

Pourquoi Kubernetes est-il trop gourmand ?

Kubernetes embarque nativement de nombreuses fonctionnalités pour assurer la rétrocompatibilité, mais aussi un certain nombre d’éléments en alpha ou en beta. En outre, etcd, qui a pour rôle de stocker l’ensemble des informations, utilise pas mal de RAM.

Kubernetes k3s vs kubernetes k8s

Mon lab est composé d’un NUC Beelink N34 équipé d’un Celeron N3450 (quadcores), 6Go de RAM et 64Go de SSD, c’est une version amélioré de celui dont j’ai parlé dans mon post : Comment construire un LAB Docker pas cher avec RaspberryPi ou NUC Atom ?

Sur ce serveur j’ai créé 3 VM linux KVM debian :

adm@node2:~$ virsh list --all

 Id    Name                           State
----------------------------------------------------
 16    master                         running
 17    worker1                        running
 18    worker2                        running
  • 1 x VM kvm master : 2.0 Go de RAM / 10 Go SSD / 2 vCPU
  • 2 x VM kvm worker : 1.5 Go de RAM / 10 Go SSD / 2 vCPU

Après démarrage du cluster Kubernetes standard, voici les informations d’utilisation CPU/RAM des 3 VM kvm avec le noeud master et les 2 noeuds worker.

CPU RAM load kubernetes k3s

Après démarrage du cluster Kubernetes k3s, voici les informations d’utilisation CPU/RAM des 3 VM kvm avec le noeud master et les 2 noeuds worker.

CPU RAM load kubernetes k3s
CPU / RAM avec Kubernetes K3s

Le constat est simple :

  • CPU : on est légèrement supérieur avec k8s standard
  • RAM : la consommation est double avec k8s standard

Provioning automatique d’un cluster k3s avec Ansible

Pour accélérer le déploiement du cluster kubernetes k3s, j’ai écrit un ensemble de fichiers pour Ansible. Le site de k3s explique très bien comment installer le master node kubernetes et les noeuds worker kubernetes.

Mon ami zwindler vient de partager des scripts identiques pour un provisioning automatique avec Ansible pour k3s sur Scaleway.

Pour ce qui est de mes scripts, j’ai poussé un Pull Request sur le repo Rancher, sous forme d’un répertoire contrib/ansible.

Note technique sur la distribution kubernetes k3s

Kubernetes certified
k3s est une distribution Kubernetes certifiée

k3s est une distribution compatible Kubernetes production qui apporte les modifications suivantes :

  • Tous les éléments tagger legacy, alpha, non-default features ont été supprimés.
  • Les plugins des cloud providers et de stockage ont été enlevés.
  • Sqlite3 remplace etcd3 comme mécanisme de stockage.
  • Le tout est packagé dans un simple launcher qui cache la complexité du TLS et des options.
  • Docker est remplacé par Containerd

Conclusion

Depuis de nombreuses années, je suis un fervent praticien du Green IT et je n’étais pas très heureux avec kubernetes, k3s me fait bien plaisir !