Les types de solutions pour passer à Kubernetes : Kubernetes en local, Kubernetes Vanilla, distributions Kubernetes, services Kubernetes managés, etc
De nombreuses solutions existent pour installer Kubernetes et il peut être délicat de s’y retrouver. Nous vous présentons dans ce billet les différentes options d’installation,avec leurs spécificités et cas d’usage,ainsi que leurs avantages et inconvénients pour faciliter votre choix.
Parmi l’éventail de possibilités qui s’offrent à vous, nous allons distinguer trois grandes catégories:
- Kubernetes en local sur votre poste de travail
- Les solutions destinées à l'installation d’un cluster Kubernetes
- Les services Kubernetes managés
Chaque catégorie répond à un besoin spécifique et aura également une incidence sur les ressources à mobiliser et l’organisation à mettre en œuvre pour assurer le bon maintien en condition opérationnelle de votre plateforme.
Distributions Kubernetes en local
Description
Ces petites distributions contiennent le minimum nécessaire pour faire tourner un cluster Kubernetes, avec la particularité d’être autonomes et assez peu gourmandes en ressources. La plupart du temps, les composants du plan de contrôle de Kubernetes ainsi que les applications sont déployés sur une seule et même machine.
Parmi ces distributions, on peut retrouver :
- K3s (Faible empreinte mémoire, support de CPU ARM et base de données SQL à la place d’etcd)
- K0s (Cluster Kubernetes local compatible MacOS, Windows et Linux)
- minikube (Cluster Kubernetes local compatible MacOS, Windows et Linux)
- microk8s (Cluster Kubernetes local compatible MacOS, Windows et Linux, mais supporte également les CPUs ARM, ce qui en fait une distribution parfaite pour l’IoT)
- Docker Desktop (L’application de bureau permet d’installer un cluster localement sur votre poste de travail)
- Kind (Cluster Kubernetes local utilisant des conteneurs Docker pour une utilisation à des fins de tests)
Cas d’usage
Le plus souvent, ces installations se font directement sur le poste local pour être utilisées par les développeurs indépendamment du (ou des) cluster Kubernetes de production.
Avantages
- Installation rapide et simple
- Faible empreinte mémoire et CPU
- Support des processeurs ARM
Inconvénients
- Moins modulaire et très spécifiques dans leur utilisation
- Souvent complexe à déployer en haute disponibilité
- Peu adapté à des plateformes Kubernetes de production qui doivent être la plupart du temps déployées sur des infrastructures plus complexes
Construire et déployer son propre cluster Kubernetes
Un cluster Kubernetes intègre l’ensemble des composants qui vous sont nécessaires pour disposer d’une plateforme résiliente et performante.
Vous devrez disposer de vos propres serveurs (physiques ou VM) car ces installations sont flexibles mais elles nécessitent un environnement dédié. Vous pouvez installer votre cluster Kubernetes sur vos propres infrastructures (“on-premise”), ou sur une offre de cloud public ou privé. Les spécifications des serveurs utilisés ont également une importance, ceux-ci doivent être dimensionnés en fonction de votre besoin pour optimiser vos coûts d’infrastructure.
Puisque le service n’est pas managé par le fournisseur d’infrastructure, ce type de cluster Kubernetes nécessite d’être maintenu en conditions opérationnelles par vos soins ou par un prestataire d’infogérance cloud.
Cette catégorie de solution Kubernetes peut se diviser en deux sous-catégories décrites ci-après : les distributions Kubernetes par des éditeurs, les installations Kubernetes Vanilla.
Les distributions Kubernetes proposées par les éditeurs
Description
Pour un usage orienté production permettant la mise à l’échelle de vos applications, vous pouvez opter pour une distribution Kubernetes proposée par un éditeur de logiciel qui facilitera l’installation et la gestion de la plateforme.
Ces solutions incluent l’ensemble des composants nécessaires à votre cluster Kubernetes comme notamment le moteur d’exécution de conteneurs ou encore les plugins de réseau et de stockage. Le plus souvent, une interface de gestion est proposée pour faciliter l’installation et la mise à jour de la plateforme.
Parmi les distributions les plus répandues, on pourra citer :
- Red Hat Openshift (Produit englobant de nombreux outils de déploiement d’applications mais aussi de métrologie)
- Suse Rancher (Solution open source pouvant bénéficier de support qui propose une gestion des utilisateurs efficace ainsi qu’un catalogue d’applications)
- Mirantis Kubernetes Engine (Anciennement Docker Entreprise qui est une solution complète d’orchestration de conteneurs)
- VMWare Tanzu (Qui s’intégrera parfaitement si vous possédez déjà des plateformes de virtualisation VMWare.)
Cas d’usage
Ces installations sont destinées aux organisations qui souhaitent une plateforme Kubernetes complète et robuste avec l’ensemble des composants nécessaires à la plateforme mais aussi des fonctionnalités supplémentaires qui n’existent pas nativement dans Kubernetes.
Avantages
- Garantie de compatibilité entre tous les composants du cluster Kubernetes
- Mise à jour et opérations facilitées
- Support disponible pour certaines solutions
- Déploiement possible sur de multiples environnements (on-premise, cloud privé, hybrid ou multi-cloud)
Inconvénients
- Certaines solutions peuvent représenter un budget conséquent
- Les fonctionnalités spécifiques non natives à Kubernetes peuvent pour certaines s’apparenter à du vendor lock-in
Kubernetes Vanilla
Description
C’est la solution la plus délicate à mettre en place, mais si vous souhaitez conserver le plus de flexibilité possible et le contrôle complet sur votre cluster, il est possible de la déployer par vous même avec l’outil officiel Kubeadm.
Tout comme les distributions proposées par les éditeurs, vous devrez disposer de vos propres serveurs, gérer leur système d’exploitation, ainsi que la configuration du réseau.
Enfin, vous devrez faire vos propres choix d’architecture et d’ingénierie pour l’équilibrage de charge, le stockage ou encore la supervision.
Cas d’usage
Cette méthode complexe d’installation est réservée aux organisations qui ont de gros besoins de personnalisation de leur plateforme. Elle demande également de solides compétences techniques internes à l’entreprise et des équipes opérationnelles capables d’intervenir à tout moment sur le cluster Kubernetes.
Avantages
- Personnalisation et maîtrise complète de la plateforme
- Optimisation des coûts d’infrastructure (dans le cas d’une installation on-premises)
- Solution open-source (pas de vendor lock-in)
- Déploiement possible sur de multiples environnements (on-premise, cloud privé, hybrid ou multi-cloud), que ce soit sur bare metal ou des infrastructures virtualisées
Inconvénients
- Nécessite une forte compétence technique et opérationnelle (notamment sur les choix d’architecture relatifs au réseau ou au stockage de données)
- Courbe d’apprentissage des équipes qui peut être douloureuse
- Les compétences sur Kubernetes et les technologies cloud-native sont rares et coûteuses
Les services Kubernetes managés
Si vous souhaitez vous décharger complètement de l’installation et simplifier la maintenance de votre cluster Kubernetes, vous pouvez opter pour un service managé opéré par un fournisseur d’infrastructure (un fournisseur Cloud ou un hébergeur spécialisé qui propose des services Kubernetes managés sur mesure).
Description
Les services managés Kubernetes sont entièrement gérés par le fournisseur d’infrastructure. Vous aurez accès au strict minimum concernant la configuration de votre cluster Kubernetes, mais tous les composants nécessaires à son bon fonctionnement seront opérés et supervisés par votre fournisseur.
Cependant, un point important à avoir à l’esprit : vos applications et les composants spécifiques de votre cluster devront tout de même être supervisés et opérés par vous-même ou par un prestataire infogéreur.
Les principaux acteurs cloud disposent de solutions Kubernetes managées robustes en fonctionnalités et éprouvées, comme par exemple :
- OVHcloud Managed Kubernetes Service
- Scaleway Kapsule
- Amazon Elastic Kubernetes Service (EKS)
- Google Kubernetes Engine (GKE)
- Microsoft Azure Kubernetes Service (AKS)
- …
Comme pour leurs autres services cloud, ces offres Kubernetes managées permettent notamment de bénéficier des capacités d’autoscaling et d’élasticité, avec l’ajout ou la suppression de worker nodes en fonction des besoins.
Il existe également des hébergeurs infogéreurs disposant de fortes expertises sur les technologies Cloud Native qui proposent des services Kubernetes managés directement par leurs équipes. Leurs solutions sont généralement moins industrialisées que celles des fournisseurs Cloud mais elles peuvent être adaptées sur mesure et optimisées en termes de performances et de coûts. Cette option est également intéressante si vous n’avez pas besoin de l’élasticité offerte par le cloud et si vous souhaitez vous en remettre à un seul acteur en charge de l’hébergement et de l’infogérance de l’ensemble de votre plateforme : aussi bien le service Kubernetes que les autres composants d’infrastructure (stockage, réseau, etc.) et vos applications métier qui tournent dessus.
Un point important à noter : Qu’ils soient proposés par les fournisseurs Cloud ou par ces hébergeurs spécialisés, ces services Kubernetes managés ont des implémentations techniques différentes et ils ne sont pas nécessairement identiques en termes de fonctionnalités. Le choix de tel ou tel fournisseur devra se faire de façon éclairée en fonction de vos contraintes techniques, organisationnelles et de vos besoins (coût, autoscaling, sécurité, etc.).
Cas d’usage
Ces services Kubernetes managés s’adressent aux organisations qui ne disposent pas d’une équipe technique conséquente pour opérer un cluster Kubernetes ou qui souhaitent la déléguer pour se concentrer sur le niveau applicatif / métier.
Pour les services Kubernetes managés des fournisseurs cloud, la mise à disposition des clusters étant extrêmement rapide, leur utilisation est également particulièrement intéressante à des fins de tests ou pour démarrer rapidement un projet.
Pour une approche plus sur mesure, on s’orientera plutôt vers les solutions Kubernetes managés proposées par les hébergeurs spécialisés.
Avantages
- Focus des équipes sur leur coeur de métier
- Disponibilité du service rapidement
- Opérations du cluster Kubernetes complètement déléguées (supervision, mise à jour, etc.)
- Autoscaling de votre cluster facilité car natif (sur la plupart des offres des fournisseurs cloud, moins souvent chez les hébergeurs qui proposent des services Kubernetes managés sur mesure)
- Intégration facilitée avec les autres services du fournisseur d’infrastructure (IAM, Load balancing, firewalling, stockage…)
Inconvénients
- Personnalisation de votre cluster Kubernetes limitée sur les services managés des Cloud providers (moins sur les hébergeurs qui proposent des services Kubernetes managés sur mesure)
- Les dernières versions de Kubernetes sont généralement disponibles tardivement et vous n’êtes généralement pas maître du calendrier des upgrades.
- Ne dispense pas de gérer vous-même le déploiement des autres composants annexes nécessaires à votre application (Gestion des logs, des métriques, intégration à vos outils de CI/CD, etc.)
- La gestion du réseau est peu flexible et souvent différente d’un fournisseur à l’autre
- Pour les services managés des fournisseurs Cloud, les coûts peuvent être élevés dans certains cas d’usage et peu maîtrisés comme pour les autres services cloud
Conclusions
Nous vous avons présenté un panorama des principales solutions et des choix qui s’offrent à vous pour passer à Kubernetes et y déployer vos plateformes métier. Quelle que soit la catégorie de solution Kubernetes que vous retiendrez, il faudra avoir à l’esprit les points suivants :
- Construire et déployer une plateforme Kubernetes reste une tâche complexe qui doit être préparée et bien pensée en amont pour s’adapter à vos besoins et à vos contraintes métier et organisationnelles ;
- Au-delà de la sélection du type de solution Kubernetes, il faudra faire face à des choix d’architecture et d’implémentation, pour assurer le bon fonctionnement de tous les composants infrastructure “pilotés” par Kubernetes (réseau, stockage, bases de données, logs, etc.) ou en terme de dimensionnement ;
Si vous rencontrez des difficultés ou si vous avez besoin de vous appuyer sur des équipes techniques opérationnelles spécialisées sur Kubernetes, n’hésitez pas à nous contacter chez Enix. Nous pouvons vous fournir une solution sur mesure quelle que soit votre stack d’infrastructure (bare metal, virtualisée, etc.) et votre environnement de déploiement (on-premise, cloud privé ou Public, multi-cloud ou hybrid-cloud). Nous sommes également spécialistes de l’opération de plateformes Cloud Native en 24/7.
Ne ratez pas nos prochains articles DevOps et Cloud Native! Suivez Enix sur Twitter!