Kubernetes est une plateforme d'orchestration de conteneurs opens source qui permet l'exploitation d'un framework de serveur web élastique pour les applications en cloud. Kubernetes peut prendre en charge l'externalisation de centres de données vers des fournisseurs de services de cloud public ou peut être utilisé pour l'hébergement web à l'échelle. Les sites Web et les applications mobiles comportant un code personnalisé complexe peuvent être déployés à l'aide de Kubernetes sur du matériel de base afin de réduire les coûts de mise à disposition des serveurs Web auprès des hôtes du cloud public et d'optimiser les processus de développement logiciel.
La proportion de développeurs impliqués dans l'architecture sans serveur a chuté de 27 % à 24 %, selon l'enquête. L'informatique sans serveur implique l'allocation dynamique de cycles de calcul via des services tels que AWS Lambda. Selon le rapport, cette tendance à la baisse pourrait être due au manque de flexibilité des solutions sans serveur, les entreprises ayant peur de s'enfermer dans des fournisseurs spécifiques. AWS Lambda reste la sans serveur la plus populaire, utilisée par 53 % des développeurs. Selon une étude de Red Hat, l'attrait des développeurs pour les conteneurs et Kubernetes est principalement motivé par l'évolution de leur carrière.
Caractéristiques de Kubernetes
Kubernetes offre la possibilité d'automatiser le provisionnement des serveurs web en fonction du niveau de trafic web en production. Le matériel des serveurs Web peut être situé dans différents centres de données, sur différents matériels, ou par l'intermédiaire de différents fournisseurs d'hébergement. Kubernetes met à l'échelle les serveurs Web en fonction de la demande des applications logicielles, puis dégrade les instances de serveurs Web pendant les temps d'arrêt. Kubernetes dispose également de capacités avancées d'équilibrage de charge pour l'acheminement du trafic web vers les serveurs web en exploitation.
Architecture de Kubernetes et fonctionnement
Kubernetes a évolué à partir du code que Google utilisait pour gérer ses centres de données à l'échelle avec la plateforme « Borg ». AWS a présenté au public les cadres de serveurs web élastiques avec le lancement de la plateforme EC2. Kubernetes permet aux entreprises d'orchestrer des conteneurs comme EC2 mais en utilisant un code open source. Google, AWS, Azure et les autres grands hébergeurs de nuages publics offrent tous une prise en charge de Kubernetes pour l'orchestration de serveurs web en nuage. Les clients peuvent utiliser Kubernetes pour l'externalisation complète des centres de données, les applications web/mobiles, le support SaaS, l'hébergement web en nuage ou le calcul haute performance.
Terminologie de Kubernetes
Kubernetes (souvent abrégé en "K8s" fait partie de la Cloud Native Computing Foundation, qui soutient le développement de normes de mise en réseau partagées dans les logiciels de gestion de centres de données en cloud. Docker est la norme de virtualisation de conteneurs la plus populaire utilisée par Kubernetes. Docker offre des outils intégrés de développement du cycle de vie des logiciels pour les équipes de programmeurs. RancherOS, CoreOS et Alpine Linux sont des systèmes d'exploitation populaires spécifiquement conçus pour l'utilisation de conteneurs. La virtualisation des conteneurs est différente des outils VM ou VPS utilisant des hyperviseurs et nécessite généralement une empreinte de système d'exploitation plus petite en production.
Où les utilisateurs de Kubernetes exécutent-ils leur code ?
Avantages de Kubernetes
Le principal avantage de Kubernetes est la possibilité d'exploiter une plateforme de serveurs Web automatisée et élastique en production sans être lié à AWS par le service EC2. Kubernetes fonctionne sur la plupart des services d'hébergement en cloud public. Kubernetes permet l'externalisation complète du centre de données d'une entreprise. Kubernetes peut également être utilisé pour faire évoluer les applications web et mobiles en production vers les plus hauts niveaux de trafic web. Il permet à n'importe quelle entreprise d'exploiter son code logiciel au même niveau d'évolutivité que les plus grandes entreprises du monde.
Orchestration de conteneurs
L'orchestration de conteneurs est la gestion de serveurs web individuels fonctionnant dans des conteneurs par le biais de partitions virtuelles sur le matériel du centre de données. L'orchestration de conteneurs est un moyen de maintenir le cadre élastique des serveurs Web dans un centre de données sur une base automatisée en production. Les administrateurs peuvent établir des ressources qui peuvent être automatiquement démarrées si le trafic web augmente au-delà de la capacité d'un seul serveur. Pour les applications SaaS, cela peut permettre de prendre en charge des millions d'utilisateurs simultanés.
Kubernetes et Docker
Kubernetes est une plateforme d'orchestration de conteneurs à code source ouvert. Docker est la principale norme de virtualisation de conteneurs utilisée avec Kubernetes. Les autres systèmes d'orchestration de serveurs web élastiques sont Docker Swarm, CoreOS Tectonic et Mesosphere. Intel dispose également d'une norme de conteneur concurrente avec Kata, et il existe plusieurs versions de conteneurs Linux. Docker détient la plus grande part du marché de la virtualisation de conteneurs pour les produits logiciels. Docker est une société de développement de logiciels spécialisée dans la virtualisation de conteneurs, tandis que Kubernetes est un projet open source soutenu par une communauté de codeurs qui comprend des programmeurs professionnels de toutes les grandes entreprises informatiques.
Informatique sans serveur
L'nformatique sans serveur ou serverless est un modèle de développement cloud-native qui permet aux développeurs de créer et d'exécuter des applications sans avoir à gérer des serveurs. Ce modèle nécessite quand même des serveurs, mais leur gestion est dissociée du développement des applications. Un fournisseur de cloud se charge du travail de routine : il approvisionne l'infrastructure de serveurs, assure son bon fonctionnement et la met à l'échelle. Les développeurs n'ont alors plus qu'à mettre en paquet leur code dans des conteneurs pour déployer les applications.
Une fois que les applications sans serveur sont déployées, elles répondent à la demande et se mettent à l'échelle automatiquement en cas de besoin. En général, les offres sans serveur des fournisseurs de cloud public sont facturées à la demande, sur la base d'un modèle d'exécution orienté événements. Par conséquent, lorsqu'une fonction sans serveur est inactive, elle ne coûte rien.
Architecture de serverless et fonctionnement
L'informatique sans serveur se distingue des autres modèles de cloud computing, car le fournisseur de cloud est non seulement responsable de la gestion de l'infrastructure cloud, mais aussi de la mise à l'échelle des applications. Les applications sans serveur sont déployées dans des conteneurs qui démarrent automatiquement sur simple demande.
Dans un modèle standard de cloud computing IaaS (Infrastructure-as-a-Service), les utilisateurs achètent à l'avance des unités de capacité. Ainsi, ils paient un fournisseur de cloud public pour des composants de serveur actifs en permanence pour l'exécution de leurs applications. Il incombe à l'utilisateur d'augmenter la capacité du serveur pendant les périodes de forte demande et de la réduire lorsque cette capacité n'est plus nécessaire. L'infrastructure cloud reste active même lorsque l'application n'est pas utilisée.
Avec une architecture sans serveur, en revanche, les applications ne sont lancées qu'en cas de besoin. Lorsqu'un événement déclenche l'exécution d'un code d'application, le fournisseur de cloud public alloue des ressources pour ce code de manière dynamique. L'utilisateur cesse de payer une fois le code exécuté. En plus des avantages qu'il offre en matière de coûts et d'efficacité, le modèle sans serveur libère les développeurs des tâches courantes et subalternes associées à la mise à l'échelle des applications et à l'approvisionnement des serveurs.
L'informatique sans serveur permet de sous-traiter à un fournisseur de services cloud les tâches courantes telles que la gestion du système d'exploitation et du système de fichiers, l'application des correctifs de sécurité, l'équilibrage de la charge, la gestion de la capacité, la mise à l'échelle, la journalisation et la surveillance.
Il est également possible de créer une application entièrement serverless ou une application qui intègre des composants de type microservices partiellement sans serveur et partiellement traditionnels.
Dans l'ensemble, l'utilisation des technologies natives du cloud par les développeurs back-end a diminué en Amérique du Nord, en Europe de l'Est et au Moyen-Orient/Afrique, selon le rapport CNCF. Ce rapport indique qu'il y a 6,8 millions de développeurs cloud-native dans le monde, soit une augmentation de 0,3 million, dont 4,6 millions utilisent des outils d'orchestration de conteneurs et 4 millions des plateformes serverless, avec un chevauchement de 1,8 million de développeurs utilisant les deux.
Les précédents rapports CNCF de SlashData, de mai 2020 et août 2020, dénombraient respectivement 4,7 millions et 6,5 millions de développeurs cloud-native. Dans le même temps, la proportion de développeurs back-end utilisant des technologies cloud-natives a diminué de trois points de pourcentage, à 41 %, en raison de la baisse de l'adoption de l'architecture serverless. La croissance de la population des développeurs "cloud-native" a été stimulée par une augmentation du nombre total de développeurs "back-end", qui est passé de 14,7 millions à 16,6 millions, indique le rapport. L'approche "cloud-native" est illustrée par des technologies telles que les microservices, l'infrastructure immuable et les API déclaratives.
L'état du développement « cloud native » au 1er trimestre 2021
Le rapport révèle que la différence entre l'utilisation des conteneurs et de Kubernetes n'est que de 5 % au sein des grandes entreprises qui affichent des taux d'adoption élevés pour les conteneurs (83 %) et Kubernetes (78 %). Les technologies qui présentent la plus grande différence entre l'utilisation des conteneurs et de Kubernetes parmi les développeurs travaillant dans de grandes entreprises sont les voitures autonomes, la biométrie pour la vérification d'identité, les applications blockchain autres que les cryptomonnaies et la 5G.
Source : CNCF
Et vous ?
Que pensez-vous de Kubernetes ?
Quel commentaire faites-vous de la baisse de l'adoption des serverless au profit de Kubernetes ?
Voir aussi :
L'attrait des développeurs pour les conteneurs et Kubernetes est principalement motivé par l'évolution de leur carrière, selon une étude de Red Hat
Les dépenses liées à la plateforme d'orchestration de containers Kubernetes sont difficilement maîtrisées, selon un nouveau rapport de la CNCF en collaboration avec a Fondation FinOps
Kubernetes 1.18 est disponible et apporte la prise en charge de ContainerD sous Windows, Canonical a déjà annoncé la prise en charge de cette version
La version 1.23 Kubernetes est annoncée avec la mise en réseau IPv4/IPv6 en double pile et Pod Security en version bêta