Avez-vous vraiment besoin de Kubernetes (K8) ?


Illustration montrant les logos Docker et Kubernetes

Kubernetes a la réputation d’être compliqué. Bien qu’il s’agisse d’un logiciel fantastique, les avantages peuvent parfois ne pas compenser la complexité supplémentaire, en particulier pour les petites entreprises gérant des déploiements simples. Le vieux Docker est-il assez bon ?

Ce que Kubernetes est génial

Kubernetes (K8s) est très souvent utilisé avec Docker dans des environnements professionnels, ce qui peut donner l’impression qu’il s’agit d’une version améliorée ou plus organisée de Docker. Bien que cela soit vrai à certains égards, ce n’est pas le but exact des K8.

Kubernetes est un « système d’orchestration de conteneurs », et il est important de se rappeler ce que cela signifie. Le plan de contrôle Kubernetes gère tous les détails de « l’orchestration » des conteneurs qui s’exécuteront sur les nœuds. Il sépare le matériel du logiciel et permet à vos machines de fonctionner en tant que nœuds de travail, ce qui est idéalement tout ce qu’elles devraient être.

Kubernetes est fantastique lorsque vous avez un grand déploiement de production qui doit pouvoir évoluer, se réparer et se gérer automatiquement. Lorsque vous gérez des centaines de conteneurs sur de nombreux serveurs, devoir gérer l’équilibrage de charge et déplacer des conteneurs d’un serveur à l’autre peut devenir ennuyeux. K8s gère cela pour vous avec des options de configuration supplémentaires.

Graphique montrant l'architecture du cluster Kubernetes
Graphique montrant l’architecture du cluster Kubernetes

Kubernetes est également similaire à l’infrastructure en tant que code (IaC), un autre concept utile. Il vous permet de contrôler vos services à l’aide de fichiers de configuration qui peuvent être suivis via Git. Cela peut considérablement améliorer vos processus de déploiement en leur permettant d’être suivis le long des branches, testés, versionnés et annulés si nécessaire.

Ce que Kubernetes n’est pas génial

Le principal inconvénient de Kubernetes est qu’il est notoirement compliqué. Ce n’est peut-être pas un gros problème si vous le connaissez déjà, mais dans tous les cas, cela ajoute du temps et de la complexité à la mise en place et à l’exécution de vos applications. C’est un excellent outil pour apprendre et une bonne compétence à avoir. Mais cela fonctionne mieux avec des déploiements plus importants, et si vous n’exécutez que quelques serveurs ou quelques conteneurs, l’effort supplémentaire de Kubernetes n’en vaut peut-être pas la peine.

Kubernetes est un intermédiaire, mais vous pouvez toujours aller à l’ancienne et jouer vous-même le rôle d’orchestrateur. L’avantage de Docker est qu’il facilite le processus de création et de déplacement des applications grâce à la conteneurisation. La création d’un nouveau serveur est relativement simple et vous pouvez avoir une nouvelle instance EC2 d’AWS exécutant votre conteneur en quelques minutes.

Sans Kubernetes, le seul problème supplémentaire que vous rencontrez est de devoir exécuter des commandes manuellement sur vos serveurs avec le docker CLI ou docker-compose API. Si vous devez ajouter un nouveau conteneur ou déplacer un conteneur vers un autre nœud, vous devrez réexécuter ces commandes. Cela peut être un problème si, par exemple, vous rencontrez un trafic élevé inattendu et avez besoin de lancer plus d’instances automatiquement. Les K8 résoudraient ce problème. Mais dans de nombreux cas, votre trafic peut être relativement stable, ou du moins prévisible d’une semaine à l’autre, en particulier pour les services principaux qui n’ont pas vraiment besoin d’évoluer automatiquement.

Essentiellement, Docker lui-même améliore déjà considérablement le processus d’exécution des applications portables. C’est une énorme amélioration par rapport à l’installation d’applications à l’ancienne. Kubernetes améliore un peu Docker et automatise certaines tâches nécessaires aux grands réseaux, mais ajoute beaucoup de complexité.

Sa valeur dépendra du temps qu’il vous fera réellement gagner. Si cette complexité est acceptable pour vous et finit par vous faire gagner du temps, vous devriez utiliser les K8, mais si ce n’est pas le cas, vous ne devriez pas perdre votre temps avec, surtout quand vous pouvez toujours y revenir plus tard si besoin est. .

Que devriez-vous utiliser à la place ?

Il est bon de prendre du recul et de voir pourquoi vous envisagez vraiment Kubernetes. Si vous souhaitez que votre réseau évolue automatiquement, gère vos ressources automatiquement et lance des pods sur différents serveurs en fonction de la configuration, Kubernetes est un excellent outil à apprendre. Si vous êtes préoccupé par la complexité, les fournisseurs de cloud comme AWS ont services Kubernetes gérés comme EKSqui peut gérer une partie du sale boulot à votre place, notamment en ce qui concerne la gestion et l’approvisionnement des ressources.

Cependant, si tout ce que vous voulez, c’est un moyen de gérer vos conteneurs plus facilement ou de mettre à jour automatiquement les conteneurs, il existe des outils beaucoup plus simples pour le travail. Ils ne sont peut-être pas aussi complets que Kubernetes, mais ils seront plus simples et pourront vous faire gagner du temps.

Si vous souhaitez mettre à l’échelle automatiquement certains services, vous devrez presque toujours parler à l’API d’un fournisseur de cloud pour provisionner de nouvelles ressources. Kubernetes peut gérer cela pour vous pour de nombreuses plates-formes, mais des services comme AWS, Azure et GCP ont tous des services de conteneur simples avec des fonctionnalités de mise à l’échelle automatique. Le service ECS d’AWS peut facilement être configuré pour évoluer automatiquement afin de répondre à une forte demande.

EN RELATION: Comment démarrer avec les déploiements de conteneurs Auto-Scaling sur AWS ECS

Si vous devez mettre à jour automatiquement les conteneurs chaque fois que vous envoyez de nouvelles versions à votre registre Docker, vous pouvez utiliser un service comme Watchtower. Il s’exécute sur un nœud de travail en tant que service Docker lui-même, avec le socket Docker exposé, et surveille les modifications. Une fois qu’un nouveau conteneur est poussé, Watchtower redémarrera le conteneur. Cela vous fera gagner du temps lors des redémarrages des conteneurs et constitue une bonne alternative aux mises à jour de Kubernetes.

docker run --detach 
--name watchtower 
--volume /var/run/docker.sock:/var/run/docker.sock 
containrrr/watchtower

Si vous souhaitez être plus organisé en général dans la gestion de vos conteneurs, vous devriez envisager de mettre en place un Interface graphique de gestion Docker comme Portainer. Portainer est une interface graphique Web pour la gestion des déploiements Docker. Il fonctionne avec plusieurs nœuds de travail, un peu comme Kubernetes, mais il vous permet de gérer le travail d’orchestration, en configurant des conteneurs sur les serveurs de votre choix.

Portainer est vraiment facile à installer car il est emballé comme un conteneur lui-même. Si vous souhaitez en savoir plus, vous pouvez lire notre guide pour le configurer et l’utiliser.

EN RELATION: Comment démarrer avec Portainer, une interface utilisateur Web pour Docker





Vous pouvez lire l’article original (en Angais) sur le blogwww.howtogeek.com