Bonjour Pierre et les autres CHATONS,
Je viens de découvrir ce thread et je me permets de le relancer, comme il me semble s’agir d’un sujet de grand intérêt pour les hébergeurs alternatifs qui souhaitent adapter leur infrastructure à une forte charge.
En 2021, nous avons testé Kubernetes pour voir si cette solution était adaptée à nos besoins d’hébergeurs CHATONS. L’idée d’avoir une infrastructure logicielle qui s’adapte en fonction de ses ressources pour parvenir à un état donné me semble particulièrement séduisante et pertinente, en particulier pour fournir des services en haute disponibilité.
Seulement, voilà notre infrastructure actuelle :
- une machine principale, VPS à 8 vCPU et 8GB RAM ;
- une machine de stockage, VPS à 2 vCPU et 2GB RAM ;
- une machine de backup/monitoring, VPS à 2 vCPU et 2GB RAM.
On utilise Docker pour gérer les services installés sur ces trois machines.
Comme vous pouvez le constater, on aime bien « faire beaucoup avec peu », même si c’est parfois très contraignant. À l’instar de Deux Fleurs, on utilise plutôt des machines peu coûteuses et peu puissantes, quitte à en avoir plus.
À terme, pour « scayler », on partirait plutôt sur un ensemble de machines de 4 à 16 Go de RAM plutôt que quelques serveurs en rack à 64+ Go de RAM.
Kubernetes ne me semble malheureusement pas adapté à cet usage. Pour tester, nous avons effectué plusieurs tests sur une machine seule à 4GB de RAM :
- D’abord en installant la version complète de Kubernetes et en la démarrant (en tant que master node) : le logiciel a pris toute la RAM et tout le CPU, et semble avoir crash assez vite car il n’arrivait pas à interagir assez rapidement avec son registre (etcd), la latence augmentait progressivement en quelques minutes. Pour rappel : c’était un test à vide, sans aucune application installée dessus.
- Ensuite, en installant la version « allégée » k3s en master node également, le logiciel a pompé 1GB de RAM dès son démarrage, puis utilisait 25% à 40% du CPU de manière constante, toujours à vide.
- Le démarrage de petits services (nginx/traefik) prenait plusieurs minutes.
- (On n’a pas testé microk8s car le logiciel semble impossible à utiliser sans installer snap.)
Je ne comprends pas pourquoi le logiciel a besoin d’autant de RAM et de CPU alors qu’il ne fait strictement rien. En comparaison, Docker pompe tout au plus 50 MB de RAM à vide (containerd et dockerd additionnés), et quasiment pas de CPU.
Pour cet usage, on s’orienterait plutôt vers Docker Swarm pour cette raison. On a encore besoin de tester sa consommation et ses performances, mais son usage me semble plus pertinent par rapport à notre infrastructure plutôt que cette usine à gaz que représente Kubernetes, qui semble plutôt fait pour tourner sur des machines de très grande taille où l’on se soucie peu des ressources disponibles.
Comment envisageriez-vous de faire tourner Kubernetes sur une machine de petite taille ? Peut-être qu’il est possible de modifier sa configuration par défaut pour l’adapter à notre toute petite infrastructure ? Ou alors, considérez-vous que faire tourner une infrastructure sur des petites machines est une idée incongrue ?
Bonne soirée
~ neil