Que fait Kubernetes et quand faut-il l'utiliser?
Kubernetes est un outil qui gère toutes les pièces mobiles derrière l'exécution d'applications en cours d'exécution dans des conteneurs tels que Docker. Cela facilite la mise à l'échelle de votre application, car l'infrastructure de votre serveur est séparée du code qui y est exécuté.
Sommaire
Que fait Kubernetes?
Kubernetes est souvent mentionné aux côtés de Docker, mais chacun accomplit des tâches différentes. Docker regroupe les applications et toutes leurs dépendances dans des fichiers uniques, appelés images de conteneur, qui peuvent être exécutés sur un serveur sans aucune configuration manuelle. Le moteur Docker est similaire à une machine virtuelle, mais il est beaucoup plus mince et plus performant, conçu simplement pour exécuter une seule application dans un environnement isolé.
Kubernetes est un moteur d'orchestration et fournit une plate-forme pour exécuter des images Docker sur. Il prend en charge l'utilisation d'images Docker, car il s'agit de loin du format de conteneur le plus populaire. Les conteneurs permettent à votre code d'être distribué très facilement sans se soucier de savoir si le serveur est configuré pour exécuter le code correctement.
Un serveur Kubernetes maître gérera un cluster de nœuds de calcul. Ces nœuds de calcul peuvent exécuter n'importe quel nombre de conteneurs, qui sont intégrés dans les pods Kubernetes. Le serveur maître gère le déploiement des pods sur les nœuds de travail et tente de maintenir une configuration définie. Si votre application rencontre plus de trafic, Kubernetes peut provisionner plus de ressources, et si l'un de vos serveurs rencontre des problèmes, Kubernetes peut déplacer les pods de ce serveur vers le reste du réseau pendant que vous résolvez le problème.
Mais si Kubernetes fournit de nombreuses fonctionnalités d'un système de plate-forme en tant que service (PaaS), il ne fournit en fait aucun matériel. Kubernetes est un logiciel pur et open source. Les systèmes PaaS comme AWS EKS s'appuient sur Kubernetes et, dans de nombreux cas, lui offrent la possibilité de provisionner plus de ressources pour lui-même (mise à l'échelle automatique).
Pourquoi utiliser Kubernetes?
Kubernetes apporte tous les avantages de Docker et de la conteneurisation en général. Les conteneurs aident à garder votre code organisé et géré, avec toutes les dépendances au même endroit. Votre code fonctionnera de la même manière dans un environnement de développement et de test qu'en production, sans surprise.
Les images Docker exécutées sur la plate-forme Kubernetes sont distinctes de la plate-forme elle-même et n'ont aucune idée qu'elles sont exécutées dans des pods Kubernetes. Ce découplage des applications de l'infrastructure rend Kubernetes extrêmement puissant en remplacement de votre cycle de déploiement existant. Vous n'aurez pas à vous soucier de savoir si votre code fonctionnera correctement sur vos serveurs.
Un cycle de développement rapide met plus de pression sur votre équipe Ops pour qu'elle se soucie d'exécuter réellement votre code. Si vous rencontrez des problèmes pour gérer l'installation et la configuration de votre application sur vos serveurs chaque fois que votre code doit être mis à jour, Kubernetes peut le faire beaucoup plus rapidement.
Et si vous n'aimez vraiment pas la configuration et la gestion de serveurs, un service Kubernetes géré comme AWS EKS peut atténuer ce problème et rendre votre application «sans serveur».
Comment commencer?
Kubernetes est indépendant du service, vous pouvez donc le configurer vous-même sur vos propres serveurs si vous le souhaitez. Cependant, Kubernetes est assez compliqué, il existe donc de nombreuses solutions clé en main des principaux fournisseurs de cloud qui utilisent leurs ressources pour alimenter vos nœuds de travail. Ils seront tous compatibles Kubernetes, vous pourrez donc basculer entre eux avec un minimum de problèmes.
Si vous souhaitez le configurer vous-même, vous pouvez le faire avec kubeadm
boîte à outils. Vous aurez besoin d'une machine maître pour fonctionner kubeadm
on, qui contrôlera une ou plusieurs machines de travail en cours d'exécution kubelet
. La machine maître gère le déploiement du conteneur sur les machines de travail. Vous pouvez lire leur guide de démarrage dans la documentation Kubernetes pour plus d'informations, mais soyez prêt pour une nuit de configuration.
AWS EKS est la solution d'Amazon, qui peut exécuter des applications Kubernetes sur plusieurs zones de disponibilité AWS. EKS ne nécessite pas du tout beaucoup de configuration; tout ce que vous avez à faire est de provisionner de nouveaux nœuds. Vous payez 0,20 USD par heure (150 USD par mois) pour chaque cluster en cours d'exécution, ainsi que pour les ressources EC2 et EBS consommées par vos nœuds de calcul.
Si vous n'avez pas besoin d'un cluster Kubernetes complet, mais que vous souhaitez quand même exécuter des applications en conteneur, vous pouvez utiliser Elastic Container Service (ECS) d'AWS. ECS exécute des conteneurs Docker et possède son propre système de mise à l'échelle.
Le service Azure Kubernetes (AKS) de Microsoft est un service Kubernetes géré qui s'intègre bien avec un pipeline Azure, ce qui facilite le passage du code dans le contrôle de code source aux conteneurs déployés dans votre cluster Kubernetes.
Google est le créateur original de Kubernetes, donc naturellement, ils offrent un service Kubernetes géré via Google Cloud Platform.